ブラウザのデフォルト設定を想定し、コンテンツは期限切れヘッダーなしで送信されます。
ブラウザはユーザーがサーフィンするときに画像などをキャッシュしますが、コンテンツの鮮度について尋ねる条件付きGETリクエストをいつ発行するかは不明です(ページの更新は別として)。これがブラウザ固有の設定である場合、その値はどこで確認できますか(safari、IE、FireFox、Chromeなどのブラウザの場合)。
[編集:はい-常に期限切れヘッダーを送信する必要があることを理解しています。ただし、この調査は、有効期限のないヘッダーがないコンテンツでブラウザがどのように機能するかを理解することを目的としています。]
HTTP/1.1は、キャッシュメカニズムの選択を定義します。 expires
ヘッダーは1つだけであり、cache-control
ヘッダーもあります。
質問に直接答えるには、expires
ヘッダーなしで返されたリソースの場合、返されたcache-control
ディレクティブを考慮する必要があります。
HTTP/1.1は、キャッシュ関連のヘッダーなしで提供されるリソースのキャッシュ動作を定義していません。リソースがcache-control
またはexpires
ヘッダーなしで送信される場合、次に同じリソースが要求されたときに、クライアントが通常の(無条件の)要求を行うと想定する必要があります。
この動作から逸脱すると、クライアントは完全に準拠したHTTPクライアントではないと見なされます。その場合、問題は次のようになります。非準拠のHTTPクライアントからどのような動作が期待されるか。それに答える方法はありません。
HTTPキャッシングは複雑です。特定のシナリオで準拠クライアントが何をすべきかを完全に理解するには、 HTTPキャッシング仕様 を読んで理解してください。
HTTPキャッシング仕様 (セクション13.4)から:cache-control(セクション14.9)ディレクティブによって特に制約されない限り、キャッシングシステムは常に成功した応答(セクション13.8を参照)をキャッシュエントリとして保存できます(MAY)。 、新しい場合は検証なしで返すことができ、検証が成功した後に返すことができます。これは、キャッシュ制御ヘッダーが送信されない場合、ユーザーエージェントが自由にやりたいことを実行できることを意味します。ほとんどのブラウザは、ユーザー設定とヒューリスティックの組み合わせを使用して、この状況でキャッシュするかどうか(およびキャッシュする期間)を決定します。
期限切れヘッダーを送信しない限り、ほとんどのブラウザーは、後続の更新ごとにGET要求を行い、HTTP 200 OK(コンテンツを再度ダウンロードします)またはHTTP 304 Not Modified(およびキャッシュ内のデータを使用)のいずれかを取得します。