retain

キャッシュ指令 retain (HTTP)

[20] retain は、差分符号化に対応したキャッシュが当該応答蓄積するべきことを表すキャッシュ指令です。 このキャッシュ指令応答Cache-Control: ヘッダーで使うことができます。

仕様書

意味

[12] retain は、差分符号化に対応したクライアントは本応答実現値キャッシュに残すべき (ought to) であること、 以後差分符号化された応答要求したいときに本応答実体タグを (基底実現値の指定のために) 使うべき (ought to) ことを示します >>2

[11] retainヒントであり、受信者に特定の動作を強制するものではありません >>2

[5] 実現値の更新後に差分をクライアントの送信するためには、 過去の実現値について何らかの情報を保持しておく必要があります。 必ずしも過去の実現値をすべて保存する必要はなく、差分だけ保持しておいたり、 LRU で間引いたり工夫することができます。 >>4

[7] 実現値の一部(のみ)を残しておく場合、 クライアントはどれを残すか知ることができればどれをいつまでキャッシュに保存するか決める際にヒントにできます。 retain キャッシュ指令はそのためのものです。 >>6

構文

[10] retain キャッシュ指令は、名前のみ指定するか、 名前に対してデルタ秒を値として指定します >>2

  1. デルタ秒

文脈

[8] retain は通常の応答にも差分応答にも含められます >>6

[18] 転送量削減のため、クライアント差分符号化を求めた場合以外 retain=0 を送信するべき (ought) ではありません。 >>6, >>2

デルタ秒

[13] 値としてデルタ秒が指定されている場合、 その数が経過した後、が当該実現値差分符号化基底実現値として利用しなくなるであろうことを表します。 >>2

[15] デルタ秒は、応答生成からの数を表します >>2

[16] 応答キャッシュから返されている場合もあるので、 応答を考慮する必要があります。

[14] クライアントは、指定された数の経過後は、当該応答実体タグ差分符号化基底実現値として指定するべき (ought to) ではありません。

[9] 差分符号化に対応しているものの当該実現値については対応しない場合、 retain=0 によってこれを示すことができます。 >>6

[17] クライアントは、値として0が指定された時は、 当該応答実体タグ差分符号化基底実現値として指定するべきではありません >>2

歴史

[1] RFC 3229 (差分符号化) 10.8.1 Retain directive

The set of cache-response-directive values is augmented to include the retain directive.

cache-response-directive (キャッシュ応答指令) 値の集合を改訂して、 retain 指令を含めます。

  • cache-response-directive = ... | "retain" [ "=" delta-seconds ]

A retain directive is always a "hint" from a server to a client; it never specifies a mandatory action for the recipient.

retain 指令は常に鯖からクライアントへの「ヒント」です。 受信者に動作を強制することは決してありません。

The presence of a retain directive indicates that a delta-capable client ought to retain the instance in the response in its cache, space permitting, and ought to use the corresponding entity tag in a future request for a delta-encoded response. I.e., the server is likely to provide delta-encoded responses using the corresponding instance as a base instance. By implication, if a client has retrieved and cached several instances of a resource, some of which are marked with "retain" and some not, then there is no point in caching the instances not marked with "retain".

retain 指令の存在は、差分能力を有するクライアントがその応答中の実現値を空間が許せばキャッシュに残すべきであり、 差分符号化応答用の将来の要求で対応する実体札を使用するべきであることを示します。 すなわち、鯖は対応する実現値を基底実現値として使用した差分符号化応答を提供しようとしています。 暗示により、クライアントが資源の幾つかの実現値を取り出してキャッシュしていて、そのうちの幾つかは retain と印付けられていていくつかはそうでないなら、 キャッシュ付けにおいてその実現値が retain と印付けされていない点はありません。

If the retain directive includes a delta-seconds value, then the server is likely to stop using the corresponding instance as a base instance after the specified number of seconds. A client ought not use the corresponding entity tag in a future request for a delta-encoded response after that interval ends. The interval is measured from the time that the response is generated, so a client ought to include the response's Age in its calculations.

retain 指令が delta-seconds (差分秒) 値を含んでいるなら、鯖は指定された秒数の後に対応する実現値を基底実現値として使用するのを止めるつもりです。 クライアントはその時間が経過した後は差分符号化応答用の将来の要求で対応する実体札を使用するべきではありません。 時間は応答を得た時刻から計測しますから、 クライアントはその計算に応答のを含めるべきです。

If the retain directive includes a delta-seconds value of zero, a client SHOULD NOT use the corresponding entity tag in a future request for a delta-encoded response.

retain 指令が零の差分秒値を含んでいるなら、 クライアントは対応する実体札を将来の差分符号化応答用要求で使用するべきではありません

Note: We recommend that server implementors consider the bandwidth implications of sending the "retain=0" directive to clients or proxies that might not have the ability to make use of it.

注意: 鯖実装者は retain=0 指令を利用する能力を有しないかもしれないクライアントや串にこの指令を送信するために必要な帯域を考慮することを推奨します。

[3] RFC 7234キャッシュ指令IANA登録簿が新設されましたが、 retain はなぜか登録されていません。