2017-11-27 17 views
2

私は最近thisの記事を見ました。応答だけでなく、要求にはcache-controlのオプションも含めることができます。要求のキャッシュ制御HTTPヘッダーはなぜですか?

私は理解しましたが、それは意味のあるサーバーの応答によって利用することができますが、要求になぜそれらが必要なのかを明確に理解していません。残念ながら、私は自分の問題に答えたインターネット上に何も見つけることができませんでした。

いずれかのアイデアがありますか?

答えて

2

HTTP/1.1キャッシュとキャッシュ動作を制御する関連するヘッダーは、RFC 7234で定義されています。キャッシュはHTTPの全くオプションの機能です。


Cache-Controlヘッダは、要求/応答チェーンに沿ってキャッシュのディレクティブを指定するために使用されます。このようなキャッシュ・ディレクティブは、要求内のディレクティブの存在が応答に同じディレクティブを与えることを暗示していないという点で、一方向である です。

キャッシュディレクティブが 大文字と小文字を区別せずに比較するために、トークンによって識別され、両方 トークンと引用符で囲まれた文字列の構文を使用することができ、オプションの引数を、持っています。引数を定義する の下に定義されたディレクティブの場合、受信者は が好ましいと文書化されていても、両方の形式を受け入れる必要があります。 で定義されていない指示文の場合、受信者は両方の形式を受け入れなければならない(MUST)。

Cache-Control = 1#cache-directive 

cache-directive = token [ "=" (token/quoted-string) ] 

Cache-Controlヘッダーの要求で使用することができdirectivesの下に検索:

5.2.1.1. max-age

[...] max-age要求ディレクティブはクライアントであることを示し、 年齢が指定した秒数の より大きい応答を受け入れたくない。例えば、 max-age=5ないmax-age="5":[...]

このディレクティブは、引数構文のトークン形式を使用しています。 [...]

5.2.1.2. max-stale

[...] max-stale要求ディレクティブは、クライアントがその新鮮さ 寿命を超えたレスポンスを受け入れよう であることを示しています。 [...]

この指示文では、引数構文のトークン形式を使用しています。たとえば、 max-stale=10ではなく、max-stale="10"です。 [...]

5.2.1.3. min-fresh

[...] min-fresh要求ディレクティブは、クライアントがその新鮮寿命劣らず よりその現在の年齢プラス指定している応答を受け入れることを望ん であることを示しています時間(秒)。例えば、 min-fresh=20ないmin-fresh="20":[...]

このディレクティブは、引数構文のトークン形式を使用しています。 [...]

5.2.1.4. no-cache

no-cache要求ディレクティブは、キャッシュがオリジンサーバ上の成功 検証せずに、要求を満たすために 保存された応答を使用してはならないことを示しています。

5.2.1.5. no-store

no-store要求ディレクティブは、キャッシュがこのリクエストやそれに対する応答のいずれかの任意の部分を格納しませ 必要があることを示します。 [...]

5.2.1.6. no-transform

no-transform要求ディレクティブは、仲介 は(それがキャッシュを実装しているか否か) ペイロードを[...]変換はならないことを示します。

5.2.1.7. only-if-cached

only-if-cached要求指令は、クライアントのみ 格納された応答を得ることを望むことを示しています。 [...]同様に、RFC 7234

Cache-Controlヘッダの応答に使用することができるdirectivesを定義します。

+0

あなたの答えは、私が期待したものをかなり満たしています。副次的な質問として、私は知っているかもしれません、あなたは頻繁に要求のためにそれらを使用しましたか?それとも、まれなケースですか? –

+1

@SupunWijerathneキャッシュは、HTTPの全くオプションの機能です。したがって、実装する必要はありません。正直言って、私はそのような指示をリクエストに使用したことはありませんでしたが、決してそれらを使用するつもりはありません:) –

関連する問題