3

私はこの問題を抱えていUIWebViewます:

顧客はUIWebView、ページをリロードしたときにサーバー上で更新されたコンテンツがデバイスに表示されなかったため、当社のキャッシュ ポリシーを確認するよう求めました。

ここで、 にNSURLRequest渡している には が含まれていることがわかりUIWebViewましcachePolicyNSURLRequestReturnCacheDataElseLoad。これを正しく理解していれば、最初のリクエストのみがサーバーからロードされ、後続のリクエストはキャッシュからロードされます。

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) に設定されていることがわかりました。

これはどのように可能ですか?また、顧客が問題について不平を言った可能性もあります(彼は私にスクリーンショットを送ってくれたので、これは発明ではありません)

ご協力ありがとうございました

4

1 に答える 1

0

最終的に私は手動でNSURLRequesta を使用して作成し、それで aNSURLRequestUseProtocolCachePolicyを開始しNSURLConnectionました。次に、接続の読み込みが完了したときに HTML 文字列を読み込みました。

于 2013-10-08T20:21:24.163 に答える