4

現在、私はこれを使用しています:

location ~* \.(js|css)$ { # |png|jpg|jpeg|gif|ico
  expires max;
  #log_not_found off; # what's this for?
}

そして、これは私がfirebugで見ているものです:

ここに画像の説明を入力

うまくいきましたか?間違っていなければ、ブラウザはファイルを再度要求し、nginx は「変更されていません」と応答するため、ブラウザはキャッシュを使用します。しかし、ブラウザはファイルを要求するべきではないと思いました.期限切れにならないことはすでにわかっています.

何かご意見は?

4

2 に答える 2

1

ファイルの最大有効期間と有効期限がまだ有効であるため、ブラウザはサーバーと通信しないため、ファイルが古くないことは明らかです。古いファイルでない限り、ブラウザはファイルを要求しません。つまり、キャッシュ制御 ( max -age) が終了したか、有効期限が切れています。その場合、指定されたコピーがまだ有効かどうかをサーブに尋ねます。はいの場合は同じコピーを提供し、そうでない場合は新しいコピーを取得します。

アップデート :

ほら、ここにあります。F5/refresh は、何かが変更されているかどうかにかかわらず、常にブラウザーにサーバーを要求させます。Request ヘッダーに If-Modified-Since が含まれます。サイトをナビゲートするだけとは異なりますが、ブラウザが server を要求せず、サイレントにキャッシュからロードする (サーバー呼び出しなし) ページに戻ってイベントをクリックします。また、Firefox Live HTTP ヘッダーでテストしている場合は、要求された内容が正確に表示されますが、Firebug では常に If-Modified-Since が表示されます。Safari の開発者メニューには、読み込み時間が 0 と表示されるはずです。

于 2012-08-18T06:30:49.250 に答える