0

私が気づいたいくつかの奇妙なブラウザの動作を理解しようとしています。私は(実験のために)ページがキャッシュされると思われるヘッダーを提供するページをいくつか持っています:

Cache-Control:max-age=3600
Content-Length:66
Content-Type:text/html
Date:Thu, 06 Dec 2012 13:08:01 GMT
Expires:Fri, 07 Dec 2012 14:19:41 GMT
Server:Apache-Coyote/1.1

予想どおり、他のページのいずれかのリンクを介してこれらのページのいずれかに移動すると、ブラウザーはキャッシュから直接ページを提供し、サーバーへの呼び出しはありません。ただし、ブラウザーの [更新] ボタンを押してこれらのページの 1 つを再読み込みすると、キャッシュ関連のヘッダーが無視されているように見え、要求がサーバーに送信されます。

Chrome と Firefox の最新バージョン、および IE9 でこの動作を確認しました。

HTTP標準は、ユーザーの更新によって開始されたリクエストのこの「特別な扱い」を義務付けていますか(そうであれば、Google Chromeの「ハードリロード(Ctrl + Shitf + F5)」の目的は何ですか)、または他の説明はありますか?

4

1 に答える 1

2

通常、ページをリクエストすると、ブラウザは、リクエストしたドキュメントのヘッダーのみを要求するHEADリクエストをサーバーに送信する必要があります。POSTまたはGETリクエスト中に上記のヘッダーのみを設定した場合、ブラウザがドキュメントを期限切れと見なして再フェッチする理由が説明されます。

ただし、別の観点から見ると、更新機能を使用する主な理由はページを「更新」することであるため、ブラウザはキャッシュされたコピーを提供せず、要求されたとおりに実行することは理にかなっています=最新バージョンを取得する、なぜ他に更新を押すのですか?

一部のブラウザ(Chromeなど)は更新中にすべてのリソース(リンクされた.jsファイルなど)を更新しないことは確認できますが、更新したページは更新されます。

于 2012-12-06T13:31:39.020 に答える