我在 UIWebView
中显示网络应用程序,有时页面内容会发生变化。内容更改后,应用程序会清除缓存。但是,当我转到我之前访问过的页面时,UIWebView
不会发送 HTTP GET 请求,而是从缓存中加载,即使我已经像这样禁用了缓存:
[[NSURLCache sharedURLCache] removeAllCachedResponses];
[[NSURLCache sharedURLCache] setDiskCapacity:0];
[[NSURLCache sharedURLCache] setMemoryCapacity:0];
最初我使用 cachePolicy cachePolicy:NSURLRequestReturnCacheDataElseLoad
加载请求。
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:myURLString] cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:10.0]];
UIWebView
有某种内部缓存。已经访问过的页面将从该内部缓存中加载,而不是通过 NSURLCache
加载,并且也不会发送任何请求。
有没有办法清除UIWebView
的内部缓存?我什至重新创建了 UIWebView
但缓存仍然存在。
最佳答案
看起来这里发生的是它重新加载实际的 HTML 文件,但不一定重新加载该页面中的资源。
我见过的一种可能的解决方案是将查询参数附加到 URL 的末尾。例如:
NSString *testURL = [NSString stringWithFormat:@"%@?t=%@", url, randQuery];
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:testURL] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:10.0]];
生成 random alphanumeric string 的位置作为你的 randQuery 查询参数,或者保持一个持久的计数并只是计数。
这应该强制 UIWebView 从远程资源加载。
关于ios - 移除 UIWebView 的内部缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19113682/