Javascript でページをリロードする必要があります。window.location.reload
その目的で使用しています。現在、Chrome で奇妙な動作が見られます。Chrome は常にサーバーに接続し、ドキュメントが変更されたかどうかを尋ねます。a304 Not Modified
が返されますが、回避したいサーバーへのラウンドトリップがまだあります。
また、クロムにキャッシュを使用するように明示的に使用しようとしましwindow.location.reload(false)
たが、成功しませんでした。リロードした URL にアクティブなハッシュ (#) フラグメントがあるわけではありません。
リソースの応答ヘッダーは次のとおりです。
HTTP/1.1 304 Not Modified
Server: nginx/1.2.2
Date: Sat, 01 Jun 2013 13:19:56 GMT
Last-Modified: Sat, 01 Jun 2013 13:04:55 GMT
Connection: keep-alive
Expires: Sun, 02 Jun 2013 13:19:56 GMT
Cache-Control: max-age=86400
Access-Control-Allow-Origin: *
したがって、Cache-Control
とExpires
ヘッダーの両方が設定され、24 時間以内にリソースを更新しないように chrome に指示する必要があります。
F5/CMD+R を使用してページをリロードしませんが、代わりにリンクをクリックすると、変更さwindow.location.hash
れてから呼び出される JavaScript イベントが含まれますwindow.location.reload(false)
。しかし、Chrome はCache-Control: max-age=0
リクエストのヘッダーを設定し続けます。これは望ましくありません。Chrome は内部キャッシュを使用し、サーバーには何も送信しないでください。
Firefox を使用した同じコードで問題はありません。FF はサーバーにまったく接続せずにキャッシュされたバージョンを使用します。
どうすればこれを修正できますか?
編集: これは、自分で試すために使用できる簡単な例です: http://webspace.markdown.io/reloadtest.html
編集:開発者ツールを閉じて、サーバー上でヘッダーを確認しtcpdump -s 1024 -l -A dst port 80
ます。また、開発者ツールで「ブラウザのキャッシュを無効にする」のチェックを外しました。
編集 2: タブを閉じて URL を新しいものに入力すると、Chrome はキャッシュを正しく使用することに注意してください。リンクをクリックするだけです (window.location.reload
影響を受ける.