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