私はこの問題を抱えていUIWebView
ます:
顧客はUIWebView
、ページをリロードしたときにサーバー上で更新されたコンテンツがデバイスに表示されなかったため、当社のキャッシュ ポリシーを確認するよう求めました。
ここで、 にNSURLRequest
渡している には が含まれていることがわかりUIWebView
ましcachePolicy
たNSURLRequestReturnCacheDataElseLoad
。これを正しく理解していれば、最初のリクエストのみがサーバーからロードされ、後続のリクエストはキャッシュからロードされます。
NSURLRequestUseProtocolCachePolicy
次に、NSURLRequest.h
ヘッダーで興味深いものNSURLRequestReloadRevalidatingCacheData
が「実装されていない」ことがわかったので、 cachePolicy を に変更しました。
以前のポリシーにロールバックするまでは、すべてがうまく機能しているように見えましたが、Charles がUIWebView
画面に消えてから再表示されるたびに、サーバーで新しい要求が行われ、結果のページに簡単な変更を加えることもできました。デバイスの変更を参照してください。
サーバーから返されるヘッダーは次のとおりです。
Date Tue, 13 Aug 2013 09:46:46 GMT
Content-Encoding gzip
Server Apache
ETag "791e833a504a3a0f11fc74605ea244d2"
Vary Accept-Encoding
Content-Type text/html; charset=utf-8
Cache-Control public, max-age=60
Accept-Ranges bytes
Content-Length 2685
Expires Tue, 13 Aug 2013 09:47:46 GMT
8 月 13 日 11:46 GMT+2 (ベルリン) に行われたリクエストの場合
だから私にはヘッダーはうまく見えますが、それでもUIWebView
毎回コンテンツをリロードしようとします。
webView:shouldStartLoadWithRequest:navigationType:
デリゲート メソッドも調べたところcachePolicy
、 のrequest
が常に 1 ( NSURLRequestReloadIgnoringLocalCacheData
) に設定されていることがわかりました。
これはどのように可能ですか?また、顧客が問題について不平を言った可能性もあります(彼は私にスクリーンショットを送ってくれたので、これは発明ではありません)
ご協力ありがとうございました