Cache-Control属性がリクエストヘッダー(クライアントからサーバー)で送信されるのはなぜですか?


163

Cache-ControlHTTPヘッダーのフィールドについて読んだ後、

私がいることを理解してCache-ControlHTTPレスポンスヘッダ(クライアントへのサーバ)のフィールドが異なる値を送信することにより、応答を処理する方法についての中間プロキシサーバ/クライアントのブラウザのためのディレクティブを指定するCache-Controlフィールド:privatepublicno-cache、またはno-store応答ヘッダインチ

しかし、なぜCache-Controlリクエストヘッダーで属性を送信する必要があるのか​​わかりません(クライアントからサーバーへ)。

回答:


137

Cache-Control: no-cache中間ヘッダーでリソースの検証を強制するために、(Webブラウザーからサーバーに送信される)要求ヘッダーで一般的に使用されます。クライアントがこのリクエストをサーバーに送信しない場合、中間プロキシは、コンテンツが新しい(Expireまたはmax-ageフィールドに従って有効期限が切れていない)場合、コンテンツのコピーを返します。Cache-Controlコピーが新しい場合でもコピーを再検証するようにこれらのプロキシに指示します。


8
ここでは遅すぎるかもしれませんが、他の用途は何ですか?max-ageフィールドは何らかの目的で使用されますか?
Sam

最近のブラウザはなぜこれを行う傾向があるのでしょうか?Web標準に従って動作しているにもかかわらず、中間プロキシを信頼しませんか?
ロジャーパック2017

1
@rogerdpackいいえ、彼らそれらを信頼しているため、信頼するヘッダーを送信します。ほとんどの用途で必要とするよりも高い鮮度を要求する特別な理由があることを示すために、信頼できるヘッダーが送信されます。
Jon Hanna

1
@rogerdpackは、状態を変更し、それを反映させたいことがわかっていることを実行しただけの場合、古典的なケースになります。
Jon Hanna

7
@JonHanna Chromeデベロッパーツールで「キャッシュを無効にする」がオンになっていると思いますか?:D
Gregory Magarshak

15

クライアントはCache-Control、要求内のヘッダーを送信して、再検証などの特定のキャッシング動作を要求元のサーバーと要求パスに沿った中間プロキシサーバーから要求できます。


4

上記の回答に加えて、
キャッシュチェーンが実装されている設定がある可能性があります。その場合、要求が満たされていない最初のキャッシュにリクエストが送られると、さらに連鎖されたキャッシュに移動する可能性があります。

したがって、常にサーバーから応答を取得するために、要求ヘッダーにcache-controlを含めます。これにより、応答は常にサーバーから送信されます。


「したがって、常にサーバーから応答を取得するために、要求ヘッダーにcache-controlを含めます。これにより、応答が常にサーバーから送信されることが保証されます。」このヘッダーのどの値がそれを達成しますか?
ドンハッチ

Cache-Control: no-cache応答が完全に検証されることを保証するようにプロキシに伝えます。
mogsie
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.