9

如何清除/刷新 Cocoa 应用程序中的WebView缓存?

特别是,我想清除本地样式表的缓存。

我尝试了以下方法无济于事:

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

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

即使用新的替换WebView它仍然使用缓存的样式表。

4

2 回答 2

10

其他建议的解决方案不适用于本地样式表(尽管它们应该适用于远程资源)。

我终于设法通过显式设置缓存策略通过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;
}

好玩的东西。

于 2012-08-22T13:04:46.683 回答
0

看看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];
于 2012-08-22T12:25:56.170 回答