-
Notifications
You must be signed in to change notification settings - Fork 4
/
593.txt
93 lines (68 loc) · 4.57 KB
/
593.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
[1] [CODE(HTTP)[ETag:]] 欄は、[[実体]]を相互に識別するための値
([[実体札]] = [[entity-tag]]) を入れる欄です。
この値を[[内容折衝]]と組合せることで、
[[キャッシュ]]などで嬉しいことになります。
[8]
似た目的のものとして [CODE(HTTP)[[[Last-Modified]]]]
などがあります [WEAK[ちなみに、 [CODE(HTTP)[Last-Modified]] や [CODE(HTTP)[ETag]] などをキャッシュ[DFN[[[検証子]]]]と言います。]]
が、[[内容折衝]]などのために1つの[[資源]]に複数の[[実体]]が対応していると、
単純な更新日時だけではキャッシュ項目の実体と鯖側の実体が同じかどうか判断できません。
そこで [CODE(HTTP)[ETag]] を使います。 [CODE(HTTP)[ETag]] 値
([[実体札]]) は基本的に HTTP では作り方が定められておらず、
鯖の都合によって適当な値を使うことができます。
実際には日時や[[ファイル・システム]]における識別子や実体の[[検査和]]のようなものを組合せることが多いようです。
詳しくは[[実体札]]・[[構造化実体札]]の項もご覧下さい。
* 仕様書から
** RFC [DEL(RFC2068)[2068]] [INS(RFC2616)[2616]] (HTTP/1.1) 14.[DEL(RFC2068)[20]][INS(RFC2616)[19]] ETag
> The ETag [DEL(RFC2068)[entity]][INS(RFC2616)[response]]-header
field [DEL(RFC2068)[defines]]
[INS(RFC2616)[provides the current value of]] the
entity tag for the
[DEL(RFC2068)[associated]] [INS(RFC2616)[requested]]
variant. The headers used with entity
tags are described in sections [DEL(RFC2068)[14.20, 14.25]]
[INS(RFC2616)[14.24]], 14.26 and
14.[DEL(RFC2068)[43]][INS(RFC2616)[44]]. The entity tag
[DEL(RFC2068)[may]] [INS(RFC2616)[MAY]]
be used for comparison with other entities from the same resource
(see section 13.3.[DEL(RFC2068)[2]][INS(RFC2616)[3]]).
[6] [CODE(HTTP)[ETag]]
[DEL(RFC2068)[実体]][INS(RFC2616)[応答]]頭欄は、
[DEL(RFC2068)[関連付けられ]][INS(RFC2616)[要求され]]た変種の[[実体札]][DEL(RFC2068)[を定義]][INS(RFC2616)[の現在値を提供]]します。
実体札とともに使う頭は[DEL(RFC2068)[14.20節, 14.25節]]
[INS(RFC2616)[14.24節]], 14.26節,
14.[DEL(RFC2068)[43]][INS(RFC2616)[44]]節
[INS[([[Vary:]>>11])]] で説明しているいます。
実体札は同じ資源のほかの実体との比較に使っても[DEL(RFC2068)[構いません]][INS(RFC2616)['''構いません''']]
(13.3.[DEL(RFC2068)[2]][INS(RFC2616)[3]]節参照)。
- [2] [CODE(ABNF)[ETag = "ETag" ":" [[entity-tag]]]]
> Examples:
- [3] ETag: "xyzzy"
- [4] ETag: W/"xyzzy"
- [5] ETag: ""
* メモ
[7] [CODE(HTTP)[[[201]]]] (作成済み) 応答では、
作成された[[資源]]についての実体札を [CODE(HTTP)[ETag]]
頭欄に入れることができます。他の応答の場合
[WEAK[(応答実体についての実体札。)]] とは異なるので注意が必要です。
[9]
[CITE[mnot’s Web log: ETags, ETags, ETags]] ([CODE[2007-08-09 23:20:31 +09:00]] 版) <http://www.mnot.net/blog/2007/08/07/etags>
([[名無しさん]])
[10]
[CITE@en[Sam Ruby: Etag vs Encoding]] ([TIME[2007-10-02 00:06:41 +09:00]] 版) <http://www.intertwingly.net/blog/2007/09/30/Etag-vs-Encoding>
([[名無しさん]])
[2617] [CITE[Editing the Web - Detecting the Lost Update Problem Using Unreserved Checkout]] ([TIME[1999-05-11 07:02:58 +09:00]] 版) <http://www.w3.org/1999/04/Editing/01>
[2618] [CITE@en[RFC 3143 - Known HTTP Proxy/Caching Problems]] ([TIME[2008-08-30 12:43:01 +09:00]] 版) <http://tools.ietf.org/html/rfc3143#appendix-A.2.3>
[2619] [CITE[堀愚霊瑠の指摘で気付いた、はてなスターの静的ファイルとか想像以上にアレな件 - にぽたん研究所]] ([TIME[2009-02-08 18:44:24 +09:00]] 版) <http://blog.livedoor.jp/nipotan/archives/51186026.html>
[2620] [CITE[Squid 2.6.STABLE21 Configuration File: broken_vary_encoding]]
([TIME[2008-07-22 05:54:52 +09:00]] 版)
<http://www.squid-cache.org/Versions/v2/2.6/cfgman/broken_vary_encoding.html>
[2621] [CITE[Editing the Web - Detecting the Lost Update Problem Using Unreserved Checkout]]
( ([TIME[1999-05-11 06:02:12 +09:00]] 版))
<http://www.w3.org/1999/04/Editing/>
[2622] [CITE@en[Protocol Reference - Google Data APIs — Google Developers]]
( ([TIME[2012-07-12 01:21:59 +09:00]] 版))
<https://developers.google.com/gdata/docs/2.0/reference#ResourceVersioning>
[2623] [CITE@en[RFC 7252 - The Constrained Application Protocol (CoAP)]]
( ([TIME[2014-06-27 00:59:37 +09:00]] 版))
<http://tools.ietf.org/html/rfc7252#section-5.10.6>