3

NSURLRequestReloadIgnoringLocalCacheData として指定されたキャッシュ ポリシーを持つ UIWebView オブジェクトがあります。

これにより、ローカル キャッシュにあるオブジェクトはすべて無視され、Web からサイトの最新バージョンが取得されます。

ただし、サイトの最初の読み込み (トレースで 10 個のリソース、HTTP GET) の後、サイトの後続のすべての読み込みでは、リソースの小さなサブセット (トレースで 3 つのリソース、HTTP GET) のみを取得します。画像はすべて、ローカル ソースから読み込まれたように見えます。

私の sharedURLCache のメモリ使用量は 0 バイトで、ディスク使用量も 0 バイトであることを確認しました。プロセスが新たに開始されるたびに、サイトのフル バージョンが再度取得されます。これにより、これらのリソースはメモリ内キャッシュに格納されていると思われますが、前に述べたように、[[NSURLCache sharedURLCache] currentMemoryUsage] は 0 を返します。

また、リクエストに対してキャッシュされたレスポンスを明示的に削除しようとしましたが、これは効果がないようです。何を与える?

編集: さらに、各ロードの前に NSHTTPCookieStorage がクリアされ、その後のロードで 3 つではなく 4 つのリソースが取得されることが確認できます。変更に関係なく、キャッシュの問題は解決しません。

4

1 に答える 1

2

現在の時間間隔のタイムスタンプをクエリ文字列パラメータとしてURLに追加してみましたか?

http://www.myhost.com/page.html?timestamp=123456789.0

これが機能するかどうかはわかりません。キャッシュの実装方法によって異なりますが、試してみる価値があるかもしれません。少しハッキーですが、私はずっと前に、Flashアプレットを実行するときに、はるか遠くの銀河でこれを使用しました。私は今同じ問題を抱えています、そして私は使ってみました:

[[NSURLCache sharedURLCache] removeCachedResponseForRequest: request];

UIWebViewのロードが完了した後。

于 2010-07-26T21:07:27.960 に答える