73

Cache-Controlに関連するクエリがいくつかあります。

静的html/js / images / cssファイルにCache-Controlを指定max-age=3600, must-revalidateし、HTTPヘッダーで最終変更ヘッダーを定義した場合:

  1. ブラウザ/プロキシキャッシュ(Squid / Akamaiなど)は、 max-ageが期限切れになる前に検証するために、オリジンサーバーまでずっと行きますか?または、max-ageが期限切れになるまで、キャッシュからコンテンツを提供しますか?
  2. max-ageの有効期限(つまり、キャッシュからの有効期限)の後、If-Modified-Sinceチェックがありますか、それともIf-Modified-Sinceチェックなしでコンテンツがオリジンサーバーから再ダウンロードされますか?
4

3 に答える 3

58

a)サーバーにこのヘッダーが含まれている場合:

Cache-Control "max-age=3600, must-revalidate"

クライアントキャッシュとプロキシキャッシュの両方に、コンテンツが古くなったら(3600秒より古い)、コンテンツを提供する前にオリジンサーバーで再検証する必要があることを伝えています。これはキャッシングシステムのデフォルトの動作であるはずですが、must-revalidateディレクティブはこの要件を明確にします。

b)クライアントは再検証する必要があります。ETagでIf-Matchまたはヘッダーを使用して再検証する場合もあれば、日付でまたはヘッダーを使用する場合もあります。If-None-MatchIf-Modified-SinceIf-Unmodified-Since

于 2012-01-04T16:00:58.580 に答える
6

を。このページの「統計」タブを見て、何が起こるか見てみましょう。

b. 有効期限が切れると、ブラウザはファイルが更新されているかどうかをサーバーで確認します。304 Not Modifiedそうでない場合、サーバーはヘッダーで応答し、何もダウンロードされません。

この動作は、Firebug または同様のツールの [Net] パネルで確認できます。アドレスバーに URL を再入力し、HTTP リクエストの数とキャッシュが空のときのリクエストの数を比較するだけです。

于 2010-05-31T15:47:56.520 に答える