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

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

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

Я пробовал следующее безрезультатно:

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

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

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

Ответ 1

Другие предлагаемые решения не работали для локальной таблицы стилей (хотя они должны работать для удаленных ресурсов).

Мне удалось решить эту проблему с помощью 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;
}

Забавные вещи.

Ответ 2

Посмотрите Ссылка на класс 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];