Ios 清除本地文件的WebView缓存

Ios 清除本地文件的WebView缓存,ios,uiwebview,nsurlcache,Ios,Uiwebview,Nsurlcache,我发现了一些类似的帖子,但它们似乎对我正在做的事情没有任何影响。我有一个UIWebView,用于显示捆绑包中的本地内容。具体来说,我正在显示一个docx文件。用户应该很少查看此文档,而且我的应用程序内存紧张,因此我要做的是防止UIWebView缓存文档。另一个可行的选择是在用户离开视图时清除缓存。每次用户进入视图时,我都可以从头开始加载它 我按如下方式加载文档: NSString * path = [[NSBundle mainBundle] pathForResource:[NSString

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

我按如下方式加载文档:

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];
以及:

以及:

我还尝试设置web视图缓存策略,但这似乎消耗了内存,因为当我发布web视图时,仍然留下了内存。当我重新输入并重新定位时,它没有使用相同的内存

但我认为这不是正确的方向。这些都被标记为阻止网页缓存的方法,但它们似乎对本地文件没有影响。
我真的不知道还有什么地方可以配这个。如果有人知道如何强制清除缓存或首先阻止缓存,我将非常感谢您的帮助。

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


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

我不确定您的问题是加载缓存的数据,还是缓存了上次请求的URL,因此不会触发加载新文档。对我来说似乎就是这样,所以我用了这个非常肮脏的伎俩:

_urlRequestCacheBust = [NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"] cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10];
对于每个新的web请求:

- (void)webViewLoadURL:(NSURL *)url
{
    [[_webView mainFrame] loadRequest:_urlRequestCacheBust];

    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10];
    [[_webView mainFrame] loadRequest:urlRequest];
}
*战栗*

_urlRequestCacheBust = [NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"] cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10];
- (void)webViewLoadURL:(NSURL *)url
{
    [[_webView mainFrame] loadRequest:_urlRequestCacheBust];

    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10];
    [[_webView mainFrame] loadRequest:urlRequest];
}