删除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]; 

希望这个帮助。