Как очистить кэш WebView в Cocoa?
Как очистить/очистить кэш WebView в приложении Cocoa?
В частности, я хотел бы очистить кэш локальной таблицы стилей.
Я безуспешно пытался сделать следующее:
// Tried this before loadRequest
[[NSURLCache sharedURLCache] removeAllCachedResponses];
// Also tried this before and after loadRequest
[webView.mainFrame reloadFromOrigin];
Даже замена WebView
на новый по-прежнему использует кэшированную таблицу стилей.
2 ответа:
Другие предложенные решения не работают для локальной таблицы стилей (хотя они должны работать для удаленных ресурсов).
Мне наконец удалось решить эту проблему с помощью resourceLoadDelegate , явно задав политику кэша:
- (NSURLRequest *)webView:(WebView *)sender resource:(id)identifier willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse fromDataSource:(WebDataSource *)dataSource { request = [NSURLRequest requestWithURL:[request URL] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:[request timeoutInterval]]; return request; }
Забавная штука.
Взгляните на ссылку на класс NSURLCache .
- (id)initWithMemoryCapacity:(NSUInteger)memoryCapacity diskCapacity:(NSUInteger)diskCapacity diskPath:(NSString *)path //set memoryCapacity and diskCapacity to 0 bytes and diskPath to nil NSURLCache *Cache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil]; [NSURLCache setSharedURLCache:Cache];