<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">共有キャッシュ<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">shared cache</rt></rubyb></dfn>は、
蓄積した<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>が複数の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>により再利用される<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ</anchor>です。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">共有キャッシュ</anchor>は普通 (必ずではありませんが) <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">中間器</anchor>の一部として動作しています。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src></p><section><h1>仕様書</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <cite xml:lang="en">RFC 7234 - Hypertext Transfer Protocol (HTTP/1.1): Caching</cite> (<time>2014-09-11 10:19:59 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc7234#section-1">https://tools.ietf.org/html/rfc7234#section-1</anchor-external></li></ul></refs></section><section><h1>プロトコル</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">共有キャッシュ</anchor>で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ可能</anchor>であることを示す
<code class="HTTP" xml:lang="en">Cache-Control: public</code> があります。</p></section><section><h1>処理</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">共有キャッシュ</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">私的キャッシュ</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">蓄積</anchor>できる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応答</anchor>の決定方法が異なります。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">詳しくは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ可能性</anchor>を参照。</comment-p></section><section><h1>関連</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">共有キャッシュ</anchor>ではない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">私的キャッシュ</anchor>といいます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2616</anchor> 世代までは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ串</anchor>という用語がありましたが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 723x</anchor> 世代では使われなくなっています。
<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ串<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="em">cache proxy</rt></rubyb></dfn>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ</anchor>を有する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">串</anchor>のことを指しているようです。
例外もあるでしょうが、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ串</anchor>は通常<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">共有キャッシュ</anchor>であり、
仕様上の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ串</anchor>も<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">共有キャッシュ</anchor>のことを言っているのが普通であると思われます。</p></section><section><h1>メモ</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">共有キャッシュ</anchor>は90年代にはしばしば利用されていました。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">企業</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">学校</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ISP</anchor> などがそれぞれの所属者に自身の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュサーバー</anchor>を提供し、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>の便宜を図っていました。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュサーバー</anchor>を利用したネットワーク転送高速化の研究も盛んに行われました。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> 
現在でも組織等のネットワークで利用されることがあり、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> の仕様上も<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">共有キャッシュ</anchor>の存在が前提とされていますが、
実際には近年の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webサイト</anchor>は必ずしも<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">共有キャッシュ</anchor>のもとで適切に動作する状態にはなっておらず、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webアプリケーション</anchor>で他の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ログイン</anchor>状態の画面が表示されてしまうおそれがあるなど、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">セキュリティー</anchor>的にも問題があると考えられています。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MITM</anchor> も参照。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> 特定の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webサイト</anchor>の提供者が自身の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">鯖</anchor>側の設備の一部として (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">逆串</anchor>として、
あるいはそれより<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アプリケーション鯖</anchor>側の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">中間器</anchor>として) <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">共有キャッシュ</anchor>機能を持つ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ鯖</anchor>を使う構成は、
負荷分散その他の理由で現在でもよく用いられています。このような<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">共有キャッシュ</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webサイト</anchor>専用のものを用意する場合もあれば、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ鯖</anchor>を提供するサービスを利用する場合もあります。
いずれの場合でも当該<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アプリケーション</anchor>の開発・運営者の管理下にありますから、
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;4</anchor-internal> のような問題は起こりません。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ鯖</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アプリケーション鯖</anchor>の間は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor>
で通信しますから、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アプリケーション鯖</anchor>は (その提供するサービスの成長や設計上の理由などにより)
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ鯖</anchor>を挟んだり、除去したりするのが比較的簡単です。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アプリケーション鯖</anchor>から<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ鯖</anchor>への<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ</anchor>に関する指示は、
<code xmlns="http://www.w3.org/1999/xhtml" class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Cache-Control:</anchor></code> など <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> 
の仕組みに基づき行うこともあれば、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">拡張子</anchor>など独自の方法を使うこともあります。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アプリケーション鯖</anchor>側から<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ鯖</anchor>に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ</anchor>を更新させるためのダミーの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>を送信したり、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">query</anchor> に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ</anchor>を回避するための文字列を付与したりといった<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キャッシュ</anchor>制御のための
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">hack</anchor> が用いられることもよくあります。</comment-p></section></body></html>