有时候,针对一些页面我们需要修改WAP页面的JS文件,但修改完成之后并没有更新,还是原先的页面。UIWebView会神奇的自动缓存之前的JS文件,这就导致了更改过webview的某些功能之后,我们APP端再打开这个webView页面,发现页面的这些功能根本没有任何的变化。
首先我们想到的是忽略request的缓存。
wap.request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:15];
使用NSURLRequestReloadIgnoringLocalCacheData
缓存策略,但并不管用。还是需要卸载重装,这这种方式很浪费时间。或者更换一个URL就可以避免这个缓存问题,说到这更换一个URL就可以,那我们是不是删除掉针对这个URL的缓存就可以了呢?找找看 发现NSURLCache
里有这么一个方法哎!
- (void)removeAllCachedResponses;
试验一下,发现这个方法可以啊。不错,但这个方法貌似把所有的缓存都删除了啊,那我如果有一些页面想保留怎么办啊,其实NSURLCache
离还有其他的方法:
- (void)removeCachedResponseForRequest:(NSURLRequest *)request;
在你认为可能会修改JS文件的页面时,在-dealloc方法里使用即可。
- (void)dealloc {
[[NSURLCache sharedURLCache] removeCachedResponseForRequest:self.request];
}
网友评论