ios - 清除本地文件的 webviews 缓存

标签 ios uiwebview nsurlcache

我发现了一些类似的帖子,但它们似乎对我正在做的事情没有任何影响。我有一个 UIWebView 用于在我的包中显示本地内容。具体来说,我正在显示一个 docx 文件。用户应该很少看这个文档,而且我的应用程序内存很紧,所以我想做的是防止 UIWebView 缓存文档。另一个可行的选择是在用户离开 View 时清除缓存。每次用户进入 View 时都必须从头开始加载它,我完全可以。

我像这样加载文档:

NSString * path = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"Intro text"] ofType:@"docx"];
NSURL * url = [NSURL fileURLWithPath:path];
request = [NSURLRequest requestWithURL:url];

doc_view_rect = CGRectMake(5,105,self.view.frame.size.width,self.view.frame.size.height);
doc_viewer = [[UIWebView alloc] initWithFrame:doc_view_rect];
[doc_viewer loadRequest:request];

在我尝试停止缓存的过程中:

[[NSURLCache sharedURLCache] setMemoryCapacity:0];
[[NSURLCache sharedURLCache] setDiskCapacity:0];

还有:

NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil];
[NSURLCache setSharedURLCache:sharedCache];
[sharedCache release];
sharedCache = nil;

还有:

if(request) {
    [[NSURLCache sharedURLCache] removeCachedResponseForRequest:request];
}
[[NSURLCache sharedURLCache] removeAllCachedResponses];

我也尝试设置 web-views 缓存策略,但这似乎只是消耗内存,因为当我释放 webview 时,仍然有内存留下。当我重新进入并重新分配时,它并没有使用相同的内存。

我认为这不是正确的方向。这些都被标记为阻止网页缓存的方法,但它们似乎对本地文件没有影响。 我真的不知道还有什么可以和这个一起去的。如果有人知道如何强制清除缓存,或者一开始就阻止缓存,我将不胜感激。

最佳答案

WebKit 除了标准的 NSURLCache 之外还维护自己的缓存。你无法控制它。

实际上,您必须确保代码在低内存警告下表现良好,并相信 UIWebView 也会这样做。

关于ios - 清除本地文件的 webviews 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6542114/

相关文章:

ios - 来自数组的 UIImage 幻灯片

ios - Swift 4 : UITableViewCell does will not display data upon initial load, 但会在第二次加载时加载

ios - 如何在文本字段中执行多个自动完成?

ios - 如何从 REST API search.list 结果中过滤掉 YouTube 的内容屏蔽视频

iOS:在文档应用程序中下载并保存 PDF 文件

ios - 在 UIWebView 中访问公共(public) Facebook 个人资料(使用 access_token)

iOS:AFNetworking 的 AFHTTPSessionManager 缓存策略

ios - 当传输编码的响应 header 值被分块时,NSURLCache 不起作用

objective-c - URLCache - iPhone SDK

ios - 苹果登录 : How to use it for custom server endpoint authentication?