web-dev-qa-db-ja.com

リロード時に304-Not Modifiedを推奨する応答ヘッダーは何ですか?

Firebug/Chrome/IE9のネットワークウォーターフォールを見ると、 このページ、例

リクエスト中にブラウザがIf-Modified-Sinceを送信していないからだと思いますか? 304が発生するように、最初の応答ヘッダーで何かを変更する必要がありますか?

FF13スクリーンショット

1
utt73

リクエスト中にブラウザがIf-Modified-Sinceを送信していないからだと思いますか?

正しい。

304が発生するように、最初の応答ヘッダーで何かを変更する必要がありますか?

はい。後続のリクエストで304レスポンスコードを持つリソースのoriginalレスポンスヘッダーを比較すると、次のことがわかります。

  1. それらはすべて/govtrip/site/grphx/フォルダーにあります
  2. 「Etag」、「Expires」、「Last-Modified」ヘッダーがあります

最初の瞬間は、ほとんどの場合、それらのヘッダーを設定する.htaccessファイルがそのフォルダーにあることを示しています(または、そのフォルダーの構成ファイルの別のセクション)。

304応答コードを持つリソースのrequestヘッダーを見ると、「If-Modified-Since」および「If-None-Match」ヘッダーが存在することがわかります。それらに基づいて"If- *"ヘッダー Apacheはリクエストへの返信方法を決定します。私は確信しています-ここでパターンを見ることができます-どの値がどこで使用されているのかを見つけるのは非常に簡単です。

Resource: /govtrip/site/grphx/system_green.gif

元の応答:

Etag: "AAAAS9z9Emo"
Expires: Thu, 14 Jun 2012 18:24:24 GMT
Last-Modified: Wed, 20 Apr 2011 17:29:45 GMT

後続のリクエスト:

If-Modified-Since: Wed, 20 Apr 2011 17:29:45 GMT
If-None-Match: "AAAAS9z9Emo"
2
LazyOne

私の経験では、ブラウザーはIf-Modified-Sinceヘッダーを使用しません。 Googlebotなどのクローラーから送信されるのを見ただけです。条件付きダウンロードを引き出すには、最初にETag: hash-hereで応答し、次に同じURLの結果のリクエストでIf-None-Match: hash-hereに注意してください。キャッシュは条件付きダウンロードが発行される前に最初に期限切れになる必要があるため、適切な即時期限切れヘッダーを使用するようにしてください。

注:If-Matchヘッダーもあります。これは部分的なダウンロードでのみ使用され、ファイルが変更されて再開が不可能になったことを検出できるようにすることで破損を防ぎます。高度な状況では、再開するファイルを選択することもできます。

0
Zdenek