5

カスタムWebサーバーを使用してWebベースのアプリケーションを作成していますが、Webkitブラウザーが画像、スタイルシート、およびJavaScriptをキャッシュしないという問題があります。

Cache-Control:max-ageとLast-Modifiedの間の関係まで追跡しました。両方が指定されている場合、webkitはmax-ageヘッダーを無視し、リソースが使用されるたびにファイルが変更されているかどうかを確認しているようです。サイトの最初のページにiframeがあり、1秒以内にスタイルシートなどが2回要求されます。

Last-Modifiedを削除すると、ファイルは翌日まで再リクエストされません。ただし、翌日のリクエストはif-modified-sinceリクエストではなくなり、サーバーは304ヘッダーだけでなくすべてを再送信する必要があります。

IE9、Firefox 10.0、およびOpera 11.61では、ブラウザーは正しくキャッシュし、画像を再要求せず、Cache-Control:no-cacheヘッダー属性を持つHTMLのみを再要求します。

Chrome 16.0.912.77mおよびSafari5.1.2(7534.52.7)では、すべてのページのすべての画像に対して、毎回条件付きリクエストが行われます。サーバーは304ヘッダーで応答します。これもmax-age属性を含みますが、どちらも要求を続けます。

応答とともに送信するHTTPヘッダーの例は次のとおりです。

HTTP/1.1 200 OK
Date: Mon, 06 Feb 2012 15:12:12 GMT
Cache-Control: max-age=86400
Content-length: 708
Content-type: image/gif
Last-Modified: Fri, 6 Jan 2012 14:39:07 GMT
Server: Webspring

これらのブラウザがすべて私のキャッシュヘッダーを尊重するようにする方法について誰かが提案を持っていますか?

すべてのブラウザーはWin7Prox64で実行されており、上記のHTTPヘッダーはFiddlerの生の出力であるため、ブラウザーが受信しているのはまさにそれです。

注:これがヘッダーフィールド間の相互作用であることに気付く前に、前の質問をしました。前の質問は正確ではなくなったため、削除しました。

ありがとう

モグ

4

1 に答える 1

0

私は同じ問題を抱えていましたが、Webkit 全体ではありませんでした。シークレット モードの Safari と Chrome は問題なく動作します。すべての拡張機能を無効にしてみましたが、違いはありませんでしたが、キャッシュ全体をクリアすると修正されたようです。

私の推測では、初めてサイトに Cache-Control ヘッダーを追加すると、Chrome はキャッシュ内の古いヘッダーを正しく上書きしません。これにより、既存のユーザーを新しいキャッシュ設定に適切に移行する際に問題が発生します。

于 2012-07-16T23:18:39.403 に答える