14

で Web アプリを表示していUIWebViewますが、ページのコンテンツが変更されることがあります。コンテンツが変更された後、アプリはキャッシュをクリアします。しかし、以前にアクセスしたページに移動するとUIWebView、HTTP GET 要求は送信されず、次のようにキャッシュを無効にしてもキャッシュから読み込まれます。

[[NSURLCache sharedURLCache] removeAllCachedResponses];
[[NSURLCache sharedURLCache] setDiskCapacity:0];
[[NSURLCache sharedURLCache] setMemoryCapacity:0];

最初に、リクエストを cachePolicy でロードしていcachePolicy:NSURLRequestReturnCacheDataElseLoadます。

[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:myURLString] cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:10.0]];

UIWebViewある種の内部キャッシュがあります。既にアクセスしたページは、通過する代わりにこの内部キャッシュから読み込まれ、NSURLCacheリクエストも送信されません。

の内部キャッシュをクリアする方法はありますUIWebViewか? 私も再作成していますUIWebViewが、キャッシュはまだそこにあります。

4

2 に答える 2

22

ここで起こっていることは、実際の HTML ファイルをリロードすることですが、必ずしもそのページ内のリソースをリロードするとは限りません。

私が見た可能な解決策は、URL の末尾にクエリ パラメータを追加することです。例えば:

NSString *testURL = [NSString stringWithFormat:@"%@?t=%@", url, randQuery];
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:testURL] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:10.0]];

randQuery クエリ パラメータとしてランダムな英数字の文字列を生成するか、永続的なカウントを保持してカウントアップするだけです。

これにより、UIWebView がリモート リソースから強制的に読み込まれます。

于 2013-10-13T19:17:37.410 に答える
7

同じ問題があり、 HTTPShouldHandleCookies プロパティを NO に設定すると問題が解決しました。

例えば:

NSMutableURLRequest  *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:strurl]];

[request setHTTPShouldHandleCookies:NO];

[webView loadRequest: request];

この助けを願っています。

于 2013-11-14T18:22:26.787 に答える