删除UIWebView的内部caching
我在UIWebView
显示一个Web应用程序,有时页面的内容会改变。 内容更改后,应用程序清除caching。 但是,当我去我以前访问过的页面UIWebView
不发送HTTP GET请求,但从caching加载,即使我已经像这样禁用caching:
[[NSURLCache sharedURLCache] removeAllCachedResponses]; [[NSURLCache sharedURLCache] setDiskCapacity:0]; [[NSURLCache sharedURLCache] setMemoryCapacity:0];
最初我正在用cachePolicy cachePolicy:NSURLRequestReturnCacheDataElseLoad
加载一个请求cachePolicy:NSURLRequestReturnCacheDataElseLoad
。
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:myURLString] cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:10.0]];
UIWebView
有一些内部caching。 已经访问过的页面将从这个内部caching加载,而不是通过NSURLCache
,也没有请求发送。
有没有办法清除UIWebView
的内部caching? 我甚至重新创buildUIWebView
但caching仍然存在。
看来这里发生的是重新加载实际的HTML文件,但不一定会重新加载该页面内的资源。
我见过的一个可能的解决scheme是将追加参数追加到URL的末尾。 例如:
NSString *testURL = [NSString stringWithFormat:@"%@?t=%@", url, randQuery]; [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:testURL] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:10.0]];
在那里你生成一个随机的字母数字string作为你的randQuery查询参数,或者保持一个持久的计数并且只是数了起来。
这应该强制UIWebView从远程资源加载。
我有同样的问题,并将HTTPSHouldHandleCookies属性设置为没有解决我的问题。
例如:
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:strurl]]; [request setHTTPShouldHandleCookies:NO]; [webView loadRequest: request];
希望这个帮助。