iOS UIWebview缓存机制

iOS UIWebview cache mechanism

我有一个大量使用 UIWebview 的应用程序,我的大部分应用程序都是网络服务器中的 HTML 文件。最近发生了一些奇怪的事情,在使用一段时间后,UIWebview 停止从网络加载 HTML(网络服务器通过查看日志没有收到任何 HTTP 请求)。 UIWebview 仍然可以看到 HTML,我怀疑 UIWebview 是否正在从本地 cache.

加载 HTML 文件

但是在加载 HTML 文件后,UIWebview 没有 运行 那个 HTML 文件中的任何 javascript,这将发出许多 AJAX请求。

需要手动卸载App重新安装才能正常使用,杀掉App重启也无济于事。

我想知道这与UIWebview缓存有关,因为每次出现时,应用程序都会使用一段时间(数周)。

有没有人遇到过同样的问题?如何解决?

这是随机发生的,很难重现。

你为什么不为请求设置缓存策略。我认为这样你就可以选择何时从缓存中加载以及何时重新加载它。类似于下面的代码可能会有所帮助。

let url = NSURL (string: yourUrlString);
var cachePolicy: NSURLRequestCachePolicy?
//check if connected to network
if(conected to network){
    cachePolicy = .ReloadIgnoringLocalCacheData
}
else{
    cachePolicy = .ReturnCacheDataDontLoad
}
let request = NSURLRequest(URL: url!, cachePolicy: cachePolicy, timeoutInterval: 15.0)
yourwebView.loadRequest(request)