(58)【調査した分野】(Int.Cl.,DB名)
Webコンテンツを保存するWebサーバとネットワークを介して接続され、クライアントが前記Webサーバに要求したWebコンテンツにリンクするWebコンテンツの先読みを制御するWebコンテンツ先読み制御装置であって、
前記クライアントからのWebコンテンツ取得要求と、前記先読みを行う先読み処理部から送信された先読み要求とを受信するクライアント接続部と、
前記Webコンテンツ取得要求及び前記先読み要求に対する応答として前記Webサーバから取得したWebコンテンツを保存するとともに当該応答を送信するキャッシュ管理部と、
前記キャッシュ管理部から送信された前記応答を受信し、当該応答のうち前記Webコンテンツ取得要求に対する応答を複製する応答複製部と、
前記複製されたWebコンテンツ取得要求に対する応答を前記先読み処理部に送信する先読み接続部とを備え、
前記クライアント接続部及び前記クライアント間の通信と、前記クライアント接続部及び前記先読み処理部間の通信と、前記先読み接続部及び前記先読み処理部間の通信とは、それぞれ、同じ通信プロトコルにより行われるWebコンテンツ先読み制御装置。
前記応答複製部は、前記種別情報に基づいて、前記受信した応答が先読み要求に対する応答でないと判定した場合、当該受信した応答を複製する請求項2記載のWebコンテンツ先読み制御装置。
前記キャッシュ管理部は、前記第2先読み要求に対する応答を保存していれば、前記保存している応答を前記応答複製部に送信する請求項6記載のWebコンテンツ先読み制御装置。
前記Webコンテンツ取得要求及び前記先読み要求を前記Webサーバに送信することで、前記Webサーバからの応答を取得し、取得した応答を前記キャッシュ管理部に送信するサーバ接続部を更に備える請求項1〜11のいずれかに記載のWebコンテンツ先読み制御装置。
コンピュータを、Webコンテンツを保存するWebサーバとネットワークを介して接続され、クライアントが前記Webサーバに要求したWebコンテンツにリンクするWebコンテンツの先読みを制御するWebコンテンツ先読み制御装置として機能させるWebコンテンツ先読み制御プログラムであって、
前記コンピュータを、
前記クライアントからのWebコンテンツ取得要求と、前記先読みを行う先読み処理部から送信された先読み要求とを受信するクライアント接続部と、
前記Webコンテンツ取得要求及び前記先読み要求に対する応答として前記Webサーバから取得したWebコンテンツを保存するとともに当該応答を送信するキャッシュ管理部と、
前記キャッシュ管理部から送信された前記応答を受信し、当該応答のうち前記Webコンテンツ取得要求に対する応答を複製する応答複製部と、
前記複製されたWebコンテンツ取得要求に対する応答を前記先読み処理部に送信する先読み接続部として機能させ、
前記クライアント接続部及び前記クライアント間の通信と、前記クライアント接続部及び前記先読み処理部間の通信と、前記先読み接続部及び前記先読み処理部間の通信とは、それぞれ、同じ通信プロトコルにより行われるWebコンテンツ先読み制御プログラム。
Webコンテンツを保存するWebサーバとネットワークを介して接続され、クライアントが前記Webサーバに要求したWebコンテンツにリンクするWebコンテンツの先読みを制御するWebコンテンツ先読み制御装置におけるWebコンテンツ先読み制御方法であって、
前記クライアントからのWebコンテンツ取得要求と、前記先読みを行う先読み処理部から送信された先読み要求とを受信するクライアント接続ステップと、
前記Webコンテンツ取得要求及び前記先読み要求に対する応答として前記Webサーバから取得したWebコンテンツを保存するとともに当該応答を送信するキャッシュ管理ステップと、
前記キャッシュ管理ステップにより送信された前記応答を受信し、当該応答のうち前記Webコンテンツ取得要求に対する応答を複製する応答複製ステップと、
前記複製されたWebコンテンツ取得要求に対する応答を前記先読み処理部に送信する先読み接続ステップとを備え、
前記クライアント接続ステップを行う前記クライアント接続部及び前記クライアント間の通信と、前記クライアント接続部及び前記先読み処理部間の通信と、前記先読み接続ステップを行う前記先読み接続部及び前記先読み処理部間の通信とは、それぞれ、同じ通信プロトコルにより行われるWebコンテンツ先読み制御方法。
【発明を実施するための形態】
【0010】
(本発明に係る一形態を得るに至った経緯)
図19は、前述した特許文献2に記載されるような従来のWebコンテンツ先読み制御装置のブロック図である。Webコンテンツ先読み制御装置は、先読み代理サーバ1502及び情報蓄積サーバ1503を備える。サーバ1501はWebサーバであり、インターネットを介して先読み代理サーバ1502と接続されている。先読み代理サーバ1502は、インターネットやLANに比べて低速な超遅延ネットワークを介して情報蓄積サーバ1503と接続されている。情報蓄積サーバ1503はLANを介してクライアント1512と接続されている。
【0011】
情報蓄積サーバ1503は、クライアント1512のWeb情報を取得するための要求データを受け付け、サーバ1501からWeb情報を取得してクライアント1512に返すプロキシサーバである。ここで、情報蓄積サーバ1503は、先読み代理サーバ1502がサーバ1501から先読みしたWeb情報を予めキャッシュしている。そのため、情報蓄積サーバ1503は、クライアント1512から要求データが発行された場合、該当するWeb情報をキャッシュしていれば、そのWeb情報をクライアント1512に速やかに送信できる。
【0012】
以下、具体的に説明する。
図19において、クライアント1512がWeb情報を取得するための要求データを発行すると、情報蓄積サーバ1503の要求データ受信部1505は、ネットワークインタフェース部1504を介してその要求データを受信する。そして、要求データ比較部1508は、その要求データと同じ要求データが要求データ蓄積部1509に蓄積されているか否かを判定する。
【0013】
要求データ比較部1508は、同じ要求データが要求データ蓄積部1509に蓄積されていると判定すると、Web情報蓄積部1507に要求データが要求するWeb情報が格納されているかを問い合わせ、格納されていれば、当該Web情報をクライアント1512に送信するようにWeb情報送出部1511に命令する。命令を受けたWeb情報送出部1511は、Web情報蓄積部1507よりWeb情報を取り出し、ネットワークインタフェース部1504を用いてクライアント1512に送信する。
【0014】
一方、要求データ比較部1508は、同じ要求データが要求データ蓄積部1509に蓄積されていないと判定すると、要求データ送出部1510及びネットワークインタフェース部1504を介して、その要求データを先読み代理サーバ1502に送信する。要求データを受信した先読み代理サーバ1502は、その要求データによって取得されるWeb情報に関連するWeb情報をサーバ1501から先読みし、先読みしたWeb情報を情報蓄積サーバ1503に一括して送信する。
【0015】
以上のように従来のWebコンテンツ先読み制御装置では、プロキシサーバである情報蓄積サーバ1503は、先読み代理サーバ1502とは完全に独立している。しかしながら、情報蓄積サーバ1503は、クライアント1512に対してはサーバとして機能すればよいが、先読み代理サーバ1502に対してはクライアントとして機能しなければならない。よって、情報蓄積サーバ1503は、先読み代理サーバ1502と通信するために独自の通信手段を用いる必要が生じ、これを実現するために、ネットワークインタフェース部1504を特別なインタフェースで実装しなければならない。よって、従来のWebコンテンツ先読み制御装置では、既存のプロキシサーバに対して、大幅な変更をしなければ、情報蓄積サーバ1503を実現できないという課題がある。
【0016】
そこで、本発明者は、この課題を解決するために、以下に示す実施の形態に開示する手法を見出した。以下、本発明の実施の形態について、図面を参照しながら説明する。
【0017】
(実施の形態)
図1は、実施の形態に係るWebコンテンツ先読み制御装置100を含むシステムの全体構成の一例を示すブロック図である。
【0018】
Webコンテンツ先読み制御装置100は、端末130及びWebサーバ140のそれぞれとネットワークを介して接続されている。ここで、Webコンテンツ先読み制御装置100及びWebサーバ140間のネットワークとしては、例えば、インターネットが採用される。また、Webコンテンツ先読み制御装置100及び端末130間のネットワークとしては、例えば、LAN(Local Area Network)であってもよいし、インターネットであってもよい。いずれにしても、ネットワークとしては、TCP/IP等のインターネットのプロトコルを採用するものであれば、どのようなネットワークが採用されてもよい。
【0019】
端末130は、例えば、計算機により構成され、クライアント131を備える。クライアント131は、端末130のプロセッサが所定のプログラムを実行することで実現され、利用者の要求に応じてHTTP(Hypertext Transfer Protocol)要求を生成して送信する機能と、HTTP応答(応答の一例)を解釈して利用者に提示する機能とを有する。クライアント131の一例としてWebブラウザが挙げられる。ここで、クライアント131は、HTTP応答を解釈して画像データや音声データを生成し、端末130の表示部に表示したり、音声をスピーカから出力したりすることで、HTTP応答を利用者に提示すればよい。
【0020】
Webサーバ140は、例えば、計算機により構成され、オリジナルのWebコンテンツを保持し、クライアント131から送信されるHTTP要求を受信し、受信したHTTP要求を解釈してHTTP要求が取得を要求するWebコンテンツを特定し、特定したWebコンテンツをHTTP応答としてクライアント131に返信する。
【0021】
Webコンテンツ先読み制御装置100は、例えば、計算機により構成され、クライアント131からWebサーバ140へのWebアクセスを受け付けると、クライアント131を代理してWebサーバ140にアクセスし、Webサーバ140からHTTP応答を取得してクライアント131に送信する。また、Webコンテンツ先読み制御装置100は、Webサーバ140からのHTTP応答として取得したWebコンテンツにリンクするWebコンテンツの先読みを行う。
【0022】
Webコンテンツ先読み制御装置100は、情報蓄積部110及び先読み処理部120を備える。
【0023】
情報蓄積部110は、クライアント131からWebコンテンツ取得要求又は先読み処理部120から先読み要求を受信すると、Webサーバ140にアクセスし、Webサーバ140からHTTP応答を取得する。情報蓄積部110は、Webサーバ140からHTTP応答として取得したWebコンテンツを保存するとともに、必要に応じてクライアント131及び先読み処理部120に送信する。このとき、情報蓄積部110は、クライアント131、Webサーバ140、及び先読み処理部120のそれぞれと、HTTPにより通信する。本実施の形態では、情報蓄積部110は、プロキシサーバとして機能する。
【0024】
情報蓄積部110は、サーバ接続部111、キャッシュ管理部112、クライアント接続部113、応答複製部114、及び先読み接続部115を備える。
【0025】
サーバ接続部111は、Webサーバ140との通信接続を管理し、HTTPメッセージをWebサーバ140と送受信する機能を有する。具体的には、キャッシュ管理部112からHTTP要求を受信してWebサーバ140に送信するとともに、Webサーバ140からHTTP応答を受信してキャッシュ管理部112に送信する。なお、HTTPメッセージとしては、例えば、HTTP要求と、HTTP要求に対する応答であるHTTP応答とが含まれる。HTTPメッセージとしては、典型的にはRFC2616の規定に則したメッセージが採用される。
【0026】
Webコンテンツ先読み制御装置100はメインメモリまたはハードディスクなどの記憶装置(図示せず)を備え、この記憶装置には、例えば専用のキャッシュ領域が設けられている。
【0027】
キャッシュ管理部112は、Webサーバ140から取得したHTTP応答をキャッシュ領域に保存する。キャッシュ管理部112は、クライアント接続部113からHTTP要求を受信すると、キャッシュ領域に保存したHTTP応答の中からHTTP要求に対するHTTP応答を検索する。検索の結果、受信したHTTP要求に対するHTTP応答が存在する場合、キャッシュ管理部112は、そのHTTP応答を応答複製部114に送信する。一方、受信したHTTP要求に対するHTTP応答が存在しない場合、キャッシュ管理部112は、受信したHTTP要求をサーバ接続部111に送信する。
【0028】
クライアント接続部113は、HTTPメッセージを、クライアント131と、先読み処理部120とのそれぞれの間で送受信する機能を有する。具体的には、クライアント接続部113は、クライアント131から通常のHTTP要求(Webコンテンツ取得要求の一例)と、先読み処理部120から先読みに関するHTTP要求とを受信し、キャッシュ管理部112に送信する。このとき、クライアント接続部113は、HTTP要求を、キャッシュ管理部112に直接送信してもよいし、応答複製部114を介して送信してもよい。応答複製部114を介して送信を行う場合、応答複製部114は、受信したHTTP要求を処理することなくそのままキャッシュ管理部112へ送信する。
【0029】
また、クライアント接続部113は、応答複製部114から、通常のHTTP応答を受信し、クライアント131及び先読み処理部120に送信する。
【0030】
また、クライアント接続部113は、クライアント131にHTTPメッセージを送受信する際のクライアント131との通信接続を管理すると共に、先読み処理部120にHTTPメッセージを送受信する際の先読み処理部120との通信接続を管理する。具体的にはクライアント接続部113は、HTTPメッセージを送受信する際に確立される通信接続を表す接続オブジェクトを用いてクライアント131及び先読み処理部120との通信接続を管理する。接続オブジェクトの具体例については後述する。
【0031】
応答複製部114は、キャッシュ管理部112からHTTP応答を受信し、クライアント接続部113に送信する。このとき、応答複製部114は、受信したHTTP応答が通常のHTTP要求に対する通常のHTTP応答である場合、この通常のHTTP応答を複製し、先読み接続部115に送信する。つまり、応答複製部114は、キャッシュ管理部112から通常のHTTP応答を受信すると、通常のHTTP応答をクライアント接続部113に送信すると共に、複製した通常のHTTP応答を先読み接続部115に送信する。これにより、通常のHTTP応答がクライアント接続部113を介してクライアント131に送信され、クライアント131は受信した通常のHTTP応答を表示部に表示する。また、通常のHTTP応答が先読み接続部115を介して先読み処理部120に送信され、先読み処理部120はHTTP応答のリンク先を解析する。
【0032】
一方、受信したHTTP応答が、先読みに関するHTTP要求に対するHTTP応答(以下、「先読みに関するHTTP応答」と称する。)である場合、応答複製部114は、この先読みに関するHTTP応答を複製せず、先読み接続部115に送信しない。これにより、先読みされたHTTP応答に対して更に先読みが行われ、先読みの連鎖が無限に続くことを防止できる。
【0033】
なお、応答複製部114は、クライアント接続部113からHTTP要求を受信してもよいし、受信しなくてもよい。応答複製部114は、クライアント接続部113からHTTP要求を受信する場合は、そのHTTP要求を処理することなくそのままキャッシュ管理部112へ送信すればよい。
【0034】
先読み接続部115は、応答複製部114から受信した通常のHTTP応答を先読み処理部120へ送信する。また、先読み接続部115は、先読み処理部120にHTTP応答を送信する際の先読み処理部120との通信接続を管理する。ここで、先読み接続部115は、先読み接続部115及び先読み処理部120間で確立される通信接続を表す接続オブジェクトを用いて通信接続を管理すればよい。接続オブジェクトの具体例については後述する。
【0035】
また、本実施の形態においては、クライアント接続部113と先読み接続部115とは異なる機能ブロックとしているが、先読み接続部115は、先読みに関するHTTP応答を先読み処理部120に送信する以外は、クライアント接続部113と同様である。そのため、クライアント接続部113に先読み接続部115の機能を持たせ、先読み接続部115をWebコンテンツ先読み制御装置100から省いてもよい。
【0036】
以上に説明したWebコンテンツ先読み制御装置100は、クライアント接続部113及びクライアント131間の通信と、クライアント接続部113及び先読み処理部120間の通信と、先読み接続部115及び先読み処理部120間の通信とが同じ通信プロトコル(例えば、前述したHTTP)を用いて行われる。
【0037】
そのため、サーバ接続部111、キャッシュ管理部112、及びクライアント接続部113を備える従来のプロキシサーバに、応答複製部114及び先読み接続部115を追加することで情報蓄積部110を実現できる。更に、プロキシサーバは、先読み処理部120を独立したプロセスとして取り扱い、クライアント131と同様にクライアントとして取り扱うことができる。したがって、従来のプロキシサーバに対する変更量を小さくして、Webコンテンツ先読み制御装置100を構築できる。
【0038】
なお、情報蓄積部110及び先読み処理部120は、計算機上で独立して動作するプロセスとして実現できる。そして、これらのプロセスは所定の通信プロトコルを用いて相互に通信できる。所定の通信プロトコルとしてはHTTPを採用すればよい。
【0039】
先読み処理部120は、先読み接続部115から受信した、先読みに関するHTTP応答を解析し、先読みに関するHTTP要求をクライアント接続部113に送信する。先読み処理部120は、リンク処理部121及び要求生成部122を備える。
【0040】
リンク処理部121は、先読み接続部115から受信したHTTP応答内に含まれるリンクを抽出し、抽出したリンクを示すリンク情報を要求生成部122に渡す。リンク処理部121は、HTTP応答内に複数のリンクが含まれる場合は、それら複数のリンクを抽出する。
【0041】
要求生成部122は、リンク処理部121から受け取ったリンク情報に基づいて、そのリンク情報が示すリンクへのHTTP要求を生成し、クライアント接続部113に送信する。要求生成部122は、リンク処理部121から複数のリンク情報を受け取った場合、1つのリンクに対して1つのHTTP要求を生成する。
【0042】
図2は、クライアント接続部113及び先読み接続部115が管理する接続オブジェクトのデータ構成の一例を示す図である。接続オブジェクトは、「ファイルディスクリプタ」のフィールドを備える。「ファイルディスクリプタ」のフィールドには、通信接続の識別子であるファイルディスクリプタが登録されている。
図2の例では、ファイルディスクリプタのフィールドには「50」が登録されている。
【0043】
図3は、情報蓄積部110がHTTP要求を内部で処理するための要求オブジェクトのデータ構成の一例を示す図である。要求オブジェクトは、「ヘッダ」、「ボディ」、及び「接続オブジェクト」のフィールドを備える。「ヘッダ」のフィールドにはHTTP要求を構成するヘッダ部を保持するメモリアドレスが登録されている。「ボディ」のフィールドにはHTTP要求を構成するボディ部を保持するメモリアドレスが登録されている。「接続オブジェクト」のフィールドにはHTTP要求を受信した通信接続に対してHTTP応答を送信するために、その通信接続を示す接続オブジェクトのポインタが登録されている。
図3の例では、「ヘッダ」のフィールドには、ヘッダ部を保持するメモリアドレスとして「0x800F0100」が登録され、「ボディ」のフィールドにはボディ部を保持するメモリアドレスとして「0x800F1300」が登録され、「接続オブジェクト」のフィールドには接続オブジェクトへのポインタとして「0x90117720」が登録されている。
【0044】
図4は、キャッシュ管理部112が管理するキャッシュオブジェクト401のデータ構成の一例を示す図である。キャッシュオブジェクト401は、「要求オブジェクト」、「応答ヘッダ」、「応答ボディ」、及び「メッセージ処理」のフィールドを備える。「要求オブジェクト」のフィールド402には、要求オブジェクトリスト404へのポインタが登録されている。「応答ヘッダ」のフィールドにはWebサーバ140から送信されたHTTP応答を構成するヘッダ部へのポインタが登録されている。「応答ボディ」のフィールドにはHTTP応答を構成するボディ部へのポインタが登録されている。「メッセージ処理」のフィールド403には、手続きリスト409へのポインタが登録されている。
【0045】
図4の例では、「要求オブジェクト」のフィールドには、要求オブジェクトリスト404へのポインタとして「0x90106A00」が登録され、「応答ヘッダ」のフィールドには応答ヘッダのメモリアドレスとして「0x8010C000」が登録され、「応答ボディ」のフィールドには応答ボディのメモリアドレスとして「0x8010C800」が登録され、「メッセージ処理」のフィールドには、手続きリスト409へのポインタとして「0x90100234」が登録されている。
【0046】
要求オブジェクトリスト404は、キャッシュオブジェクト401の「要求オブジェクト」のフィールド402に登録されたポインタによってキャッシュオブジェクト401と関連付けられている。
図4の例では、要求オブジェクトリスト404は、要求オブジェクト405及び要求オブジェクト406の2つの要求オブジェクトを含んでおり、これら2つの要求オブジェクトがキャッシュオブジェクト401と関連付けられている。また、
図4の例では、要求オブジェクト405及び要求オブジェクト406には、それぞれ、接続オブジェクト407及び接続オブジェクト408へのポインタが登録されている。これにより、要求オブジェクト405は接続オブジェクト407と関連付けられ、要求オブジェクト406は接続オブジェクト408と関連付けられている。
【0047】
また、
図4の例では、手続きリスト409は、キャッシュオブジェクト401の「メッセージ処理」のフィールド403に登録されたポインタによってキャッシュオブジェクト401と関連付けられている。手続きリスト409は、サーバ要求処理及び応答処理が登録されている。サーバ要求処理は要求オブジェクト405、406に示されるHTTP要求に対するHTTP応答をWebサーバ140から取得するための処理である。応答処理は要求オブジェクト405、406に示されるHTTP要求に対するHTTP応答をクライアント131及び先読み処理部120に送信するための処理である。
【0048】
図5は、実施の形態に係るWebコンテンツ先読み制御装置100を含むシステム全体の動作の一例を表すシーケンス図である。
【0049】
クライアント131、先読み処理部120、情報蓄積部110、及びWebサーバ140は、
図1に示すように構成されており、互いにHTTPで通信するものとする。
図5の例では、Webサーバ140は「www.example.com」のドメイン名によって識別され、クライアント131は、Webサーバ140に格納された、ファイル名が「index.html」のコンテンツにアクセスするものとする。
【0050】
また、「index.html」は、「www.example.com/example.mov」へのリンクを含むものとする。また、
図5の例で示す動作の開始前には、「index.html」及び「example.mov」は、情報蓄積部110に保存されていないものとする。
【0051】
まず、クライアント131は、「www.example.com/index.html」で参照されるWebコンテンツを取得するための通常のHTTP要求を情報蓄積部110に送信する(ステップ501)。
【0052】
情報蓄積部110は、自身が管理するキャッシュの中から該当するWebコンテンツを検索する。
図5の例では、「index.html」のエントリが存在しないため、情報蓄積部110は、「www.example.com」で参照されるWebサーバ140へ通常のHTTP要求を転送する(ステップ502)。
【0053】
Webサーバ140には「index.html」で参照されるWebコンテンツが存在するため、Webサーバ140は、要求が成功した旨のステータスコード(200 OK)とともに「index.html」を情報蓄積部110に返信する(ステップ503)。
【0054】
情報蓄積部110は、Webサーバ140から受信したWebコンテンツ(index.html)をWebコンテンツ先読み制御装置100が有するメインメモリまたはハードディスクなどの記憶装置(図示せず)に設けた専用のキャッシュ領域に保存し、このWebコンテンツをクライアント131に返信する(ステップ504)。
【0055】
このとき、情報蓄積部110は、ステップ503で受信したWebコンテンツを複製し、先読み処理部120へも送信する(ステップ505)。
【0056】
先読み処理部120は、受信したコンテンツのリンク(www.example.com/example.mov)を抽出し、先読みに関するHTTP要求を生成し、情報蓄積部110へ送信する(ステップ506)。
【0057】
情報蓄積部110は、先読み処理部120から先読み要求に関するHTTP要求を受信すると、クライアント131から送信された通常のHTTP要求と同様に自身が管理するキャッシュ領域を検索する。
図5の例では、「example.mov」のエントリが見つからないため、情報蓄積部110は、Webサーバ140へ先読みに関するHTTP要求を転送する(ステップ507)。
【0058】
Webサーバ140には「example.mov」で参照されるコンテンツが存在するため、Webサーバ140は、要求が成功した旨のステータスコード(200 OK)とともに「example.mov」で参照されるWebコンテンツを情報蓄積部110に返信する(ステップ508)。
【0059】
情報蓄積部110は、Webサーバ140から受信したコンテンツ(example.mov)を自身が管理するキャッシュ領域に保存する。なお、ステップ506において情報蓄積部110が受信するHTTP要求は先読みに関するHTTP要求であるため、ステップ508が終了した時点では、情報蓄積部110は、HTTP要求に成功した旨の返答を先読み処理部120に送信しない。但し、これは一例であり、ステップ508が終了した時点で、情報蓄積部110は、当該返答を先読み処理部120に送信してもよい。
【0060】
次に、クライアント131は、「www.example.com/example.mov」で参照されるコンテンツを取得するための通常のHTTP要求を情報蓄積部110に送信する(ステップ509)。この通常のHTTP要求は、例えば、ステップ504でクライアント131が受信した「index.html」に含まれる「www.example.com/example.mov」へのリンクを利用者が入力装置を用いてクリックすることで行われる。
【0061】
情報蓄積部110は、自身が管理するキャッシュ領域を検索する。この場合、先読み処理部120がステップ506において、先読みに関するHTTP要求を送信したため、Webコンテンツ(example.mov)がキャッシュされている。そのため、情報蓄積部110は、Webサーバ140にHTTP要求を転送せず、キャッシュされているWebコンテンツをクライアント131に返信する(ステップ510)。
【0062】
図5の例では、以上のような動作により、クライアント131から発行される「www.example.com/index.html」を取得するためのHTTP要求に伴って、「www.example.com/example.mov」で参照されるWebコンテンツが先読みされて、情報蓄積部110にキャッシュされる。そのため、「www.example.com/example.mov」で参照されるWebコンテンツは、このWebコンテンツを取得するための通常のHTTP要求がクライアント131から発行される前に情報蓄積部110にキャッシュされる。
【0063】
図6A、
図6Bは、先読み処理部120の生成する情報蓄積部110へのHTTP要求の一例を示す図である。
【0064】
図6Aは、先読み接続部115及び先読み処理部120間の通信接続を確立するための先読み要求メッセージ601(第1先読み要求)の一例を示す図である。先読み要求メッセージ601は、先読み接続部115との通信接続を確立するために、先読み処理部120がクライアント接続部113に送信するHTTP要求である。先読み要求メッセージ601は、クライアント131から送信される通常のHTTP要求や、
図6Bに示すWebコンテンツを先読みするための先読み要求メッセージ602と区別される必要がある。RFC2616で定義されるHTTP要求の形式では、先読み要求メッセージ601であることを示す文字列をヘッダ部に定義できる。本実施の形態では、先読み要求メッセージ601であることを示す文字列として、例えば、「x−prefetch−connect: open」を用いる。一方、クライアント131からの通常のHTTP要求や、後述する先読み要求メッセージ602のヘッダ部には、「x−prefetch−connect: open」は記述されない。これにより、クライアント接続部113は、「x−prefetch−connect: open」の有無により、先読み要求メッセージ601を区別できる。なお、先読み要求メッセージ601を区別するための文字列である「x−prefetch−connect: open」は一例にすぎず、他の要求メッセージと区別できる文字列であればどのような文字列が採用されてもよい。
【0065】
図6Bは、Webコンテンツを先読みするための先読み要求メッセージ602の一例を示す図である。先読み要求メッセージ602は、先読み処理部120が情報蓄積部110に対して先読みを指示するために送信するHTTP要求である。なお、先読み要求メッセージ602は、先読み要求メッセージ601により先読み処理部120及び先読み接続部115間の通信接続が確立された後に先読み処理部120からクライアント接続部113に送信される。
【0066】
先読み要求メッセージ602は、クライアント131から送信される通常のHTTP要求と区別される必要がある。RFC2616で定義されるHTTP要求の形式では、先読み要求メッセージ602であることを示す文字列をHTTPヘッダに定義できる。本実施の形態では、先読み要求メッセージ602であることを示すHTTPヘッダの文字列として「x−prefetch−response: false」(種別情報の一例)を用いる。一方、クライアント131からの通常のHTTP要求のヘッダ部には、「x−prefetch−response: false」は記述されない。これにより、応答複製部114は、「x−prefetch−response: false」の有無により、先読み要求メッセージ602を区別できる。なお、先読み要求メッセージ602を区別するための文字列である「x−prefetch−response: false」は一例にすぎず、他の要求メッセージと区別できる文字列であればどのような文字列が採用されてもよい。
【0067】
情報蓄積部110は、
図6Bに示す先読み要求メッセージ602を受信した場合、クライアント131から送信された通常のHTTP要求を受信した場合と同様、キャッシュ管理部112に検索処理を実行させたり、Webサーバ140にHTTP要求を送信したりするが、先読み要求メッセージ602に対するHTTP応答を複製しない。したがって、先読み処理部120が、先読み要求メッセージ602に対するHTTP応答から更に先読み要求メッセージ602を生成するといった処理を繰り返すことを防止できる。そのため、先読みの連鎖が無限に続くことを防止でき、必要以上に先読みが行われることが防止され、Webコンテンツ先読み制御装置100の処理負担を軽減できる。
【0068】
図7は、キャッシュ管理部112が行う要求処理の一例を示すフローチャートである。
【0069】
キャッシュ管理部112は、クライアント接続部113を介してHTTP要求を受信すると、
図3に示す要求オブジェクトを生成し、当該HTTP要求の内容を、生成した要求オブジェクトの「ヘッダ」及び「ボディ」のそれぞれのフィールドに登録する(ステップ701)。具体的には、キャッシュ管理部112は、HTTP要求を構成するヘッダ部及びボディ部をメモリに保存し、ヘッダ部を保存するメモリアドレスを「ヘッダ」のフィールドに登録し、ボディ部を保存するメモリアドレスを「ボディ」のフィールドに登録する。
【0070】
次に、キャッシュ管理部112は、クライアント接続部113がHTTP要求を受信した際の通信接続を示す接続オブジェクトを、そのHTTP要求に対応する要求オブジェクトに登録する(ステップ702)。
図4において、要求オブジェクト405が生成されたとすると、キャッシュ管理部112は、要求オブジェクト405の「接続オブジェクト」のフィールドに接続オブジェクト407のポインタを登録する。
【0071】
次に、キャッシュ管理部112は、受信したHTTP要求が先読み要求メッセージ601であるか否かを判定する(ステップ703)。具体的には、キャッシュ管理部112は、受信したHTTP要求に対応する要求オブジェクトの「ヘッダ」のフィールドに登録されたメモリアドレスに保存されたヘッダ部を読み出し、読み出したヘッダ部に、
図6Aで示した「x−prefetch−connect: open」が記述されているか否かにより、受信したHTTP要求が先読み要求メッセージ601であるか否かを判定する。
【0072】
受信したHTTP要求のヘッダ部に「x−prefetch−connect: open」が含まれている場合(ステップ703がNo)、キャッシュ管理部112は、受信したHTTP要求が先読み要求メッセージ601であると判定し、応答複製部114に複製準備処理を依頼する(ステップ704)。そして、複製準備処理が終了すると処理が終了される。これにより、先読み接続部115及び先読み処理部120間の通信接続が確立される。
【0073】
一方、受信したHTTP要求のヘッダ部に「x−prefetch−connect: open」が含まれていない場合(ステップ703がYes)、キャッシュ管理部112は、受信したHTTP要求が先読み要求メッセージ601でないと判定し、処理をステップ705に進める。
【0074】
次に、キャッシュ管理部112は、ステップ701で生成した要求オブジェクトを用いてキャッシュ領域に保存されたキャッシュオブジェクトを検索する(ステップ705)。
【0075】
キャッシュ管理部112は、要求オブジェクトに対応するキャッシュオブジェクト401がキャッシュ領域に保存されている場合(ステップ705がYes)、当該キャッシュオブジェクト401に応答処理を登録する(ステップ708)。具体的には、キャッシュ管理部112は、
図4に示すようにキャッシュオブジェクト401の「メッセージ処理」のフィールド403に登録されたポインタが指示する手続きリスト409に応答処理を登録する(ステップ708)。
【0076】
なお、ステップ708において、受信したHTTP要求のヘッダ部に「x−prefech−response: false」が含まれており、そのHTTP要求が先読み要求メッセージ602である場合、クライアント131及び先読み処理部120にHTTP応答を送信する必要がないため、キャッシュ管理部112は、応答処理の登録を行わない。つまり、ステップ708において、キャッシュ管理部112は、受信したHTTP要求が通常のHTTP要求である場合にのみ応答処理を登録する。
【0077】
一方、要求オブジェクトに対応するキャッシュオブジェクトがキャッシュ領域に保存されていない場合(ステップ705がNo)、キャッシュ管理部112は、キャッシュオブジェクト401を新規に作成する(ステップ706)。そして、キャッシュ管理部112は、新規に作成したキャッシュオブジェクト401の「メッセージ処理」のフィールド403に登録されたポインタが指示する手続きリスト409にサーバ要求処理を登録(ステップ707)した後、要求オブジェクトが通常のHTTP要求であれば、この手続きリスト409に応答処理を登録する(ステップ708)。
【0078】
次に、キャッシュ管理部112は、応答複製部114に複製処理を依頼し、その完了を待つ(ステップ709)。
【0079】
次に、キャッシュ管理部112は、ステップ708で応答処理を登録したキャッシュオブジェクト401について、「メッセージ処理」のフィールド403に登録されたポインタが指示する手続きリスト409に登録されている処理を登録された順に実行する(ステップ710)。例えば、ステップ705においてキャッシュ検索にミスした場合、キャッシュ管理部112は、サーバ要求処理と応答処理とを順に実行し、キャッシュ検索がヒットした場合、キャッシュ管理部112は、応答処理のみを実行する。
【0080】
図8は、情報蓄積部110がWebサーバ140からWebコンテンツを取得するためのサーバ要求処理の一例を示すフローチャートである。
【0081】
サーバ要求処理は、キャッシュにWebサーバ140からのHTTP応答が保存されていない場合に実行される。したがって、この処理が実行されるときは、
図7のステップ701で生成された要求オブジェクトのHTTP応答がキャッシュオブジェクト401に登録されていない状態にある。なお、サーバ要求処理は
図7のステップ710で実行される処理である。
【0082】
まず、サーバ接続部111は、キャッシュ管理部112から要求オブジェクトを受信し、Webサーバ140からWebコンテンツを取得するためのHTTP要求を生成する(ステップ801)。
【0083】
次に、サーバ接続部111は、生成したHTTP要求をWebサーバ140へ送信し、Webサーバ140からのHTTP応答を待つ(ステップ802)。
【0084】
次に、サーバ接続部111は、Webサーバ140からのHTTP応答を受信すると(ステップ803)、キャッシュ管理部112は、そのHTTP応答の内容をキャッシュオブジェクト401に書き込む(ステップ804)。
図4の例では、キャッシュ管理部112は、まず、HTTP応答をメモリに保存する。そして、キャッシュ管理部112は、キャッシュオブジェクト401の「応答ヘッダ」のフィールドにHTTP応答のヘッダ部を保存するメモリアドレスを登録し、「応答ボディ」のフィールドにHTTP応答のボディ部を保存するメモリアドレスを登録することで、HTTP応答の内容をキャッシュオブジェクト401に書き込む。
【0085】
次に、キャッシュ管理部112は、HTTP応答の内容を書き込んだキャッシュオブジェクトをキャッシュ領域に登録し(ステップ805)、処理を終了する。
【0086】
図9は、情報蓄積部110からクライアント131への応答処理の一例を示すフローチャートである。なお、応答処理は、
図7のステップ710で実行される処理である。
【0087】
以下のステップは、キャッシュオブジェクト401に関連付けられた要求オブジェクトリスト404に含まれる要求オブジェクトそれぞれに適用される。
【0088】
キャッシュ管理部112は、要求オブジェクトリスト404に含まれる要求オブジェクトをそれぞれ取得し(ステップ901)、取得した要求オブジェクトのそれぞれに関連付けられた接続オブジェクトを取得する(ステップ902)。
図4の例では、要求オブジェクトリスト404には要求オブジェクト405、406が含まれているため、キャッシュ管理部112は、要求オブジェクト405に関連付けられた接続オブジェクト407と、要求オブジェクト406に関連付けられた接続オブジェクト408とを取得する。
【0089】
次に、キャッシュ管理部112は、該当するキャッシュオブジェクトからHTTP応答を生成する(ステップ903)。生成されたHTTP応答は、取得された接続オブジェクトと併せて応答複製部114を介してクライアント接続部113に送信される。
【0090】
次に、クライアント接続部113は、受信したHTTP応答を、受信した接続オブジェクトが示す通信接続を介してクライアント131に送信する(ステップ904)。
図4の例では、キャッシュオブジェクト401の「応答ヘッダ」や「応答ボディ」のフィールドに登録された内容を含むHTTP応答が生成され、そのHTTP応答が接続オブジェクト407で指示する通信接続に送信され、接続オブジェクト408で指示する通信接続に送信される。
【0091】
図10は、
図7のステップ704の複製準備処理の一例を示すフローチャートである。この処理は、先読み要求メッセージ601、すなわち、「x−prefetch−connect: open」の文字列が記載されたHTTP要求が受信された場合に実行される。
【0092】
まず、応答複製部114は、後述する複製処理で利用するために現在の接続オブジェクトをメモリ上に保存する(ステップ1001)。ここで、現在の接続オブジェクトとは、先読み処理部120が先読み要求メッセージ601をクライアント接続部113に送信したした際に使用した通信接続を示す接続オブジェクトである。
【0093】
次に、応答複製部114は、先読み要求メッセージ601の受信処理が正常に完了した旨のHTTP応答を作成し(ステップ1002)、そのHTTP応答を、先読み接続部115を介して先読み処理部120に返信する(ステップ1003)。これにより、先読み接続部115及び先読み処理部120間の通信接続が確立される。
【0094】
HTTPでは、HTTP要求に対するHTTP応答が得られると通信接続が切断される。したがって、ステップ1003でHTTP応答が先読み処理部120に送信されると先読み処理部120及び先読み接続部115間の通信接続が切断されてしまう。これでは、後述する複製処理において、応答複製部114は先読み接続部115を介してHTTP応答を先読み処理部120に送信できなくなる。また、複製処理において、先読み接続部115から先読み処理部120にHTTP要求を送信して、先読み接続部115及び先読み処理部120間の通信接続を確立することも考えられるが、これでは、先読み処理部120がサーバ、先読み接続部115がクライアントになってしまい、先読み接続部115の設計が複雑化する。そこで、本実施の形態では、ステップ1001において、接続オブジェクトをメモリに保存し、複製準備処理が終了した際に先読み接続部115及び先読み処理部120間の通信接続が切断されることを防止している。
【0095】
図11は、
図7のステップ709に示す応答複製部114による複製処理の一例を示すフローチャートである。
【0096】
まず、応答複製部114は、受信したHTTP要求が、先読み要求メッセージ602であるか否かを判定する(ステップ1101)。具体的には、応答複製部114は、受信したHTTP要求のヘッダ部に「x−prefetch−response: false」が含まれている否かにより、HTTP要求が先読み要求メッセージ602であるかを判定する。
【0097】
そして、受信したHTTP要求のヘッダ部に「x−prefetch−response: false」が含まれている場合(ステップ1101がNo)、応答複製部114は、受信したHTTP要求は、先読み要求メッセージ602であると判定し、複製処理を終了し、処理を
図7のステップ710に返す。
【0098】
この場合、ステップ710では、先読みに関するHTTP応答をキャッシュ領域にキャッシュさせるための処理が実行される。
図4の例において、要求オブジェクト405が先読み要求メッセージ602の要求オブジェクトであるとすると、要求オブジェクト405に対するHTTP応答がキャッシュ領域に保存されていれば、キャッシュオブジェクト401にはサーバ要求処理及び応答処理が登録されないことになるため、ステップ710ではサーバ要求処理及び応答処理は実行されない。これにより、先読みに関するHTTP応答が先読み処理部120に送信されず、先読みの先読みを防止できる。
【0099】
一方、要求オブジェクト405に対応するHTTP応答がキャッシュ領域に保存されていなければ、キャッシュオブジェクト401にはサーバ要求処理が登録されることになるため、
図8に示すサーバ要求処理が実行される。これにより、先読みに関するHTTP応答がWebサーバ140から取得され、キャッシュ領域に保存されるが、応答処理は登録されていないことになるため、応答処理は実行されない。これにより先読み要求に関するHTTP応答が先読み処理部120に送信されず、先読みの先読みを防止できる。
【0100】
ステップ1101に戻り、受信したHTTP要求のヘッダ部に「x−prefetchresponse: false」が含まれていない場合(ステップ1101がYes)、応答複製部114は、受信したHTTP要求は、クライアント131から送信された通常のHTTP要求であると判定し、自身が保存する先読み処理部120の接続オブジェクトがあるか否かを判定する(ステップ1102)。ここで、応答複製部114が保存する接続オブジェクトは、
図10のステップ1001で保存された接続オブジェクト、つまり、先読み接続部115及び先読み処理部120間で確立された通信接続を示す接続オブジェクトである。
【0101】
なお、先読み接続部115及び先読み処理部120間の通信接続が確立されていなくても、先読み処理部120からx−prefetch−responseをヘッダ部に含む先読み要求メッセージ602をクライアント接続部113に送信することも可能であり、この場合、応答複製部114は、複製処理をする必要がなくなる。そこで、
図11では、ステップ1102の判定処理が設けられている。
【0102】
次に、保存する接続オブジェクトがある場合(ステップ1102がYes)、応答複製部114は、処理をステップ1103に進める。
【0103】
一方、保存する接続オブジェクトがない場合(ステップ1102がNo)、複製処理が終了され、処理が
図7のステップ710に進められる。
【0104】
次に、応答複製部114は、保存する接続オブジェクトを複製する(ステップ1103)。次に、応答複製部114は、要求オブジェクトを複製する(ステップ1104)。ここで複製される要求オブジェクトは、通常のHTTP要求の要求オブジェクトである。
【0105】
次に、応答複製部114は、複製した接続オブジェクトを、複製した要求オブジェクトに登録する(ステップ1105)。
図4において、要求オブジェクト405が通常のHTTP要求の要求オブジェクトであるとすると、応答複製部114は、この要求オブジェクトを複製し、複製した要求オブジェクトの「接続オブジェクト」のフィールドに接続オブジェクトのポインタを登録することで、複製した要求オブジェクトに複製した接続オブジェクトを登録する。
【0106】
次に、応答複製部114は、複製処理の前にキャッシュ管理部112から取得したキャッシュオブジェクトに、複製した要求オブジェクトを登録し(ステップ1106)、複製処理を終了する。
図4を用いた先の例では、応答複製部114は、要求オブジェクトリスト404に複製した要求オブジェクトを含めることで、キャッシュオブジェクト401に複製した要求オブジェクトを登録する。
【0107】
ステップ1106が終了すると処理が
図7のステップ710に進められる。この場合、要求オブジェクトリスト404には、通常のHTTP要求の要求オブジェクトに加えてその要求オブジェクトを複製した要求オブジェクトが含まれている。よって、両要求オブジェクトのHTTP応答がキャッシュされていなければ、サーバ要求処理(
図8)によりWebサーバ140から通常のHTTP応答が取得され、取得された通常のHTTP応答が応答処理(
図9)によりクライアント131及び先読み処理部120に送信される。この場合、クライアント接続部113がクライアント131に通常のHTTP応答を送信し、先読み接続部115が通常のHTTP応答を送信する。これにより、通常のHTTP応答がクライアント131及び先読み処理部120に送信される。また、両要求オブジェクトのHTTP応答がキャッシュされていれば、応答処理(
図9)のみが実行され、キャッシュされていない場合と同様にして、通常のHTTP応答がクライアント131及び先読み処理部120に送信される。
【0108】
図12は、先読み接続部115及び先読み処理部120間の通信接続の切断処理の一例を示すフローチャートである。
【0109】
先読み処理部120は、自身の障害を検知した場合などに自ら通信接続を切断する場合がある。例えば、先読み処理部120が外部のプロセスと連携している場合において、外部のプロセスに回復不可能な障害が発生した場合、先読み処理部120は、先読み処理部120及び外部のプロセスを再起動するしか回復手段がないと判定する。このような場合に、先読み処理部120は先読み接続部115との通信接続を切断する。或いは、処理負荷の観点から、先読み処理を一時的に中断したい場合に、先読み処理部120が自ら先読み接続部115との通信接続を切断する仕組みを設けるということも考えられる。
【0110】
まず、先読み処理部120が先読み接続部115との通信接続を切断すると、先読み接続部115は、その切断を検知する(ステップ1201)。例えば、ソケットを用いた通信においては、一方のノードがソケットを閉じた場合、他方のノードに通信エラーを通知する仕組みが備わっている。したがって、先読み接続部115は、先読み処理部120がソケットを閉じた際に送信する通信エラーを受信した場合、先読み処理部120との通信接続が切断されたことを検知すればよい。
【0111】
次に、先読み接続部115は、応答複製部114に対して保存している接続オブジェクトを破棄するよう指示する(ステップ1202)。
【0112】
次に、応答複製部114が保存している接続オブジェクトを破棄した後、先読み接続部115は処理を終了する。
【0113】
この処理の際、複製された要求オブジェクトや複製された接続オブジェクトは、応答処理が実行されるまで情報蓄積部110内に確保された状態である。よって、キャッシュ管理部112は、応答処理(
図9)のステップ902において、接続オブジェクトを取得できなければ、複製された要求オブジェクトと複製された接続オブジェクトとを破棄すればよい。
【0114】
次に、
図13及び
図14を用いて先読み処理部120の処理を説明する。
図13は、リンク解析処理の一例を示すフローチャートである。
【0115】
まず、リンク処理部121は、先読み接続部115からHTTP応答を受信すると(ステップ1301)、そのHTTP応答に含まれるリンクを抽出する(ステップ1302)。
【0116】
次に、リンク処理部121は、抽出したリンクを示すリンク情報を要求生成部122に引き渡し(ステップ1303)、処理を終了する。リンクの抽出方法としては、例えば正規表現を用いたテキスト処理が考えられる。例えば、リンク処理部121は、テキスト処理により、ダブルクオーテーションで囲まれ、且つ、httpという文字列で始まる文字列を検出し、検出した文字列をリンクとして抽出すればよい。
【0117】
図14は、先読み要求処理の一例を示すフローチャートである。要求生成部122は、リンク処理部121からリンク情報を受け取り、受け取ったリンク情報が示すリンクに対応するHTTP要求を生成する(ステップ1401)。このとき、受け取ったリンク情報が複数ある場合、要求生成部122は、受け取ったリンクの数と同じ数のHTTP要求を生成する。
【0118】
また、このとき、要求生成部122は、生成したHTTP要求が先読み要求メッセージ602であることを識別できるようにHTTP要求を生成する。例えば、要求生成部122は、
図6Bに示すようにヘッダ部に所定の文字列(x−prefetch−response: false)を記述したHTTP要求を生成する。なお、先読み要求メッセージ601の場合は、要求生成部122は、
図6Aに示すようにヘッダ部に所定の文字列(x−prefetch−connect: open)を記述すればよい。なお、要求生成部122は、先読み要求メッセージ601を例えば、定期的に送信し、先読み接続部115との通信接続を確立すればよい。
【0119】
次に、要求生成部122は、ステップ1401で生成したHTTP要求、すなわち、先読み要求メッセージ602をクライアント接続部113に送信する(ステップ1402)。
【0120】
クライアント接続部113が先読み要求メッセージ602を受信すると、情報蓄積部110は、先読み要求メッセージ601をWebサーバ140に転送し、Webサーバ140から先読みに関するHTTP応答を取得し、キャッシュする。これ以降、クライアント131が通常のHTTP要求を情報蓄積部110に送信した場合、情報蓄積部110は、先読みに関するHTTP要求によって受信した通常のHTTP要求に対するHTTP応答をキャッシュしていれば、そのHTTP応答をクライアント131に返信するので、クライアント131は速やかにHTTP応答を取得できる。
【0121】
このように、本実施の形態によれば、応答複製部114は、クライアント131からの通常のHTTP要求に対する通常のHTTP応答を複製し、先読み接続部115を介して先読み処理部120に送信できる。また、先読み処理部120は複製されたHTTP応答を受信し、その内容を解析し、先読み要求メッセージ602を通常のHTTP要求と同等の形式で情報蓄積部110に送信できる。また、応答複製部114は、先読み要求メッセージ602に対するHTTP応答を受信した場合、そのHTTP応答を先読み処理部120に送信せずにキャッシュしている。したがって、先読みの先読みを防止できる。
【0122】
以上、本発明の一態様に係るWebコンテンツ先読み制御装置について、実施の形態に基づいて説明したが、本発明は、これらの実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したもの、あるいは異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。
【0123】
例えば、クライアント131と情報蓄積部110と先読み処理部120とは、それぞれ独立したプロセスとして実行可能に構成されていれば、全て同じ計算機に備えられていてもよいし、いずれかは異なる計算機に備えられていてもよい。
【0124】
また、実施の形態においては、クライアント接続部113及びクライアント131間の通信と、クライアント接続部113及び先読み処理部120間の通信と、先読み接続部115及び先読み処理部120間の通信とはHTTPにより行うものとしたが、これらの通信は、クライアント131及びクライアント接続部113間の通信と同じ手段を用いるのであれば、どのような手段であってもよい。他の通信手段としては例えば、FTP(File Transfer Protocol)が挙げられる。このように、通信手段を従来と同じ手段とすることにより、従来のプロキシサーバに相当する構成(実施の形態におけるサーバ接続部111、キャッシュ管理部112、及びクライアント接続部113)の変更量を最小限にとどめた上で、先読み機能を備える構成を実現できる。
【0125】
また、本実施の形態においては、情報蓄積部110は、従来のプロキシサーバが備える機能に相当するサーバ接続部111、キャッシュ管理部112、及びクライアント接続部113に加え、応答複製部114及び先読み接続部115を備える構成としたが、応答複製部114及び先読み接続部115は、先読み処理部120が備える構成としてもよい。
【0126】
この場合、応答複製部114は、キャッシュ管理部112が送信するHTTP応答を監視し、HTTP応答のうち先読み関するHTTP応答を取得して複製するようにすればよい。このような構成によれば、従来のプロキシサーバに対する変更をさらに小さくすることが可能となる。
【0127】
また、
図1の例では、クライアント131は、Webコンテンツ先読み制御装置100とは別の計算機に設けられていたが、
図15に示すように、Webコンテンツ先読み制御装置100に含めてもよい。
図15は、クライアント131をWebコンテンツ先読み制御装置100に含めた場合のWebコンテンツ先読み制御装置100を含むシステムの構成の一例を示す図である。
【0128】
この構成によれば、Webコンテンツ先読み制御装置100とクライアント131とを同一の計算機上で構成した場合においても、先読みに係る処理をブラウザ(クライアント131)とプロキシサーバ(情報蓄積部110)との双方から独立したプロセス(先読み処理部120)に実行できる。また、既存のインタフェース(通信プロトコル)を流用した先読みのインタフェース(先読み接続部115)を設けることでプロキシサーバの変更量を最小限にとどめることができる。
【0129】
また、
図16に示すように、情報蓄積部110、先読み処理部120、及びクライアント131をそれぞれ異なる計算機で構成してもよい。
図16は、情報蓄積部110、先読み処理部120、及びクライアント131をそれぞれ異なる計算機で構成した場合のWebコンテンツ先読み制御装置100を含むシステムの構成の一例を示す図である。
図16では、情報蓄積部110によりWebコンテンツ先読み制御装置100が構成され、Webコンテンツ先読み制御装置100を構成する計算機と、先読み処理部120を構成する計算機と、クライアント131を構成する計算機とがそれぞれネットワークを介して通信可能に接続されている。
【0130】
また、
図17に示すように、情報蓄積部110と、クライアント131及び先読み処理部120とをそれぞれ別の計算機で構成してもよい。
図17は、情報蓄積部110と、クライアント131及び先読み処理部120とをそれぞれ別の計算機で構成した場合のWebコンテンツ先読み制御装置100を含むシステムの構成の一例を示す図である。
【0131】
図17では、情報蓄積部110によりWebコンテンツ先読み制御装置100が構成されている。また、端末130は、先読み処理部120及びクライアント131を備えている。そして、Webコンテンツ先読み制御装置100を構成する計算機と端末130を構成する計算機とはネットワークを介して通信可能に接続されている。
【0132】
また、本実施の形態においては、先読み要求メッセージを識別するために、
図6A、
図6Bに示す所定の文字列をヘッダ部に記述する例を示した。しかしながら、先読み要求メッセージを識別する方法は、上記の例に限らない。例えば、先読み要求メッセージ601、602を送信する際に用いる1以上のTCPのポート番号を予め設定しておき、このポート番号を用いて先読み要求メッセージ601、602は識別されてもよい。この場合、HTTP要求には、先読み要求メッセージ601、602であることを示す所定の文字列を記述しなくてもよくなる。
【0133】
また、本実施の形態に係るWebコンテンツ先読み制御装置100は、あらゆる計算機、電子機器、情報機器、AV機器、通信機器及び家電機器にも適用可能であり、例えば、PC(パーソナルコンピュータ)、携帯情報端末(携帯電話、スマートフォン及びPDAなど)、テレビ、ハーディスクレコーダー、DVD及びブルーレイディスクなどを用いた各種ディスクレコーダー、DVD及びブルーレイディスクなどを用いた各種ディスクプレイヤー、並びにカーナビゲーションシステムなどにも適用できる。
【0134】
また、本実施の形態は、このような特徴的な処理部を備える、Webコンテンツ先読み制御装置100として実現することができるだけでなく、Webコンテンツ先読み制御装置100に含まれる特徴的な処理部をステップとするWebコンテンツ先読み制御方法等として実現することもできる。また、そのような方法に含まれる特徴的な各ステップをコンピュータに実行させるコンピュータプログラムとして実現することもできる。そして、そのようなコンピュータプログラムを、CD−ROM等のコンピュータ読取可能な非一時的な記録媒体あるいはインターネット等の通信ネットワークを介して流通させることができる。
【0135】
図18は、Webコンテンツ先読み制御装置100を計算機で実現した場合の計算機のハードウェア構成の一例を示す図である。
【0136】
計算機は、入力装置1901、ROM(リードオンリメモリ)1902、CPU(中央演算処理装置)1903、RAM(ランダムアクセスメモリ)1904、外部記憶装置1905、表示装置1906、記録媒体駆動装置1907、及び通信装置1908を備える。各ブロックは内部のバスに接続され、このバスを介して種々のデータ等が入出され、CPU1903の制御の下、種々の処理が実行される。
【0137】
入力装置1901は、キーボード、マウス等から構成され、ユーザが種々のデータを入力するために使用される。ROM1902には、BIOS(Basic Input/Output System)等のシステムプログラムが記憶される。外部記憶装置1905は、ハードディスクドライブ等から構成され、所定のOS(Operating System)、コンピュータをWebコンテンツ先読み制御装置100として機能させるWebコンテンツ先読み制御プログラム等が記憶される。CPU1903は、外部記憶装置1905からOSを読み出し、各ブロックの動作を制御する。RAM1904は、CPU1903の作業領域等として用いられる。
【0138】
表示装置1906は、例えば液晶ディスプレイや有機ELディスプレイにより構成され、CPU1903の制御の下に種々の画像を表示する。記録媒体駆動装置1907は、DVD−ROMドライブ、フレキシブルディスクドライブ等から構成される。
【0139】
なお、Webコンテンツ先読み制御プログラムは、DVD−ROM等のコンピュータ読み取り可能な記録媒体1909に格納されてユーザに提供される。ユーザはこの記録媒体1909を記録媒体駆動装置1907に読み込ませることで、Webコンテンツ先読み制御プログラムを計算機にインストールする。また、Webコンテンツ先読み制御プログラムをインターネット上のサーバに格納し、このサーバからダウンロードすることで、Webコンテンツ先読み制御プログラムを計算機にインストールしてもよい。
【0140】
通信装置1908は、例えば、計算機をLANやインターネットに接続するための通信装置により構成され、CPU1903の制御の下、インターネットを介して他の機器との間でデータを送受する。
【0141】
なお、
図1に示すサーバ接続部111及びクライアント接続部113は、通信装置1908をサーバ接続部111及びクライアント接続部113として機能させるWebコンテンツ先読み制御プログラムのプログラムモジュールをCPU1903が実行することで実現される。なお、
図16、
図17の場合では、先読み接続部115は、通信装置1908を先読み接続部115として機能させるWebコンテンツ先読み制御プログラムのプログラムモジュールをCPU1903が実行することで実現される。
【0142】
また、
図1に示すキャッシュ管理部112、応答複製部114、及び先読み接続部115は、CPU1903がWebコンテンツ先読み制御プログラムを実行することで実現される。
【0143】
また、
図1に示すキャッシュ管理部112は、RAM1904や外部記憶装置1905の一部をキャッシュ領域として機能させるWebコンテンツ先読み制御プログラムのプログラムモジュールをCPU1903が実行することで実現される。
【0144】
また、
図15に示す先読み処理部120は、Webコンテンツ先読み制御プログラムのプログラムモジュールをCPU1903が実行することで実現される。また、
図15に示すクライアント131は、CPU1903がブラウザプログラムを実行することで実現される。
【0145】
また、
図1に示す、本実施の形態に係るWebコンテンツ先読み制御装置の各機能ブロックは、典型的にはプロセッサと外部メモリとの協同で処理されるプログラムとして実現されるが、集積回路であるLSIで実現してもよい。これらの各機能ブロックは個別に1チップ化されても良いし、一部又は全てを含むように1チップ化されても良い。ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI又はウルトラLSIと呼称されることもある。
【0146】
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
【0147】
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。
【0148】
また、実施の形態におけるWebコンテンツ先読み制御装置が備える構成要素の一部または全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。
【0149】
システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM(Read Only Memory)、RAM(Ramdom Access Memory)等を含んで構成されるコンピュータシステムである。前記ROMには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、システムLSIは、その機能を達成する。
【0150】
なお、ここでは、システムLSIとしたが、集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもある。また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)、あるいはLSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
【0151】
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
【0152】
(実施の形態のまとめ)
上記実施の形態の技術的特徴は以下のようにまとめることができる。
【0153】
(1)本発明の一態様に係る仮想計算機システムは、Webコンテンツを保存するWebサーバとネットワークを介して接続され、クライアントが前記Webサーバに要求したWebコンテンツにリンクするWebコンテンツの先読みを制御するWebコンテンツ先読み制御装置であって、前記クライアントからのWebコンテンツ取得要求と、前記先読みを行う先読み処理部から送信された先読み要求とを受信するクライアント接続部と、前記Webコンテンツ取得要求及び前記先読み要求に対する応答として前記Webサーバから取得したWebコンテンツを保存するとともに当該応答を送信するキャッシュ管理部と、前記キャッシュ管理部から送信された前記応答を受信し、当該応答のうち前記Webコンテンツ取得要求に対する応答を複製する応答複製部と、前記複製されたWebコンテンツ取得要求に対する応答を前記先読み処理部に送信する先読み接続部とを備え、前記クライアント接続部及び前記クライアント間の通信と、前記クライアント接続部及び前記先読み処理部間の通信と、前記先読み接続部及び前記先読み処理部間の通信とは、それぞれ、同じ通信プロトコルにより行われる。
【0154】
この構成によれば、先読み接続部は、クライアント接続部及びクライアント間の通信で使用される通信プロトコルと同じ通信プロトコルを用いて、複製されたWebコンテンツを先読み処理部に送信する。そのため、キャッシュ管理部、応答複製部、クライアント接続部、及び先読み接続部により構成されるプロキシサーバは、クライアント及び先読み処理部の双方をクライアントとして取り扱うことが可能となる。よって、先読み接続部を既存の通信インタフェースであるクライアント接続部を流用して実現できる。その結果、プロキシサーバに、応答複製部と既存の通信インタフェースを流用した先読み接続部とを設けるだけで、Webコンテンツ先読み制御装置を構築でき、プロキシサーバの変更量を最小限にとどめてWebコンテンツ先読み制御装置を構築できる。
【0155】
(2)前記先読み要求には、先読み要求であることを示す種別情報が含まれており、前記応答複製部は、前記先読み要求に対する応答を受信した場合、前記種別情報に基づいて、前記受信した応答が前記先読み要求に対する応答であるか否かを判定し、前記先読み要求に対する応答であると判定した場合、当該受信した応答を複製しなくてもよい。
【0156】
この構成によれば、先読み要求にはその旨を示す種別情報が含まれているため、応答複製部は受信した応答が先読み要求であるか否かを容易に判定できる。また、先読み要求に対する応答が複製されて先読み処理部に送信されないため、先読み要求の応答に対して先読みがされることが防止され、先読みの連鎖を断つことができる。よって、クライアントで閲覧される可能性が高いWebコンテンツのみ先読みできる。また、クライアントで閲覧される可能性の低いWebコンテンツは先読みされてキャッシュされず、メモリリソースの無駄な消費を抑制できる。
【0157】
(3)前記応答複製部は、前記種別情報に基づいて、前記受信した応答が先読み要求に対する応答でないと判定した場合、当該受信した応答を複製してもよい。
【0158】
この構成によれば、受信した応答が先読み要求に対する応答でない、すなわち、Webコンテンツ取得要求に対する応答であると判定された場合に、受信した応答が複製されて先読み処理部に送信される。よって、クライアントで閲覧される可能性の高い応答のみを先読みしてキャッシュすることができる。
【0159】
(4)前記先読み要求は、HTTPメッセージであり、前記種別情報は、前記HTTPメッセージのHTTPヘッダに記述された所定の文字列であり、前記応答複製部は、前記文字列が前記HTTPヘッダに含まれている場合、前記HTTPメッセージが前記先読み要求であると判定してもよい。
【0160】
この構成によれば、HTTPメッセージのHTTPヘッダに記述された所定の文字列の有無により、HTTPメッセージが先読み要求であるか否かを判定できる。
【0161】
(5)前記先読み要求は、前記先読み処理部及び前記先読み接続部間の通信接続を確立するための第1先読み要求を含み、前記応答複製部は、前記クライアント接続部により前記第1先読み要求が受信されると、前記先読み接続部及び前記先読み処理部間の通信接続を確立してもよい。
【0162】
この構成によれば、先読み処理部から送信された第1先読み要求がクライアント接続部に受信されることで、先読み接続部及び先読み処理部間の通信接続が確立されるため、先読み接続部は自ら接続要求を先読み処理部に送信して先読み処理部との通信を確立する必要がない。よって、先読み処理部をクライアントとして取り扱うことができ、先読み接続部を特別な通信インタフェースを用いることなく、クライアント接続部と同様、既存の通信インタフェースを用いて実現できる。
【0163】
(6)前記先読み要求は、前記Webコンテンツを先読みするための第2先読み要求を含み、前記応答複製部は、前記キャッシュ管理部から受信した応答が前記第2先読み要求に対する応答であれば、当該応答を複製しなくてもよい。
【0164】
この構成によれば、第2先読み要求に対する応答が複製されて先読み処理部に送信されることが防止され、第2先読み要求の応答に対して更に第2先読み要求がされることを防止できる。
【0165】
(7)前記キャッシュ管理部は、前記第2先読み要求に対する応答を保存していれば、前記保存している応答を前記応答複製部に送信してもよい。
【0166】
この構成によれば、第2先読み要求の応答がキャッシュされていれば、Webサーバにアクセスすることなくその応答が応答複製部に送信されるため、応答複製部はその応答を速やかに受信できる。但し、この応答は第2先読み要求に対する応答であるため、応答複製部により複製されない。よって、キャッシュ管理部を既存のプロキシサーバが備えるキャッシュ管理部で実現できる。
【0167】
(8)前記Webコンテンツ先読み制御装置は、前記クライアントを更に備え、前記クライアント接続部は、前記Webコンテンツ先読み制御装置が備えるクライアントから前記Webコンテンツ取得要求を受信してもよい。
【0168】
この構成によれば、Webコンテンツ先読み制御装置とクライアントとが同一の計算機上で実現される構成においても、(1)と同じ効果が得られる。
【0169】
(9)前記クライアントは、前記Webコンテンツ先読み制御装置とネットワークを介して接続された計算機が備え、前記クライアント接続部は、前記クライアントから前記Webコンテンツ取得要求を受信してもよい。
【0170】
この構成によれば、Webコンテンツ先読み制御装置とクライアントとが異なる計算機で実現される構成においても、(1)と同じ効果が得られる。
【0171】
(10)前記Webコンテンツ先読み制御装置は、前記先読み処理部を更に備え、前記先読み接続部は、前記複製されたWebコンテンツ取得要求に対する応答を、前記Webコンテンツ先読み制御装置が備える先読み処理部に送信してもよい。
【0172】
この構成によれば、Webコンテンツ先読み制御装置と先読み処理部とが同一の計算機で実現される構成においても、(1)と同じ効果が得られる。
【0173】
(11)前記先読み処理部は、前記Webコンテンツ先読み制御装置とネットワークを介して接続された計算機が備え、前記先読み接続部は、前記複製されたWebコンテンツ取得要求に対する応答を、前記先読み処理部に送信してもよい。
【0174】
この構成によれば、Webコンテンツ先読み制御装置と先読み処理部とが異なる計算機で実現される構成においても、(1)と同じ効果が得られる。
【0175】
(12)前記Webコンテンツ取得要求及び前記先読み要求を前記Webサーバに送信することで、前記Webサーバからの応答を取得し、取得した応答を前記キャッシュ管理部に送信するサーバ接続部を更に備えてもよい。
【0176】
この構成によれば、サーバ接続部を介してWebコンテンツが取得される。