cache server

共有キャッシュ (HTTP)

[2] 共有キャッシュ (shared cache) は、 蓄積した応答が複数の利用者により再利用されるキャッシュです。 共有キャッシュは普通 (必ずではありませんが) 中間器の一部として動作しています。 >>1

仕様書

プロトコル

[9] 共有キャッシュキャッシュ可能であることを示す Cache-Control: public があります。

処理

[6] 共有キャッシュは、私的キャッシュ蓄積できる応答の決定方法が異なります。

詳しくはキャッシュ可能性を参照。

関連

[3] 共有キャッシュではないキャッシュ私的キャッシュといいます。

[8] RFC 2616 世代まではキャッシュ串という用語がありましたが、 RFC 723x 世代では使われなくなっています。 キャッシュ串 (cache proxy) キャッシュを有するのことを指しているようです。 例外もあるでしょうが、キャッシュ串は通常共有キャッシュであり、 仕様上のキャッシュ串共有キャッシュのことを言っているのが普通であると思われます。

メモ

[4] 共有キャッシュは90年代にはしばしば利用されていました。 企業学校ISP などがそれぞれの所属者に自身のキャッシュサーバーを提供し、 利用者の便宜を図っていました。

[12] キャッシュサーバーを利用したネットワーク転送高速化の研究も盛んに行われました。

[11] 現在でも組織等のネットワークで利用されることがあり、 HTTP の仕様上も共有キャッシュの存在が前提とされていますが、 実際には近年の Webサイトは必ずしも共有キャッシュのもとで適切に動作する状態にはなっておらず、 Webアプリケーションで他の利用者ログイン状態の画面が表示されてしまうおそれがあるなど、 セキュリティー的にも問題があると考えられています。

[10] MITM も参照。

[5] 特定のWebサイトの提供者が自身の側の設備の一部として (逆串として、 あるいはそれよりアプリケーション鯖側の中間器として) 共有キャッシュ機能を持つキャッシュ鯖を使う構成は、 負荷分散その他の理由で現在でもよく用いられています。このような共有キャッシュWebサイト専用のものを用意する場合もあれば、 キャッシュ鯖を提供するサービスを利用する場合もあります。 いずれの場合でも当該アプリケーションの開発・運営者の管理下にありますから、 >>4 のような問題は起こりません。

[7] キャッシュ鯖アプリケーション鯖の間は HTTP で通信しますから、アプリケーション鯖は (その提供するサービスの成長や設計上の理由などにより) キャッシュ鯖を挟んだり、除去したりするのが比較的簡単です。 アプリケーション鯖からキャッシュ鯖へのキャッシュに関する指示は、 Cache-Control: など HTTP の仕組みに基づき行うこともあれば、 URL拡張子など独自の方法を使うこともあります。 アプリケーション鯖側からキャッシュ鯖キャッシュを更新させるためのダミーの要求を送信したり、 URLqueryキャッシュを回避するための文字列を付与したりといったキャッシュ制御のための hack が用いられることもよくあります。