キャッシュ検証子

キャッシュ検証子

[9] 条件付き要求の事前条件として使われる資源メタデータの値のことを、 検証子 (validator) といいます >>8

[10] そのような資源メタデータとして、 RFC 7232 では修正日時 (Last-Modified) と実体タグが規定されている他、 WebDAV その他の拡張でも定義されることがあります >>8

仕様書

検証子ヘッダー

[3] 検証子ヘッダー (validator header fields) は、 選択された表現についてのメタデータを伝達するものです。 >>2

[4] 安全要求に対する応答検証子ヘッダーは、 応答を処理するに当たり起源鯖が選んだ選択された表現について説明したものです。 >>2

[5] 状態符号の意味次第では、ある応答選択された表現は必ずしもその応答に含まれる payload表現と同じではないかもしれません。 >>2

[6] 状態を変更しようとする要求の成功した応答検証子ヘッダーは、 処理の結果以前の選択された表現を置き換えた新しい表現について説明するものです。 >>2

[7] 例えば 201 応答ETag: ヘッダーは、新しく作られた資源実体タグを表しています。 >>2

[515] 起源鯖は、 PUT 要求表現変形なしに保存され、 検証子ヘッダーの値が新しい表現にそのまま適用される場合を除き、 PUT への応答検証子ヘッダーを送信してはなりません >>507

[202] 次のヘッダー検証子ヘッダーとされています >>2

[16] 検証子を値とするヘッダーであっても、 If-Match: など検証子を条件として利用するヘッダーは、検証子ヘッダーではありません。

検証子の強さ

[11] 検証子には、強い検証子 (strong validator) 弱い検証子 (weak validator) があります >>8

[12] 強い検証子は、 GETに対する 200 応答payload body に含まれるであろう表現データが変化する時に常に変化する表現メタデータです。 強い検証子は、その他の理由、例えば表現メタデータの意味的に重要な部分 (例えば Content-Type:) が変わった場合にも変化するかもしれませんが、 遠隔のキャッシュauthoring tool が蓄積された応答非妥当にする必要がある時に限って変化させるのが起源鯖にとって最も重視するところです。 強い検証子は、ある資源のすべての表現のすべての版にわたって固有の値です。 (別の資源表現についても固有な値とは限りません。) >>8

[13] 例えば版管理システムの版識別子だったり、 表現データについてのハッシュ関数の値だったりします。 >>8

[14] 同じ表現データメタデータだけ異なり、その違いが重要な場合には、 メタデータの部分も強い検証子に反映させるよう注意が必要です。

[15] 弱い検証子は、表現のデータが変わっても毎回変わらないかもしれない表現メタデータです。 >>8

[17] 例えば毎秒変化する気象情報の表現は、適当な時間 (の負荷や天気の品質によって調整しつつ) キャッシュできるよう、 同じ弱い検証子を使ってまとめることができます。 >>8

[18] 表現の修正時刻が単位の場合、1秒間に複数回変更されることがあるなら、 弱い検証子となります。 >>8

[19] 同じ資源の複数の表現、例えば通常版と gzip 内容符号化版で同等のデータを表すものが同じ検証子を共有しているなら、 それは弱い検証子です。 >>8

[21] 強い検証子はすべての条件付き要求で使えます。 弱い検証子は、以前得た表現データと完全に等しいか分からなくても良い、 キャッシュ項目の検証Web 探索を最近の変更のみに限定するような場合などにしか使えません。 >>8

検証子の利用

[20] 検証子は、条件付き要求の事前条件の記述に用いられます。

[22] 検証子は、範囲要求に対する部分応答の適用可能性の決定に用いられます。

[23] 透過内容折衝においては、応答のうち Alternates: ヘッダーに適用される異体リスト検証子とそれ以外に適用される通常の実体タグから構成される構造化実体タグという特殊な形の検証子が使われています。

歴史

[1] HTTP (RFC 2068 1.3, RFC 2616 1.3)

validator
A protocol element (e.g., an entity tag or a Last-Modified time) that is used to find out whether a cache entry is an equivalent copy of an entity.
検証子
キャッシュ項目実体の同等の複製であるかを調べるのに使うプロトコル要素 (例えば実体札Last-Modified 時刻)。