/
681.txt
40 lines (32 loc) · 2.32 KB
/
681.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
[3] [[キャッシュ]]が[[蓄積]]された[[応答]]を再利用できるかを[[上流]]に確認する作業を[DFN[[RUBYB[[[検証]]]@en[validation]]]]といいます。
* 仕様書
[REFS[
- [1] [CITE@en[RFC 7234 - Hypertext Transfer Protocol (HTTP/1.1): Caching]] ([TIME[2014-09-11 10:19:59 +09:00]] 版) <https://tools.ietf.org/html/rfc7234#section-4.3>
]REFS]
* 検証
[2] [[キャッシュ]]が[[対象資源]]について[[蓄積]]された[[応答]]を持ちながらも、
そのいずれもが直ちに使えない場合 (例えば[[新鮮]]でない場合や候補のいずれかを選択できない場合)
には、[[内向き]]の次の[[鯖]]に[[条件付き要求]]を送ることで、
[[蓄積]]された[[応答]]のいずれかを選択したり、
[[蓄積]]されている[[メタデータ]]を更新したり、
新しい[[応答]]で[[蓄積]]された[[応答]]を更新したりできます。
これを[DFN[[RUBYB[[[検証]]]@en[validating]]]] ([DFN[[[revalidating]]]])
といいます。 [SRC[>>1]]
[4] [[検証]]のために[[条件付き要求]]を送信する場合には、
[[蓄積]]された[[応答]](群)から得た[[検証子メタデータ]]を指定した[[事前条件ヘッダー]](群)を送信します。
[SRC[>>1]]
[EG[
[5] [[蓄積]]された[[応答]]の [CODE(HTTP)@en[[[Last-Modified:]]]] [[ヘッダー]]に指定された[[タイムスタンプ]]を使って、
[CODE(HTTP)@en[[[If-Modified-Since:]]]] [[ヘッダー]]に指定して[[検証]]したり、
[CODE(HTTP)@en[[[If-Unmodified-Since:]]]] [[ヘッダー]]または
[CODE(HTTP)@en[[[If-Range:]]]] [[ヘッダー]]に指定して[[表現]]を選択したりできます。 [SRC[>>1]]
]EG]
[EG[
[6] [[蓄積]]された[[応答]]の [CODE(HTTP)@en[[[ETag:]]]] [[ヘッダー]]に指定された[[実体タグ]]を使って、
[CODE(HTTP)@en[[[If-None-Match:]]]] [[ヘッダー]]に指定して[[検証]]したり、
[CODE(HTTP)@en[[[If-Match:]]]] [[ヘッダー]]または
[CODE(HTTP)@en[[[If-Range:]]]] [[ヘッダー]]に指定して[[表現]]を選択したりできます。 [SRC[>>1]]
]EG]
;; [7] [[条件付き要求]]を[[転送]]する場合の[[検証]]についてや、
[[条件付き要求]]の[[キャッシュ]]や[[起源鯖]]における処理については、
[[条件付き要求]]を参照。