/
651.txt
66 lines (48 loc) · 4.14 KB
/
651.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
[2] [DFN[[RUBYB[共有キャッシュ]@en[shared cache]]]]は、
蓄積した[[応答]]が複数の[[利用者]]により再利用される[[キャッシュ]]です。
[[共有キャッシュ]]は普通 (必ずではありませんが) [[中間器]]の一部として動作しています。 [SRC[>>1]]
* 仕様書
[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-1>
]REFS]
* プロトコル
[9] [[共有キャッシュ]]で[[キャッシュ可能]]であることを示す
[CODE(HTTP)@en[Cache-Control: public]] があります。
* 処理
[6] [[共有キャッシュ]]は、[[私的キャッシュ]]と[[蓄積]]できる[[応答]]の決定方法が異なります。
;; 詳しくは[[キャッシュ可能性]]を参照。
* 関連
[3] [[共有キャッシュ]]ではない[[キャッシュ]]を[[私的キャッシュ]]といいます。
[8] [[RFC 2616]] 世代までは[[キャッシュ串]]という用語がありましたが、
[[RFC 723x]] 世代では使われなくなっています。
[DFN[[RUBYB[キャッシュ串]@em[cache proxy]]]]は[[キャッシュ]]を有する[[串]]のことを指しているようです。
例外もあるでしょうが、[[キャッシュ串]]は通常[[共有キャッシュ]]であり、
仕様上の[[キャッシュ串]]も[[共有キャッシュ]]のことを言っているのが普通であると思われます。
* メモ
[4] [[共有キャッシュ]]は90年代にはしばしば利用されていました。
[[企業]]、[[学校]]、[[ISP]] などがそれぞれの所属者に自身の[[キャッシュサーバー]]を提供し、
[[利用者]]の便宜を図っていました。
[12]
[[キャッシュサーバー]]を利用したネットワーク転送高速化の研究も盛んに行われました。
[11]
現在でも組織等のネットワークで利用されることがあり、
[[HTTP]] の仕様上も[[共有キャッシュ]]の存在が前提とされていますが、
実際には近年の [[Webサイト]]は必ずしも[[共有キャッシュ]]のもとで適切に動作する状態にはなっておらず、
[[Webアプリケーション]]で他の[[利用者]]の[[ログイン]]状態の画面が表示されてしまうおそれがあるなど、
[[セキュリティー]]的にも問題があると考えられています。
;; [10] [[MITM]] も参照。
[5] 特定の[[Webサイト]]の提供者が自身の[[鯖]]側の設備の一部として ([[逆串]]として、
あるいはそれより[[アプリケーション鯖]]側の[[中間器]]として) [[共有キャッシュ]]機能を持つ[[キャッシュ鯖]]を使う構成は、
負荷分散その他の理由で現在でもよく用いられています。このような[[共有キャッシュ]]は[[Webサイト]]専用のものを用意する場合もあれば、
[[キャッシュ鯖]]を提供するサービスを利用する場合もあります。
いずれの場合でも当該[[アプリケーション]]の開発・運営者の管理下にありますから、
>>4 のような問題は起こりません。
;; [7] [[キャッシュ鯖]]と[[アプリケーション鯖]]の間は [[HTTP]]
で通信しますから、[[アプリケーション鯖]]は (その提供するサービスの成長や設計上の理由などにより)
[[キャッシュ鯖]]を挟んだり、除去したりするのが比較的簡単です。
[[アプリケーション鯖]]から[[キャッシュ鯖]]への[[キャッシュ]]に関する指示は、
[CODE(HTTP)@en[[[Cache-Control:]]]] など [[HTTP]]
の仕組みに基づき行うこともあれば、 [[URL]] の[[拡張子]]など独自の方法を使うこともあります。
[[アプリケーション鯖]]側から[[キャッシュ鯖]]に[[キャッシュ]]を更新させるためのダミーの[[要求]]を送信したり、
[[URL]] の [[query]] に[[キャッシュ]]を回避するための文字列を付与したりといった[[キャッシュ]]制御のための
[[hack]] が用いられることもよくあります。