Как очистить кэш WebView в Cocoa?


Как очистить/очистить кэш WebView в приложении Cocoa?

В частности, я хотел бы очистить кэш локальной таблицы стилей.

Я безуспешно пытался сделать следующее:

// Tried this before loadRequest
[[NSURLCache sharedURLCache] removeAllCachedResponses];

// Also tried this before and after loadRequest
[webView.mainFrame reloadFromOrigin];

Даже замена WebView на новый по-прежнему использует кэшированную таблицу стилей.

2 10

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];