[9] [DFN[[CODE(HTTP)@en[[[Delta-Base:]]]]]] [[ヘッダー]]は、
[[差分符号化]]のもととなる[[基底実現値]]の[[実体タグ]]を示すものです。

* 仕様書

[REFS[
- [2] [CITE@en[RFC 3229 - Delta encoding in HTTP]] ([TIME[2014-10-26 21:15:25 +09:00]] 版) <http://tools.ietf.org/html/rfc3229#section-10.3>
- [3] '''[CITE@en[RFC 3229 - Delta encoding in HTTP]] ([TIME[2014-10-26 21:15:25 +09:00]] 版) <http://tools.ietf.org/html/rfc3229#section-10.5.1>'''
]REFS]

* 意味

[4] [CODE(HTTP)@en[[[Delta-Base:]]]] [[ヘッダー]]は、
[[差分符号化]]された[[応答]]において[[基底実現値]]の[[実体タグ]]を示すものです [SRC[>>3]]。

* 構文

[6] [CODE(HTTP)@en[[[Delta-Base:]]]] [[ヘッダー]]の値は、[[実体タグ]]です [SRC[>>3]]。

[FIG(railroad)[
= [[実体タグ]]
]FIG]

* 文脈

[5] [[差分符号化]]した (= [CODE(HTTP)@en[[[IM:]]]] に[[差分符号化]]が含まれる)
[CODE(HTTP)[[[226]]]] [[応答]]の [CODE(HTTP)@en[[[Digest-Base:]]]]
[[ヘッダー]]によって[[基底実現値]]の[[実体タグ]]を示すことができます [SRC[>>2]]。
[[要求]]の [CODE(HTTP)@en[[[If-None-Match:]]]] [[ヘッダー]]に複数の[[実体タグ]]が含まれている場合には、
[CODE(HTTP)@en[[[Delta-Base:]]]] [[ヘッダー]]を含めなければ[['''なりません''']] [SRC[>>3]]。
それ以外の場合にも含めたほうが賢いかもしれません [SRC[>>3]]。

* 処理モデル

[7] [[キャッシュ]]や[[串]]は、 [CODE(HTTP)@en[[[Delta-Base:]]]]
が明示されなかった場合で[[要求]]の [CODE(HTTP)@en[[[If-None-Match:]]]]
に1つだけ[[実体タグ]]が示されていた場合には、これを [CODE(HTTP)@en[[[Delta-Base:]]]]
として追加して構いません [SRC[>>3]]。

[10] [[キャッシュ]]における処理については、[CODE(HTTP)[[[226]]]] を参照。

* 基底実現値

[1] ([[差分符号化]]された[[応答]]を期待した) [[要求]]の
[CODE(HTTP)@en[[[If-None-Match:]]]] [[ヘッダー]]には、
当該[[対象資源]]の[[実現値]]について[[妥当]]な[[実体タグ]]を[RUBYB[[[基底実現値]]]@en[base instance]]の[[実体タグ]]として指定できます。

* 歴史

[FIG(quote)[
[FIGCAPTION[
[8] RFC 3229 (差分符号化) 10.5.1 Delta-Base
]FIGCAPTION]

> The Delta-Base entity-header field is used in a delta-encoded
response to specify the entity tag of the base instance.

[CODE(HTTP)[Delta-Base]] [[実体頭欄]]は[[差分符号化]]応答で[[基底実現値]]の[[実体札]]を指定するために使用します。

>
-      Delta-Base = "Delta-Base" ":" entity-tag

> A Delta-Base header field MUST be included in a response with an IM
header that includes a delta-coding, if the request included more
than one entity tag in its If-None-Match header field.

[CODE(HTTP)[Delta-Base]] 頭欄は、[[要求]]が [CODE(HTTP)[[[If-None-Match]]
頭欄に複数個の実体札を含めていたなら、差分符号化を含む
[CODE(HTTP)[[[IM]]]] 頭のある「「応答]]に含めなければ'''なりません'''。

> Any response with an IM header that includes a delta-coding MAY
include a Delta-Base header.

差分符号化を含む [CODE(HTTP)[IM]] 頭のある応答は
[CODE(HTTP)[Delta-Base]] 頭を含んで'''構いません'''。

> We are not aware of other cases where a delta-encoded response
MUST or SHOULD include a Delta-Base header, but we have not done
an exhaustive or formal analysis.  Implementors might be wise to
include a Delta-Base header in every delta-encoded response.

他に差分符号化応答が [CODE(HTTP)[Delta-Base]] 頭を含まなければ'''ならない'''場合や含める'''べきである'''場合は思い付きませんが、
徹底的な調査や形式的な調査はしていません。
実装者はすべての差分符号化応答に [CODE(HTTP)[Delta-Base]]
頭を含める方が賢明でしょう。

> A cache or proxy that receives a delta-encoded response that lacks a
Delta-base header MAY add a Delta-Base header whose value is the
entity tag given in the If-None-Match field of the request (but only
if that field lists exactly one entity tag).

[CODE(HTTP)[Delta-Base]] 頭を欠いた差分符号化応答を受信した[[キャッシュ]]や[[串]]は、その値が要求の [CODE(HTTP)[If-None-Match]]
欄に与えられた実体札である [CODE(HTTP)[Delta-Base]] 頭を加えて'''構いません''' (が、 [CODE(HTTP)[If-None-Match]]
欄が丁度一つの実体札を挙げている場合のみです)。
]FIG]

[27] [[RFC 4229]] は[[IANA登録簿]]に状態「[[標準]]」で登録しています [SRC[>>26]]。

[REFS[
- [26] [CITE@en[RFC 4229 - HTTP Header Field Registrations]] ([TIME[2014-11-02 18:53:20 +09:00]] 版) <http://tools.ietf.org/html/rfc4229#section-2.1.39>
]REFS]
