-
Notifications
You must be signed in to change notification settings - Fork 4
/
705.txt
83 lines (61 loc) · 4.6 KB
/
705.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
[17] [CODE(HTTP)@en[[[Cache-Control:]]]] [[ヘッダー]]の
[DFN[[CODE(HTTP)@en[[[no-cache]]]]]] [[キャッシュ指令]]は、
[[検証]]なしに[[蓄積された応答]]を[[再利用]]してはならないことを表します。
この[[キャッシュ指令]]は[[要求]]でも[[応答]]でも利用できます。
* 仕様書
[REFS[
- [3] [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-5.2>
-- [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-5.2.1.4>'''
-- [6] '''[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-5.2.2.2>'''
- [20] [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-5.4>
]REFS]
* 意味
[2] [[要求]]の [CODE(HTTP)@en[[[Cache-Control:]]]] [[ヘッダー]]における
[DFN[[CODE(HTTP)@en[[[no-cache]]]]]] [[キャッシュ指令]]は、
[[キャッシュ]]が[[起源鯖]]により[[検証]]することなしに既に[[蓄積された応答]]を[[再利用]]しては[['''ならない''']]ことを示します
[SRC[>>1]]。
[8] [[応答]]の [CODE(HTTP)@en[[[Cache-Control:]]]] [[ヘッダー]]における
[DFN[[CODE(HTTP)@en[[[no-cache]]]]]] [[キャッシュ指令]]は、
[[キャッシュ]]が[[起源鯖]]により[[検証]]することなしに[[蓄積された応答]]として[[再利用]]しては[['''ならない''']]ことを示します
[SRC[>>6]]。
[9] ただし[[ヘッダー名]]が指定された場合は、その[[ヘッダー]]のみが[[検証]]が必要なことを表しています。
;; [10] [CODE(HTTP)@en[[[no-cache]]]] という[[キャッシュ指令]]の名前ではありますが、
[[キャッシュ]]が保存することは認められています。保存はして構いませんが、
[[再利用]]のために[[検証]]が必要です。保存すら認めたくない場合には、
[CODE(HTTP)@en[[[no-store]]]] を使うことができます。
* 構文
[4] [[要求]]の [CODE(HTTP)@en[[[Cache-Control:]]]] [[ヘッダー]]では、
[[引数]]は指定できません [SRC[>>3]]。
[7] [[応答]]の [CODE(HTTP)@en[[[Cache-Control:]]]] [[ヘッダー]]では、
[[引数]]を指定してもしなくても構いません。
指定する場合は[[ヘッダー名]]の[[リスト]] ([CODE(HTTP)[#]]) を記述できます [SRC[>>6]]。
[FIG(railroad)[
= ?
== [[ヘッダー名]]
== *
=== [[OWS]]
=== [CODE(HTTP)[[[,]]]]
=== [[OWS]]
=== [[ヘッダー名]]
]FIG]
[13] [[ヘッダー名]]は[[大文字・小文字不区別]]です [SRC[>>6]]。
[14] [[引数]]は[[引用文字列]]とする[['''べきです''']] [SRC[>>6]]。
[[ヘッダー名]]が1つだけの時は[[字句]]とすることも不可能ではありませんが、
[[字句]]とする[['''べきではありません''']] [SRC[>>6]]。
[[受信者]]はどちらにも対応する[RUBYB[べき]@en[ought to]]です [SRC[>>3]]。
* 処理モデル
[5] [[キャッシュ再利用]]参照。
[11] [[応答]]の [CODE(HTTP)@en[[[Cache-Control:]]]] [[ヘッダー]]において[[ヘッダー名]]が指定されていない場合は、
[[再利用]]の前に必ず[[検証]]しなければなりません。
[12] [[応答]]の [CODE(HTTP)@en[[[Cache-Control:]]]] [[ヘッダー]]において[[ヘッダー名]]が指定されている場合は、
[[キャッシュ]]は[[再利用]]しても構いませんが、
指定されている[[ヘッダー]]は[[検証]]に成功しないと[[送信]]しては[['''なりません''']]
[SRC[>>6]]。
;; [18] [[引数]]が[[空文字列]]の場合にどちらなのかはよくわかりません。
* 実装
[15] [[HTTP/1.0]] [[キャッシュ]]には[[応答]]の [CODE(HTTP)@en[[[Cache-Control:]] [[no-cache]]]]
に対応していないものもあります [SRC[>>6]]。
[16] [CODE(HTTP)@en[[[Cache-Control:]]]] [[ヘッダー]]における[[ヘッダー名]]の指定に対応せず、[[ヘッダー名]]なしの場合と同じように処理する実装もあります
[SRC[>>6]]。
[19] [[Webブラウザー]]の[[スーパーリロード]]では [CODE(HTTP)@en[[[Cache-Control:]] [[no-cache]]]] 付きの[[要求]]が[[生成]]されるのが普通です。通常の[[再読み込み]]でも
[CODE(HTTP)@en[[[Cache-Control:]] [[no-cache]]]] が付されることもあります。