(57)【特許請求の範囲】
【請求項１】
クライアントと、前記クライアントから送信されたコンテンツデータを取得するためのリクエストを受信しそのリクエストに応じたコンテンツデータを出力するサーバと、前記クライアントと前記サーバとの間で行われるデータ転送を仲介するデータ転送装置とを有するＷｅｂシステムであって、
前記データ転送装置は、
前記クライアントから前記リクエストを受信する受信部と、
前記受信部で受信した前記リクエストを、そのリクエストの宛先である前記サーバへ送信する送信部と、
前記サーバから前記リクエストに応じた前記コンテンツデータを前記受信部を介して受信した時に、前記コンテンツデータのＦＰ（フィンガープリント）値を計算する計算部と、
前記計算部によって計算された前記ＦＰ値と、それに対応する前記コンテンツデータとが関連付けてキャッシュ記憶される記憶部と、
前記計算部で計算された前記ＦＰ値と同じ値のＦＰ値が既に前記記憶部に記憶されているかどうかを判定する判定部と、
前記判定部によって前記同じ値のＦＰ値が既に前記記憶部に記憶されていると判定された場合には前記クライアントへ前記ＦＰ値をレスポンスとして送信し、前記判定部によって前記同じ値のＦＰ値が前記記憶部に記憶されていないと判定された場合には前記クライアントへ前記コンテンツデータと前記ＦＰ値とをレスポンスとして送信し、前記判定部によって前記同じ値のＦＰ値が記憶されているかどうかが判定された後、前記クライアントへレスポンスを送信する際に、前記レスポンスに前記ＦＰキャッシュ対応プログラムを自動的にダウンロードして組み込ませる命令を付加して送信する制御部と、
を有し、
前記クライアントは、
前記ＦＰキャッシュ対応プログラムを持たない場合は、前記レスポンスに付加された前記命令を実行することによって前記ＦＰキャッシュ対応プログラムが組み込まれ、
組み込まれたＦＰキャッシュ対応プログラムに従い、前記サーバから前記データ転送装置を介して受信する新たなコンテンツデータとそのＦＰ値とを関連付けてキャッシュ記憶し、
レスポンスとしてコンテンツデータのＦＰ値のみを受信した場合であって、前記キャッシュ記憶されているコンテンツデータのＦＰ値とレスポンスとして受信したコンテンツデータのＦＰ値とが等しい場合に、前記組み込まれたＦＰキャッシュ対応プログラムに従い、そのＦＰ値と関連付けてキャッシュ記憶しているコンテンツデータを出力する
ことを特徴とするＷｅｂシステム。
【請求項２】
前記データ転送装置は、
前記計算部で計算された前記ＦＰ値と同じ値のＦＰ値が前記記憶部に記憶されていないと判定された場合に、前記判定部は更に受信した前記コンテンツデータとの類似度が閾値以上である差分元データが前記記憶部に存在するか否かを判定し、
前記制御部は前記差分元データが前記記憶部に存在すると判定された場合に、前記クライアントへ前記コンテンツデータと前記差分元データとの差分データと前記差分元データのＦＰ値である差分元ＦＰ値とを前記レスポンスとして送信し、
前記クライアントは、
キャッシュ記憶しているコンテンツデータのＦＰ値と前記レスポンスとして受信した前記差分元ＦＰ値とが等しい場合に、前記組み込まれたＦＰキャッシュ対応プログラムに従い、前記差分元データを取得するとともに、同時に受信した前記差分データと合成することを特徴とする請求項１に記載のＷｅｂシステム。
【請求項３】
クライアントと、前記クライアントから送信されたコンテンツデータを取得するためのリクエストを受信しそのリクエストに応じたコンテンツデータを出力するサーバと、前記クライアントと前記サーバとの間で行われるデータ転送を仲介するデータ転送装置とを有するＷｅｂシステムの制御方法であって、
前記データ転送装置は、
前記クライアントから前記リクエストを受信し、
前記受信した前記リクエストを、そのリクエストの宛先である前記サーバへ送信し、
前記サーバから前記リクエストに応じた前記コンテンツデータを受信した時に、前記コンテンツデータのＦＰ（フィンガープリント）値を計算し、
前記計算された前記ＦＰ値とそれに対応するコンテンツデータとを関連付けて記憶部にキャッシュ記憶し、
前記計算された前記ＦＰ値と同じ値のＦＰ値が既に前記記憶部に記憶されているかどうかを判定し、
前記ＦＰ値と同じ値のＦＰ値が既に前記記憶部に記憶されていると判定された場合には前記ＦＰ値をレスポンスとして前記クライアントへ送信し、
前記ＦＰ値と同じ値のＦＰ値が前記記憶部に記憶されていないと判定された場合には前記コンテンツデータと前記ＦＰ値とを前記レスポンスとして前記クライアントへ送信し、
前記判定部によって前記同じ値のＦＰ値が記憶されているかどうかが判定された後、前記クライアントへレスポンスを送信する際に、前記レスポンスにＦＰキャッシュ対応プログラムを自動的にダウンロードさせて組み込ませる命令を付加して送信し、
前記ＦＰキャッシュ対応プログラムを持たない前記クライアントは前記レスポンスに付加された前記命令を実行することによってＦＰキャッシュ対応プログラムを組み込み、
前記ＦＰキャッシュ対応プログラムに従い、前記クライアントは新たに受信するコンテンツデータとそのＦＰ値とを関連付けてキャッシュ記憶し、
前記クライアントは、レスポンスとしてコンテンツデータのＦＰ値のみを受信した場合であって、キャッシュ記憶しているコンテンツデータのＦＰ値と前記レスポンスとして受信したコンテンツデータのＦＰ値とが等しい場合に、前記組み込まれたＦＰキャッシュ対応プログラムに従い、そのＦＰ値と関連付けて記憶しているコンテンツデータを出力する
ことを特徴とするＷｅｂシステムの制御方法。
【請求項４】
前記データ転送装置は、
前記計算された前記ＦＰ値と同じ値のＦＰ値が前記記憶部に記憶されていないと判定された場合、更に前記受信した前記コンテンツデータとの類似度が閾値以上である差分元データが前記記憶部に存在するか否かを判定し、
前記類似度が閾値以上である前記差分元データが存在すると判定された場合には、前記コンテンツデータと前記差分元データとの差分データと前記差分元データの差分元ＦＰ値とを前記レスポンスとして前記クライアントへ送信し、
前記クライアントは、キャッシュ記憶しているコンテンツデータのＦＰ値と前記レスポンスとして受信した前記差分元ＦＰ値とが等しい場合に、前記組み込まれたＦＰキャッシュ対応プログラムに従い、前記差分元データを取得するとともに受信した前記差分データと合成する
ことを特徴とする請求項３に記載のＷｅｂシステムの制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、Ｗｅｂシステム、およびＷｅｂシステムの制御方法に関する。
【０００２】
【従来の技術】
ネットワーク上で様々なサービスを提供するサーバと、サービスをサーバに対して要求するクライアントとを有する、クライアント・サーバ型の情報システムが広く利用されている。インターネット上でＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）プロトコルを利用して通信を行うＷｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂシステム（以下、Ｗｅｂ）は、大変広く利用されているクライアント・サーバ型の情報システムである。通常、Ｗｅｂにおいては、サーバ上ではサーバプログラムが動作し、クライアント上ではＷｅｂブラウザなどの所定のプログラムが動作する。
【０００３】
Ｗｅｂのようなクライアント・サーバ型の情報システムでは、クライアントとサーバ間の通信によってサービスが提供される。従って、クライアントとサーバとの間の通信帯域が、システム全体のボトルネックになりやすい。そこで、通常、ネットワークの負荷を軽減させるためにキャッシュ技術が用いられる。
【０００４】
Ｗｅｂシステムの場合、クライアント上で動作するＷｅｂブラウザ等はキャッシュ機能を利用するものが多く、最近アクセスしたデータをキャッシュしている。ＷｅｂシステムではＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｅｒ）で情報やサービスを指定してアクセスを行うので、クライアント上のキャッシュは過去にＷｅｂサーバに情報やサービスを要求した結果として返されるデータのうち、キャッシュ可能なものを、そのＵＲＬと対応させてキャッシュに記憶している。そして、キャッシュ内に存在するものと同じＵＲＬの情報やサービスの要求があった際には、そのキャッシュ内のデータが古くなっていないと判断できるならば、そのデータを返すことで、サーバとの間の通信を無くすことができる。
【０００５】
また、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を使用している場合、ＬＡＮとインターネットとの間にプロキシサーバを設置し、プロキシサーバにキャッシュ機能を設けることも多い。前述のクライアントのキャッシュはそのクライアントのユーザ専用のキャッシュであるが、ＬＡＮ上のプロキシサーバのキャッシュは複数のユーザに共有のキャッシュとして動作するため、過去に他のクライアントがアクセスしたＵＲＬに対してアクセスする際にもキャッシュが効く。
【０００６】
これらのキャッシュは静的コンテンツをキャッシュの対象にしている。かつては、Ｗｅｂで公開される情報やサービスには、情報の更新頻度がそれほど高くなく、また、不特定多数の人に公開されているものが多かったため、静的コンテンツの割合が大変高く、ＵＲＬベースでキャッシュの存在の有無を確認しても十分に効果があった。
【０００７】
しかし、ＷｅｂベースのＡＳＰ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｅｒｖｉｃｅ  Ｐｒｏｖｉｄｅｒ）のように、ユーザがＷｅｂブラウザを使ってネットワーク経由でサーバ上の情報やサービスにアクセスするシステムが普及するにつれ、上述のキャッシュ技術では対応できないデータが増加している。
【０００８】
このような問題に対応するために特願２００１−０６９２８４号出願で、フィンガープリント（ＦＰ）圧縮を用いたキャッシュ技術を提案した。
【０００９】
【発明が解決しようとする課題】
特願２００１−０６９２８４号出願では、クライアント側のプロキシサーバ（ＣＳＰ：Ｃｌｉｅｎｔ  Ｓｉｄｅ  Ｐｒｏｘｙ）とＷｅｂサーバ側のプロキシサーバ（ＳＳＰ：Ｓｅｒｖｅｒ  Ｓｉｄｅ  Ｐｒｏｘｙ）の間でＦＰ圧縮処理を行うので、プロキシサーバが２つセットで必要であり、ネットワーク構成が複雑になるという問題があった。
【００１０】
例えば、ＭｏｂｉｌｅＩＰ技術を利用している携帯端末の場合は、携帯端末からＷｅｂサーバへの通信経路とＷｅｂサーバから携帯端末への通信経路が異なるため、ＣＳＰを使うのが困難である。
【００１１】
そこで、本発明ではＳＳＰとクライアントの間に別途ＣＳＰを設けなくても、クライアント側で汎用ブラウザを用いるだけで、ネットワーク負荷を軽減できるデータ転送技術を提供することを目的とする。
【００１２】
【課題を解決するための手段】
上記課題を解決するため、本発明のＷｅｂシステムは、クライアントと、前記クライアントから送信されたコンテンツデータを取得するためのリクエストを受信しそのリクエストに応じたコンテンツデータを出力するサーバと、前記クライアントと前記サーバとの間で行われるデータ転送を仲介するデータ転送装置とを有するＷｅｂシステムであって、前記データ転送装置は、前記クライアントから前記リクエストを受信する受信部と、前記受信部で受信した前記リクエストを、そのリクエストの宛先である前記サーバへ送信する送信部と、前記サーバから前記リクエストに応じた前記コンテンツデータを前記受信部を介して受信した時に、前記コンテンツデータのＦＰ（フィンガープリント）値を計算する計算部と、前記計算部によって計算された前記ＦＰ値と、それに対応する前記コンテンツデータとが関連付けてキャッシュ記憶される記憶部と、前記計算部で計算された前記ＦＰ値と同じ値のＦＰ値が既に前記記憶部に記憶されているかどうかを判定する判定部と、前記判定部によって前記同じ値のＦＰ値が既に前記記憶部に記憶されていると判定された場合には前記クライアントへ前記ＦＰ値をレスポンスとして送信し、前記判定部によって前記同じ値のＦＰ値が前記記憶部に記憶されていないと判定された場合には前記クライアントへ前記コンテンツデータと前記ＦＰ値とをレスポンスとして送信し、前記判定部によって前記同じ値のＦＰ値が記憶されているかどうかが判定された後、前記クライアントへレスポンスを送信する際に、前記レスポンスに前記ＦＰキャッシュ対応プログラムを自動的にダウンロードして組み込ませる命令を付加して送信する制御部と、を有し、前記クライアントは、前記ＦＰキャッシュ対応プログラムを持たない場合は、前記レスポンスに付加された前記命令を実行することによって前記ＦＰキャッシュ対応プログラムが組み込まれ、組み込まれたＦＰキャッシュ対応プログラムに従い、前記サーバから前記データ転送装置を介して受信する新たなコンテンツデータとそのＦＰ値とを関連付けてキャッシュ記憶し、レスポンスとしてコンテンツデータのＦＰ値のみを受信した場合であって、前記キャッシュ記憶されているコンテンツデータのＦＰ値とレスポンスとして受信したコンテンツデータのＦＰ値とが等しい場合に、前記組み込まれたＦＰキャッシュ対応プログラムに従い、そのＦＰ値と関連付けてキャッシュ記憶しているコンテンツデータを出力することを特徴とする。
【００１３】
また、本発明のＷｅｂシステムの制御方法は、クライアントと、前記クライアントから送信されたコンテンツデータを取得するためのリクエストを受信しそのリクエストに応じたコンテンツデータを出力するサーバと、前記クライアントと前記サーバとの間で行われるデータ転送を仲介するデータ転送装置とを有するＷｅｂシステムの制御方法であって、前記データ転送装置は、前記クライアントから前記リクエストを受信し、前記受信した前記リクエストを、そのリクエストの宛先である前記サーバへ送信し、前記サーバから前記リクエストに応じた前記コンテンツデータを受信した時に、前記コンテンツデータのＦＰ（フィンガープリント）値を計算し、前記計算された前記ＦＰ値とそれに対応するコンテンツデータとを関連付けて記憶部にキャッシュ記憶し、前記計算された前記ＦＰ値と同じ値のＦＰ値が既に前記記憶部に記憶されているかどうかを判定し、前記ＦＰ値と同じ値のＦＰ値が既に前記記憶部に記憶されていると判定された場合には前記ＦＰ値をレスポンスとして前記クライアントへ送信し、前記ＦＰ値と同じ値のＦＰ値が前記記憶部に記憶されていないと判定された場合には前記コンテンツデータと前記ＦＰ値とを前記レスポンスとして前記クライアントへ送信し、前記判定部によって前記同じ値のＦＰ値が記憶されているかどうかが判定された後、前記クライアントへレスポンスを送信する際に、前記レスポンスにＦＰキャッシュ対応プログラムを自動的にダウンロードさせて組み込ませる命令を付加して送信し、前記ＦＰキャッシュ対応プログラムを持たない前記クライアントは前記レスポンスに付加された前記命令を実行することによってＦＰキャッシュ対応プログラムを組み込み、前記ＦＰキャッシュ対応プログラムに従い、前記クライアントは新たに受信するコンテンツデータとそのＦＰ値とを関連付けてキャッシュ記憶し、前記クライアントは、レスポンスとしてコンテンツデータのＦＰ値のみを受信した場合であって、キャッシュ記憶しているコンテンツデータのＦＰ値と前記レスポンスとして受信したコンテンツデータのＦＰ値とが等しい場合に、前記組み込まれたＦＰキャッシュ対応プログラムに従い、そのＦＰ値と関連付けて記憶しているコンテンツデータを出力することを特徴とする。
【００１４】
【発明の実施の形態】
以下、図面を参照しながら本発明の一実施形態について説明する。
【００１５】
（システムの概要）図１に本実施形態のＷｅｂシステムの構成例を示す。このＷｅｂシステムは、クライアントであるＷｅｂブラウザ１−１と、クライアントに様々な情報やサービスを提供するＷｅｂサーバ１−３と、Ｗｅｂサーバ１−３からのデータの一時蓄積を行いネットワークの負荷を軽減させるプロキシサーバ１−２とを有し、ネットワークを介して共通に接続されている。
【００１６】
Ｗｅｂブラウザ１−１はクライアント１００のコンピュータ上で動作するプログラムである。Ｗｅｂブラウザ１−１は、プロキシサーバ１−２にアクセスしてＨＴＴＰプロトコルに基づいたリクエストメッセージを送信して情報やサービス等のコンテンツデータを要求し、その結果として得られるリプライメッセージを受信する。Ｗｅｂブラウザ１−１は受信したリプライメッセージからコンテンツデータを抽出して図示しない画面等に表示するとともに図示しないキャッシュに登録しておき、同じコンテンツデータを再度取得する場合には前述のキャッシュから読み出して表示までの時間を短縮させる。
【００１７】
プロキシサーバ１−２はＷｅｂサーバ側ネットワーク１１０に所属するコンピュータであるサーバ１１１上で動作するプログラムである。プロキシサーバ１−２は、Ｗｅｂブラウザ１−１からのリクエストメッセージに応じて、図示しないキャッシュに存在するコンテンツデータを利用してリプライメッセージを送信するか、あるいは、前述のキャッシュ内にコンテンツデータが存在しない場合には、Ｗｅｂサーバ１−３にリクエストメッセージを転送してコンテンツデータを取得してＷｅｂブラウザ１−１にリプライメッセージを送信する。また、Ｗｅｂサーバ１−３から取得したコンテンツデータについてＦＰ値を計算して、ＵＲＬ及びデータと関連付けてキャッシュに登録することで、ＵＲＬが異なるが実質的に同一であるデータに対しても図示しないキャッシュ内のデータをヒットさせることが可能となる。ＦＰ値とはコンテンツデータの特徴量となるデータで、後述するようにハッシュ関数を用いて計算される。
【００１８】
Ｗｅｂサーバ１−３はＷｅｂサーバ側ネットワーク１１０に所属するコンピュータであるサーバ１１２上で動作するプログラムである。Ｗｅｂサーバ１−３は、プロキシサーバ１−２からのＨＴＴＰプロトコルに基づいたコマンドを受信して、情報やサービス等のコンテンツデータを送信する。
【００１９】
（データ及びコマンドの流れ）図２から図７を用いてＷｅｂブラウザ１−１、プロキシサーバ１−２、Ｗｅｂサーバ１−３の間のデータ及びコマンドの流れの概要を主要な６パターンについて説明する。
【００２０】
本実施形態のＷｅｂブラウザ１−１には２種類のキャッシュが存在し、一つはＷｅｂブラウザ１−１が元々備えるＵＲＬとコンテンツデータを関連付けて記憶するキャッシュで、もう一つは本発明に係るＦＰ値とコンテンツデータを関連付けて記憶するキャッシュである。図２から図７のキャッシュ１−１１は後者のキャッシュである。
【００２１】
（Ａ）Ｗｅｂブラウザ１−１が要求したコンテンツデータがプロキシサーバ１−２のキャッシュ１−２１に存在しない場合（すなわち、当該コンテンツデータの初回アクセス時）。
【００２２】
データ及びコマンドの流れは図２のようになる。（１）Ｗｅｂブラウザ１−１はプロキシサーバ１−２にアクセスしてコンテンツデータを要求するためのリクエストメッセージを送信する。（２）プロキシサーバ１−２はリクエストメッセージをＷｅｂサーバ１−３に転送する。（３）Ｗｅｂサーバ１−３はリクエストメッセージに応じてコンテンツデータを出力する。（４）プロキシサーバ１−２はコンテンツデータのＦＰ値を計算し、コンテンツデータとＦＰ値とＵＲＬとを関連付けてキャッシュ１−２１に登録する。（５）そして、プロキシサーバ１−２はコンテンツデータとＦＰ値をＷｅｂブラウザ１−１に送信する。（６）Ｗｅｂブラウザ１−１はコンテンツデータとＦＰ値を関連付けてキャッシュ１−１１に登録する。
【００２３】
（Ｂ）Ｗｅｂブラウザ１−１が要求したコンテンツデータがプロキシサーバ１−２のキャッシュ１−２１に存在し、ＵＲＬによる探索でヒットした場合。
【００２４】
データ及びコマンドの流れは図３のようになる。（１）Ｗｅｂブラウザ１−１はプロキシサーバ１−２にアクセスしてコンテンツデータを要求するためのリクエストメッセージを送信する。（２）プロキシサーバ１−２はリクエストメッセージで指定されたＵＲＬに対応するコンテンツデータとＦＰ値をキャッシュ１−２１から抽出する。（３）プロキシサーバ１−２はＦＰ値とコンテンツデータをＷｅｂブラウザ１−１に送信する。（４）Ｗｅｂブラウザ１−１はＦＰ値とコンテンツデータを関連付けてキャッシュ１−１１に登録する。
【００２５】
（Ｃ−１）Ｗｅｂブラウザ１−１が要求したコンテンツデータがプロキシサーバ１−２のキャッシュ１−２１に存在し、ＦＰ値による探索でヒットした場合であって、Ｗｅｂブラウザ１−１のキャッシュ１−１１にも当該ＦＰ値を持つコンテンツデータが存在する場合（圧縮転送の場合）。
【００２６】
データ及びコマンドの流れは図４のようになる。（１）Ｗｅｂブラウザ１−１はプロキシサーバ１−２にアクセスしてデータを要求するためのリクエストメッセージを送信する。（２）プロキシサーバ１−２はリクエストメッセージをＷｅｂサーバ１−３に転送する。（３）Ｗｅｂサーバ１−３はリクエストメッセージに応じてコンテンツデータを出力する。（４）プロキシサーバ１−２はコンテンツデータのＦＰ値を計算し、ＦＰ値を用いてキャッシュ１−２１内から当該コンテンツデータを探索する。（５）プロキシサーバ１−２はＦＰ値をＷｅｂブラウザ１−１に送信する。（６）Ｗｅｂブラウザ１−１はＦＰ値に対応するコンテンツデータをキャッシュ１−１１から読み出す。
【００２７】
（Ｃ−２）Ｗｅｂブラウザ１−１が要求したデータがプロキシサーバ１−２のキャッシュ１−２１に存在し、ＦＰ値による探索でヒットした場合であって、Ｗｅｂブラウザ１−１のキャッシュ１−１１には当該ＦＰ値を持つデータが存在しない場合（圧縮転送で、再リクエストを行う場合）。
【００２８】
データ及びコマンドの流れは図５のようになる。（１）〜（５）は（Ｃ−１）と同じである。（６）Ｗｅｂブラウザ１−１はキャッシュ１−１１内にＦＰ値に対応するコンテンツデータが存在しないので、プロキシサーバ１−２にコンテンツデータを送信を要求するために、再リクエストメッセージを送信する。（７）プロキシサーバ１−２は再リクエストメッセージに応じてキャッシュ１−２１からコンテンツデータを抽出する。（８）プロキシサーバ１−２はＦＰ値とコンテンツデータをＷｅｂブラウザ１−１に送信する。（９）Ｗｅｂブラウザ１−１はキャッシュ１−１１にコンテンツデータとＦＰ値とを関連付けて登録する。
【００２９】
（Ｄ−１）Ｗｅｂブラウザ１−１が要求したコンテンツデータがプロキシサーバ１−２のキャッシュ１−２１に存在せず、プロキシサーバ１−２が差分転送を行った場合であって、Ｗｅｂブラウザ１−１のキャッシュ１−１１にで当該差分からのコンテンツデータの合成に必要な差分元データが存在する場合（差分転送の場合）。
【００３０】
データ及びコマンドの流れは図６のようになる。（１）Ｗｅｂブラウザ１−１はプロキシサーバ１−２にアクセスしてコンテンツデータを要求するためのリクエストメッセージを送信する。（２）プロキシサーバ１−２はリクエストメッセージをＷｅｂサーバ１−３に転送する。（３）Ｗｅｂサーバ１−３はリクエストメッセージに応じてコンテンツデータを出力する。（４）プロキシサーバ１−２はコンテンツデータのＦＰ値を計算し、ＦＰ値とＵＲＬとコンテンツデータとを関連付けてキャッシュ１−２１に登録する。（５）プロキシサーバ１−２はキャッシュ１−２１から差分転送に用いる差分元データ及び差分元ＦＰ値を読み出す。（６）プロキシサーバ１−２はコンテンツデータと差分元データの差分である差分データと差分元ＦＰ値とＦＰ値をＷｅｂブラウザ１−１に送信する。（７）Ｗｅｂブラウザ１−１はキャッシュ１−１１から差分元ＦＰ値に対応する差分元データを読み出す。（８）Ｗｅｂブラウザ１−１は差分元データと差分データからコンテンツデータを合成し、キャッシュ１−１にＦＰ値とコンテンツデータを関連付けて登録する。
【００３１】
（Ｄ−２）Ｗｅｂブラウザ１−１が要求したコンテンツデータがプロキシサーバ１−２のキャッシュ１−２１に存在せず、プロキシサーバ１−２が差分転送を行った場合であって、Ｗｅｂブラウザ１−１のキャッシュ１−１１に当該差分からのコンテンツデータの合成に必要な差分元データが存在しない場合（差分転送で、再リクエストを行う場合）。
【００３２】
データ及びコマンドの流れは図７のようになる。（１）〜（６）は（Ｄ−１）と同じ処理を行う。（７）Ｗｅｂブラウザ１−１はプロキシサーバ１−２に再リクエストメッセージを送信して、差分元データのうちキャッシュ１−１１に存在しないものを要求する。（８）Ｗｅｂブラウザ１−１はキャッシュ１−１に、再リクエストメッセージによって得られた差分元データと差分元ＦＰ値を関連付けて登録する。（９）Ｗｅｂブラウザ１−１は差分元データと差分データからコンテンツデータを合成し、キャッシュ１−１にＦＰ値とコンテンツデータを関連付けて登録する。
【００３３】
（Ｗｅｂブラウザの構成）図８は本実施形態のＷｅｂブラウザ１−１の構成を説明する図である。Ｗｅｂブラウザ１−１は、ＨＴＭＬ（Ｈｙｐｅｒ  ＴｅｘｔＭａｒｋｕｐ  Ｌａｎｇｕａｇｅ）等の解釈、画面の描画・表示、Ｗｅｂサーバ１−１やプロキシサーバ１−２との通信、ユーザからのリクエスト受け付け等を行うブラウザコアエンジン部２−１と、ブラウザの機能を拡張するプラグイン部２００と、プラグイン部２００に組み込まれ、ＦＰキャッシュ処理を行うＦＰキャッシュ処理エンジン２−２と、ＵＲＬとコンテンツデータを関連付けて記憶するキャッシュ２０１と、受信したコンテンツデータの一時記憶を行うメモリ２０２を備える。
【００３４】
ブラウザコアエンジン部２−１は一般のブラウザに実装されている機能を提供する。具体的には、ユーザからのリクエストに応じて、ＵＲＬを利用してキャッシュ２０１の探索を行ったり、プロキシサーバ１−２へのアクセスを行う。また、キャッシュ２０１から読み出したコンテンツデータの解析・表示やプロキシサーバ１−２から受け取ったリプライメッセージからリプライデータを抽出してメモリ２０２に記憶し、解析・表示等を行う。キャッシュ２０１は一般のブラウザに実装されているもので、ＵＲＬとコンテンツデータを関連付けて記憶している。
【００３５】
ＦＰキャッシュ処理エンジン２−２はＦＰ値を利用したキャッシュ処理を行う。ＦＰキャッシュ処理エンジン２−２の詳細な構成を図９で説明する。ＦＰキャッシュ処理エンジン２−２はＷｅｂブラウザ１−１のブラウザコアエンジン部２−１から受け取ったメモリアドレスを用いてメモリ２０２からリプライデータを読み出す入力部３−１と、リプライデータを解析してＦＰ値からコンテンツデータを合成する必要の有無を判定する解析部３−２と、リプライデータからコンテンツデータとＦＰ値とを抽出して関連付けて記憶しておくＦＰキャッシュ領域３−３と、コンテンツデータとＦＰ値をＦＰキャッシュ領域３−３へ登録する登録部３−４とを有する。このＦＰキャッシュ領域３−３は前述のキャッシュ１−１１に相当するものである。また、本実施形態では、ＦＰキャッシュ領域３−３は前述のキャッシュ２０１と別のものである。
【００３６】
さらに、解析部３−２で合成の必要が有ると判定された場合に、ＦＰ値からコンテンツデータの合成を行う合成部３−５と、合成部３−５からの要求に応じてプロキシサーバ１−２からコンテンツデータや差分元データを取得する再リクエスト生成部３−６と、最終的にコンテンツデータをメモリ２０２に出力する出力部３−７とを有する。
【００３７】
入力部３−１はブラウザコアエンジン部２−１から受け取ったアドレスに基づいてメモリ２０２からリプライデータを読み出して解析部３−２に出力する。
【００３８】
解析部３−２ではリプライデータに含まれるモード情報に基づいて処理方針を決定する。モード情報には後述するように通常の転送（Ｍｏｄｅ：  Ｎｏｎｅ）、圧縮転送（Ｍｏｄｅ：  Ｃｏｍｐｒｅｓｓ）、差分転送（Ｍｏｄｅ：  Ｄｉｆｆｅｒｅｎｔｉａｌ）の３つのいずれかが設定されていて、モードが通常の転送の場合はリプライデータを登録部３−４へ出力し、圧縮転送及び差分転送の場合はリプライデータを合成部３−５へ出力する。
【００３９】
登録部３−４ではリプライデータからコンテンツデータを抽出してＦＰ値と関連付けてＦＰキャッシュ領域３−３に登録する。
【００４０】
合成部３−５ではＦＰ値を利用してコンテンツデータの合成を行う。圧縮転送ならばＦＰ値に対応するコンテンツデータをＦＰキャッシュ領域３−３内で探索する。ＦＰキャッシュ領域３−３内に存在しない場合はＦＰ値を再リクエスト生成部３−６に出力してプロキシサーバ１−２からコンテンツデータを取得させる。そして、ＦＰキャッシュ領域３−３あるいはプロキシサーバ１−２から得たコンテンツデータをリプライデータに書き込んで、登録部３−４へ出力する。
【００４１】
差分転送ならば、差分元ＦＰ値に対応する差分元データをＦＰキャッシュ領域３−３内で探索する。ＦＰキャッシュ領域３−３内に存在しない場合は差分元ＦＰ値を再リクエスト生成部３−６に出力してプロキシサーバ１−２から差分元データを取得させる。そして、ＦＰキャッシュ領域３−３あるいはプロキシサーバ１−２から得た差分元データとリプライデータに含まれる差分データからコンテンツデータを合成し、合成したコンテンツデータをリプライデータに書き込んで、登録部３−４へ出力する。
【００４２】
再リクエスト生成部３−６はプロキシサーバ１−２にアクセスして合成部３−５から受け取ったＦＰ値や差分元ＦＰ値に対応するコンテンツデータや差分元データを取得する。再リクエスト生成部３−６はブラウザコアエンジン部２−１を介さずにプロキシサーバ１−２にアクセスして直接ＨＴＴＰプロトコルで通信を行う。この時、ＨＴＴＰプロトコルのコマンドと一緒にＦＰ値と再リクエストであることを表すパラメータを送信して、プロキシサーバ１−２に通常のリクエストと異なることを通知する。具体的には、ＨＴＴＰプロトコルのリクエストにＦＰ値や再リクエストであることを表すヘッダを付加する。
【００４３】
プラグイン部２００は、ブラウザコアエンジン部２−１の機能を拡張するために用意されている。プラグイン部２００を実装しているＷｅｂブラウザ１−１の例としては、Ｎｅｔｓｃａｐｅ（Ｒ）  Ｎａｖｉｇａｔｏｒ、Ｎｅｔｓｃａｐｅ（Ｒ）  Ｃｏｍｍｕｎｉｃａｔｏｒ、Ｍｉｃｒｏｓｏｆｔ  Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ（Ｒ）等がある。これらのＷｅｂブラウザは、ソフトウエアで提供されるプラグインを組み込むことにより元々持っていない処理を行うことができるようになる。例えば、Ｗｅｂブラウザ内において動画再生ソフト等の特定のアプリケーションを起動させて制御することが可能となる。本実施形態では、ＦＰキャッシュ処理エンジン２−２をソフトウエアの形で提供して、プラグイン部２００に組み込んで動作させる。
【００４４】
ブラウザコアエンジン部２−１はユーザからのリクエスト等に応じて、コンテンツデータの取得を行う。まず、ＵＲＬを利用してキャッシュ２０１の探索を行う。キャッシュ２０１内に目的のコンテンツデータが存在する場合はそれを用いる。存在しない場合は、プロキシサーバ１−２へアクセスして目的とするコンテンツデータを含むリプライデータ取得してメモリ２０２に記憶させておく。
【００４５】
ブラウザコアエンジン部２−１は取得したコンテンツデータやリプライデータを解析し、プラグインが必要な場合は解析を中断してプラグインを起動する。プラグインの起動時にはメモリ２０２に記憶させたコンテンツデータやリプライデータのアドレスを出力する。そして、プラグインの処理が終わったら、コンテンツデータの解析を再開して表示等を行う。
【００４６】
ＦＰキャッシュ処理エンジン２−２は他のプラグインと同様にブラウザコアエンジン部２−１から起動される。起動時にブラウザコアエンジン部２−１からメモリ２０２で記憶しているリプライデータのアドレスを受け取り、リプライデータに対してＦＰ値によるキャッシュ処理を行ってブラウザコアエンジン部２−１に出力する。
【００４７】
（プロキシサーバの構成）図１０は本実施形態のプロキシサーバ１−３の構成を説明する図である。プロキシサーバ１−３は、Ｗｅｂブラウザ１−１からのリクエストメッセージを受け付けるリクエスト受信部４−１と、Ｗｅｂブラウザ１−１からのリクエストメッセージを解析してキャッシュとの照合を行う解析部４−２と、Ｗｅｂサーバ１−３へリクエストメッセージを転送するリクエスト送信部４−４と、ＦＰ値とＵＲＬとコンテンツデータを関連付けて記憶しておくキャッシュ領域４−３とを有する。このキャッシュ領域４−３は前述のキャッシュ１−２１に相当するものである。
【００４８】
さらに、Ｗｅｂサーバ１−３からの応答及びコンテンツデータを受信するリプライ受信部４−５と、受信したコンテンツデータがＦＰキャッシュ処理すべきものかを判定するＦＰ判定部４−６と、受信したコンテンツデータのＦＰ値を計算するＦＰ計算部４−８と、ＦＰ値に基づいてキャッシュ領域４−３内を探索するＦＰ管理部４−７とを有する。そして、コンテンツデータに所定の情報を付加してリプライデータを生成するリプライ生成部４−９と、Ｗｅｂブラウザ１−１へリプライデータを含むリプライメッセージを送信するリプライ送信部４−１０を有する。
【００４９】
リクエスト受信部４−１はＷｅｂブラウザ１−１からのＨＴＴＰプロトコルによるリクエストメッセージを受け付ける。
【００５０】
解析部４−２は受け付けたリクエストメッセージを解析する。そして、上述の（Ｂ）の場合のように、Ｗｅｂブラウザ１−１からのリクエストメッセージに含まれるＵＲＬに対応するコンテンツデータが、キャッシュ領域４−３に存在する場合はキャッシュ領域４−３からコンテンツデータと対応付けられたＦＰ値を読み出してリプライ生成部４−９へ出力する。尚、ＵＲＬに対応するコンテンツデータが存在しない場合はリクエストメッセージをリクエスト送信部４−４へ出力する。
【００５１】
また、Ｗｅｂブラウザ１−１から前述の（Ｃ−２）や（Ｄ−２）の場合の様に再リクエストメッセージが送信されてきた場合は、対応するコンテンツデータをキャッシュ領域４−３から読み出して、再リクエストメッセージに対する動作である旨の通知とともにリプライ生成部４−９へ出力する。
【００５２】
キャッシュ領域４−３はプロキシサーバ１−２がＷｅｂサーバ１−３から取得したコンテンツデータと、このコンテンツデータについて計算したＦＰ値と、このコンテンツデータのＵＲＬを関連付けて記憶している。ＦＰ値の性質上一つのコンテンツデータに対して対応するＦＰ値は原則として一つである。ＵＲＬは一つのデータに対して複数個存在していても良い。図１１はキャッシュ領域４−３が記憶するデータの例で、ＵＲＬと、コンテンツデータ全体のＦＰ値と、コンテンツデータ各行のＦＰ値をセットで記憶する。
【００５３】
リクエスト送信部４−４はＷｅｂブラウザ１−１からのリクエストメッセージをＷｅｂサーバ１−３に転送する。そして、リプライ受信部４−５はＷｅｂブラウザ１−１からのコンテンツデータを受信する。
【００５４】
ＦＰ判定部４−６はＷｅｂブラウザ１−１から受信したコンテンツデータの形式がＦＰに対応しているか否かを判別する。本実施形態では、ＦＰに対応しないデータ形式には、画像データやストリームデータ等がある。ＦＰ判定部４−６は、コンテンツデータがＦＰに対応していない形式である場合は、そのままリプライ送信部４−１０へ出力する。
【００５５】
ＦＰ管理部４−７は、受け取ったコンテンツデータのＦＰ値をＦＰ計算部４−８に計算させる。そして、得られたＦＰ値を用いてキャッシュ領域４−３内で同じＦＰ値を持つコンテンツデータを探索する。同じＦＰ値を持つコンテンツデータが見つからなかった場合はＦＰ値とコンテンツデータとを関連付けてキャッシュ領域４−３に登録するとともに、差分転送が可能かを調べ、差分転送が可能な場合は差分データの計算を行う。
【００５６】
差分転送を行うか否かの判断は、受け取ったコンテンツデータと類似するコンテンツデータがキャッシュ領域４−３に存在するかで判断する。類似性の判断は、受け取ったコンテンツデータとキャッシュ領域４−３に記憶されたコンテンツデータとを行単位で比較する。前述の通り、キャッシュ領域４−３に記憶されているコンテンツデータは各行のＦＰ値と共に記憶されているので、受け取ったコンテンツデータの各行のＦＰ値と比較して、ＦＰ値が所定の行数以上一致する場合は類似性が高いと判断して差分転送を行う。
【００５７】
ＦＰ計算部４−８はＦＰ管理部４−７から与えられたコンテンツデータのＦＰ値を計算する。ＦＰ値の計算は、電子署名などに使われるＭＤ−５やＳＨＡ−１等のハッシュ関数を用いて行う。これらのハッシュ関数は、任意のデータをＭＤ−５を用いた場合は１２８ビットのハッシュ値に、ＳＨＡ−１を用いた場合は１６０ビットのハッシュ値に変換する性質を持つ。また、これらのハッシュ関数は、２つのデータＸ、Ｙが与えられた時ＸとＹが同一データならばＸに対するハッシュ値Ｈ（Ｘ）とＹに対するハッシュ値Ｈ（Ｙ）は等しくなるが、ＸとＹが異なるデータならば、極めて高い確率でＨ（Ｘ）とＨ（Ｙ）は異なる値になる。原理的には異なるデータに対してハッシュ値が同一になる場合が有り得るが、その可能性は極めて低い確率である。従って、有意なデータ同士かつ同一のハッシュ値をとる可能性は実用上無視できる。尚、ＦＰ値の計算にはハッシュ関数に限らず、例えば圧縮アルゴリズム等を用いても構わない。
【００５８】
リプライ生成部４−９はリプライ送信部４−１０がＷｅｂブラウザ１−１へ送信するリプライメッセージを生成する。
【００５９】
尚、本実施形態ではＦＰ判定部４−６でコンテンツデータがＦＰに対応した形式と判定された場合のみＦＰ管理部４−８でＦＰ値が計算されるが、ＦＰ値を計算してから判定を行うようにしても構わない。
【００６０】
（プロキシサーバがＷｅｂブラウザへ送信するリプライメッセージの構成）図１２（ａ）はリプライ生成部で生成されるリプライメッセージの構成の概略を説明する図である。リプライ生成部４−９はＨＴＴＰプロトコルに基づいて、ヘッダ部５−１とボディ部５−２とを有するリプライメッセージを生成する。ボディ部５−２はプロキシサーバ１−２で生成されたリプライデータで、ＦＰキャッシュ処理エンジンダウンロード命令５−２１と、ＦＰキャッシュ処理エンジン呼出命令５−２２と、フィンガープリント部５−２３と、コンテンツデータ部５−２４とを含んで構成されている。
【００６１】
ヘッダ部５−１は図１３のように、リクエストに対するステータス、データ形式等の情報を含んでいる。このフォーマットはＨＴＴＰプロトコルの標準的なものである。
【００６２】
ＦＰキャッシュ処理エンジンダウンロード命令５−２１は、Ｗｅｂブラウザ１−１がＦＰキャッシュ処理エンジン２−２を持っていない場合に、Ｗｅｂブラウザ１−１にダウンロードさせてプラグイン部２００に組み込ませるための命令を含む。従って、Ｗｅｂブラウザ１−１が既にＦＰキャッシュ処理エンジン２−２を持っている場合はＦＰキャッシュ処理エンジンダウンロード命令５−２１は特に何もしない。
【００６３】
ＦＰキャッシュ処理エンジン呼出命令５−２２はＷｅｂブラウザ１−１のプラグイン部２００に組み込まれたＦＰキャッシュ処理エンジン２−２を呼び出してＦＰ値を用いたキャッシュ機能を作動させるための命令を含む。
【００６４】
ＦＰキャッシュ処理エンジンダウンロード命令５−２１及びＦＰキャッシュ処理エンジン呼出命令５−２２はブラウザコアエンジン部２−１がリプライデータを解析する際に実行される。
【００６５】
フィンガープリント部５−２３はＦＰ計算部４−８で計算されたＦＰ値と現在の転送モード（差分転送、ＦＰキャッシュを利用した圧縮転送、キャッシュを利用しない通常の転送）を表す識別子を含む。差分転送を行う場合、差分データもここに含まれる。
【００６６】
コンテンツデータ部５−２４はＷｅｂサーバ１−３から得た、あるいはキャッシュ領域４−３から読み出したコンテンツデータである。
【００６７】
ボディ部５−２の構成の具体例として図１４のような構成が挙げられる。この構成ではコンテンツデータ部５−２４がＨＴＭＬ形式で、ＦＰキャッシュ処理エンジンダウンロード命令５−２１、ＦＰキャッシュ処理エンジン呼出命令５−２２そしてフィンガープリント部５−２３はコンテンツデータ部５−２４の中に埋め込まれた形になっている。また、Ｗｅｂブラウザ１−１としてＭｉｃｒｏｓｏｆｔ  Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ（Ｒ）を用いている場合に有効な命令を使用している。
【００６８】
ＦＰキャッシュ処理エンジンダウンロード命令５−２１はＨＴＭＬの＜ＯＢＪＥＣＴ＞タグを用いて記述される。このタグは画像、音声、動画、アプリケーション等の様々なオブジェクトを他のファイルから挿入するために使うものである。Ｗｅｂブラウザ１−１のブラウザコアエンジン部２−１はＨＴＭＬファイルを解析してこのタグを見つけると、指定されているファイルをダウンロードして、自動的に実行する。
【００６９】
本実施形態においては＜ＯＢＪＥＣＴ＞タグ１０−１内のパラメータ１０−２でＦＰキャッシュ処理エンジン２−２のＡｃｔｉｖｅＸ（Ｒ）コントロールのファイルを指定している。Ｗｅｂブラウザ１−１は、指定されたファイルが未インストールの場合はｈｔｔｐ：／／ｗｗｗ．ｔｏｓｈｉｂａ．ｃｏ．ｊｐ／ＣｌｉｅｎｔＰｒｏｘｙ．ｃａｂからダウンロードしてインストールを行う。このファイルはプロキシサーバ１−２と同じサーバ上に存在しても良いし、プロキシサーバ１−２とは別の場所に存在していても構わない。
【００７０】
ＦＰキャッシュ処理エンジン呼出命令５−２２はＨＴＭＬの＜ＳＣＲＩＰＴ＞タグ１０−３で指定された領域に記述されたスクリプト言語で記述される。Ｗｅｂブラウザ１−１はＨＴＭＬファイル中で、＜ＳＣＲＩＰＴ＞と＜／ＳＣＲＩＰＴ＞の間に記述された内容をスクリプト言語の命令として解釈する。
【００７１】
本実施形態においては、ＦＰキャッシュ処理エンジン呼出命令５−２２はＭｉｃｒｏｓｏｆｔ（Ｒ）社のＪＳｃｒｉｐｔを用いて記述されていて、命令１０−４がこれに相当する。命令１０−４が実行されることで、ＦＰキャッシュ処理エンジン２−２は動作を開始し、同時にボディ部５−２を記憶しているメモリアドレスも通知される。
【００７２】
フィンガープリント部５−２３は、ＦＰ値１０−５のようにＦＰキャッシュ処理エンジン呼出命令５−２２の直後に埋め込まれる。さらに、転送モード情報も埋め込まれ、差分転送を行っているのか（Ｍｏｄｅ：  Ｄｉｆｆｅｒｅｎｔｉａｌ）、ＦＰ値による圧縮転送なのか（Ｍｏｄｅ：  Ｃｏｍｐｒｅｓｓ）、あるいはキャッシュを用いない通常の転送（Ｍｏｄｅ：  Ｎｏｎｅ）なのかをＦＰキャッシュ処理エンジンに識別させる。差分転送を行っている場合はＦＰ値と共に差分データも埋め込まれる。図１５は差分転送を行っている場合のフィンガープリント部５−２３の一例である。フィンガープリント部５−２３はＦＰ値１０１１と差分データ１０１２とを有し、差分データ１０１２は通常のデータ「明日の予定は＜ＢＲ＞」や「８：１０到着＜ＢＲ＞」等と共に差分元ＦＰ値１０１３、１０１４、１０１５を含んでいる。
【００７３】
差分元ＦＰ値の構成を図１６で説明する。差分元ＦＰ値は、差分元ＦＰ値による挿入行であることを示す識別子１０２１と、差分元データの引用すべき行を示す引用行指示子１０２２と、差分元データのＦＰ値１０２３とを含む。図１６の例だと、ＦＰ値「０１ｄｅｆｇｈｉｊｍｎｏ２３ｋｌ４５６７８９０ａｂｃｐｑｒｓｔｕ」を持つデータの「１行目から５行目（Ｌ１−Ｌ５）」を引用することを示している。ＦＰキャッシュ処理エンジン２−２において、この行が解釈されて適切なデータが挿入される。
【００７４】
尚、ここではＭｉｃｒｏｓｏｆｔ  Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ（Ｒ）で有効な例を紹介したが、ＨＴＭＬファイル中で使えるＪａｖａＳｃｒｉｐｔ（Ｒ）等の他のスクリプト言語を用いても同様な実装が可能である。
【００７５】
以上の説明はＷｅｂブラウザ１−１のブラウザコアエンジン部２−１からのリクエストに対するリプライメッセージのものである。リプライ生成部４−９は解析部４−２から再リクエストメッセージに対する動作である旨の通知があった場合は、ＦＰキャッシュ処理エンジン２−２の再リクエスト生成部３−６からの再リクエストに対するリプライメッセージであるので、上述のＦＰキャッシュ処理エンジンダウンロード命令５−２１やＦＰキャッシュ処理エンジン呼出命令５−２２は不要である。よって、図１２（ｂ）のようにボディ部５−２に差分元ＦＰ値５−３１と差分元データ５−３２をセットしたリプライメッセージを生成する。
【００７６】
（Ｗｅｂブラウザの動作）Ｗｅｂブラウザ１−１のブラウザコアエンジン部２−１はユーザのリクエストによりプロキシサーバ１−２へリクエストメッセージを送信し、それに対してプロキシサーバ１−２は上述の通りコンテンツデータにＦＰ値やＦＰキャッシュ処理エンジン２−２関連の命令を埋め込んでリプライデータを生成してリプライメッセージを返す。
【００７７】
図１７はブラウザコアエンジン部２−１の動作のうちプロキシサーバ１−２からリプライメッセージを受けた後の動作を説明するフローチャートである。
【００７８】
ブラウザコアエンジン部２−１はプロキシサーバ１−２から、リプライメッセージを受信し、リプライメッセージのボディ部５−２をメモリ２０２に記憶させる。図１４に示すように、ボディ部５−２にはＦＰキャッシュ処理エンジンダウンロード命令５−２１と、ＦＰキャッシュ処理エンジン呼出命令５−２２と、フィンガープリント部５−２３と、コンテンツデータ部５−２４とが含まれている。そして、ブラウザコアエンジン部２−１はボディ部５−２の解析を始める（ステップ８−１）。
【００７９】
まず、ＦＰキャッシュ処理エンジンダウンロード命令５−２１を実行する必要があるか否か、すなわち、Ｗｅｂブラウザ１−１のプラグイン部２００に、ＦＰキャッシュ処理エンジン２−２が組み込まれているかをチェックする（ステップ８−２）。組み込まれていなければダウンロードして組み込み（ステップ８−４）、組み込みが完了したらリプライデータの解析を再開して、図示しない画面に解析結果を表示する（ステップ８−５）。
【００８０】
組み込み済みならば、ＦＰキャッシュ処理エンジン呼出命令５−２２を実行して、プラグインであるＦＰキャッシュ処理エンジン２−２による処理を行わせる（ステップ８−３）。そして、ＦＰキャッシュ処理エンジン２−２の処理が完了したら、リプライデータ解析を再開して、図示しない画面に解析結果を表示する（ステップ８−５）。
【００８１】
次に、ＦＰキャッシュ処理エンジン２−２の動作を図１８を用いて説明する。
【００８２】
ブラウザコアエンジン部２−１がＦＰキャッシュ処理エンジン呼出命令５−２２を実行することで、ＦＰキャッシュ処理エンジン２−２はボディ部（リプライデータ）５−２を格納したメモリ２０２のアドレスを受け取って処理を開始する。ＦＰキャッシュ処理エンジン２−２は、メモリ２０２からボディ部５−２を読み出して、フィンガープリント部５−２３のモード情報を調べる（ステップ９−１）。
【００８３】
転送モードが通常の転送（Ｍｏｄｅ：  Ｎｏｎｅ）の場合は、コンテンツデータ部５−２４の内容とフィンガープリント部５−２３のＦＰ値をＦＰキャッシュ領域３−３に登録する（ステップ９−２）。そして、ＦＰキャッシュ処理エンジン２−２の処理を終える。
【００８４】
転送モードがＦＰ値を用いた圧縮転送（Ｍｏｄｅ：  Ｃｏｍｐｒｅｓｓ）の場合は、フィンガープリント部５−２３のＦＰ値を用いてＦＰキャッシュ領域３−３内で同じＦＰ値を持つコンテンツデータを探索する（ステップ９−３）。ＦＰキャッシュ領域３−３内に同じＦＰ値を持つコンテンツデータが存在した場合は、メモリ２０２にＦＰキャッシュ領域３−３で見つかったコンテンツデータを出力する（ステップ９−４）。
【００８５】
ＦＰキャッシュ領域３−３内に同じＦＰ値を持つコンテンツデータが存在しない場合は、ＦＰキャッシュ処理エンジン２−２はプロキシサーバ１−２に再リクエストメッセージを送信してコンテンツデータを取得する（ステップ９−５）。そして、取得したコンテンツデータをＦＰ値とともにＦＰキャッシュ領域３−３に登録し（ステップ９−６）、ステップ９−４を実行してメモリ２０２にコンテンツデータを記憶させる。そして、ＦＰキャッシュ処理エンジン２−２の処理を終える。
【００８６】
一方、転送モードが差分転送（Ｍｏｄｅ：  Ｄｉｆｆｅｒｅｎｔｉａｌ）の場合は、差分転送を行っているので、ＦＰキャッシュ領域３−３内で差分元ＦＰ値に対応するコンテンツデータである差分元データを探索する。差分転送の場合は差分元ＦＰ値を複数持つ場合もあるので、全ての差分元ＦＰ値について探索を行う（ステップ９−７）。
【００８７】
一つでも差分元ＦＰに対応する差分元データが存在しない場合は、ＦＰキャッシュ処理エンジン２−２はプロキシサーバ１−２に再リクエストメッセージを送信して必要な差分元データを取得する（ステップ９−８）。そして、全ての差分元データが揃ったら、差分元データと差分データを用いてコンテンツデータを合成する（ステップ９−９）。
【００８８】
ステップ９−６を実行して合成したコンテンツデータとＦＰ値を関連付けてＦＰキャッシュ領域３−３に登録するとともに、ステップ９−４を実行して合成したコンテンツデータをメモリ２０２に出力してボディ部５０２のコンテンツデータ部５−２４として記憶させる。そして、ＦＰキャッシュ処理エンジン２−２の処理を終える。
【００８９】
（プロキシサーバの動作）図１９はＷｅｂブラウザ１−１からリクエストメッセージを受けた際のプロキシサーバ１−２の動作を説明するフローチャートである。
【００９０】
プロキシサーバ１−２はＷｅｂブラウザ１−１から受信したリクエストメッセージを解析してＵＲＬ等の情報を抽出する（ステップ６−１）。そして、ＵＲＬに基づいてキャッシュ領域４−３内にそのＵＲＬに該当するコンテンツデータが存在するかを探索する（ステップ６−２）。
【００９１】
キャッシュ領域４−３にコンテンツデータが存在した場合は、該当するコンテンツデータとＦＰ値をキャッシュ領域４−３から読み出してリプライデータを生成し、Ｗｅｂブラウザ１−１へ送信する（ステップ６−３）。
【００９２】
キャッシュ領域４−３にコンテンツデータが存在しない場合は、リクエストメッセージをＷｅｂサーバ１−３に転送して該当するコンテンツデータの取得を行う（ステップ６−４）。そして、Ｗｅｂサーバ１−３からのリプライに含まれるコンテンツデータについてキャッシュ等の処理を行う（ステップ６−５）。
【００９３】
図２０はプロキシサーバ１−２がＷｅｂサーバ１−３からリプライ受信して、キャッシュ処理及びＷｅｂブラウザ１−１へのリプライメッセージのボディ部（リプライデータ）の生成処理を行う際の動作を説明するフローチャートである。
【００９４】
Ｗｅｂサーバ１−３からのリプライを受信し、コンテンツデータを抽出する（ステップ７−１）。抽出したコンテンツデータがＦＰキャッシュ対象データかを調べる（ステップ７−２）。
【００９５】
画像やストリームデータ等、ＦＰキャッシュの対象外のコンテンツデータの場合は、ＦＰキャッシュ処理を行わずにそのままリプライデータとして送信する（ステップ７−１１）。
【００９６】
ＦＰキャッシュ対象データの場合はコンテンツデータのＦＰ値を計算する（ステップ７−３）。そして、ＦＰ値をもとにキャッシュ領域４−３を探索して、同じＦＰ値を持つコンテンツデータを探す（ステップ７−４）。
【００９７】
同一ＦＰ値を持つコンテンツデータが存在する場合は、Ｗｅｂブラウザ１−１にはコンテンツデータの代わりにＦＰ値だけを送信するので、コンテンツデータのＦＰ値と圧縮転送を行うことを示す転送モード情報（Ｍｏｄｅ：  Ｃｏｍｐｒｅｓｓ）をボディ部５−２のフィンガープリント部５−２３にセットする（ステップ７−５）。そしてＦＰキャッシュダウンロード命令５−２１とＦＰキャッシュ処理エンジン呼出命令５−２２をセットする（ステップ７−１０）。
【００９８】
同一ＦＰ値を持つコンテンツデータが存在しない場合は、キャッシュ領域４−３にコンテンツデータとＦＰ値とＵＲＬを関連付けて登録する（ステップ７−６）。さらに、差分圧縮が可能かをチェックするため、ＦＰキャッシュ領域内のデータと行単位でのＦＰ値比較を行う（ステップ７−７）。
【００９９】
差分圧縮が可能な場合、すなわち所定の閾値以上の類似度を持つ差分元データが存在する場合は、コンテンツデータと差分元データの差分データを生成し、ボディ部５−２のフィンガープリント部５−２３に、差分データと差分元データのＦＰ値をセットする。
【０１００】
差分圧縮ができない場合は、ボディ部５−２のコンテンツデータ部５−２４にコンテンツデータをセットする。
【０１０１】
そして、コンテンツデータのＦＰ値と転送モード情報（差分圧縮ならば「Ｍｏｄｅ：  Ｄｉｆｆｅｒｅｎｔｉａｌ」、差分圧縮しない場合は「Ｍｏｄｅ：  Ｎｏｎｅ」）をボディ部５−２のフィンガープリント部５−２３にセットして（ステップ７−５）、ボディ部５−２のＦＰキャッシュダウンロード命令５−２１とＦＰキャッシュ処理エンジン呼出命令５−２２をそれぞれセットする（ステップ７−１０）。
【０１０２】
（プロキシサーバがＷｅｂブラウザへ送信するリプライメッセージの別の構成例）図２１はリプライ生成部で生成されるリプライメッセージの別の構成例の概略を説明する図である。リプライ生成部４−９はＨＴＴＰプロトコルに基づいて、ヘッダ部２１−１とボディ部２１−２とを有するリプライメッセージを生成する。
【０１０３】
ボディ部２１−２はプロキシサーバ１−２で生成されたリプライデータで、ＦＰキャッシュ処理エンジンダウンロード命令２１−２１と、ＦＰキャッシュ処理エンジン呼出命令２１−２２と、コンテンツデータ２１−２３とを含んで構成されている。
【０１０４】
ヘッダ部２２−１及びＦＰキャッシュ処理エンジンダウンロード命令２１−２１は前述のヘッダ部５−１及びＦＰキャッシュ処理エンジンダウンロード命令５−２１と同じであるので説明を省略する。
【０１０５】
ＦＰキャッシュ処理エンジン呼出命令２１−２２はＷｅｂブラウザ１−１のプラグイン部２００に組み込まれたＦＰキャッシュ処理エンジン２−２を呼び出してＦＰ値を用いたキャッシュ機能を作動させるための命令のほかに、ＦＰ値２１−６０と、モード情報２１−６１とを含む。ＦＰ値２１−６０とモード情報２１−６１はＦＰキャッシュ処理エンジン呼出命令２１−２２の一部として埋め込まれる。
【０１０６】
コンテンツデータ２１−２３には転送モードが通常転送の場合はコンテンツデータが含まれ、差分転送の場合は差分データが含まれ、圧縮転送の場合は空になる。
【０１０７】
ＦＰキャッシュ処理エンジンダウンロード命令２１−２１及びＦＰキャッシュ処理エンジン呼出命令２１−２２はブラウザコアエンジン部２−１がリプライデータを解析する際に実行される。
【０１０８】
ＦＰ値２１−６０にはＦＰ計算部４−８で計算されたＦＰ値が含まれる。そしてモード情報２１−６１には現在の転送モード（差分転送、圧縮転送、通常の転送）を表す情報が含まれる。
【０１０９】
ボディ部２１−２の構成の具体例として図２２のような構成が挙げられる。この構成ではボディ部２１−２がＨＴＭＬ形式で、ＦＰキャッシュ処理エンジンダウンロード命令２１−２１とＦＰキャッシュ処理エンジン呼出命令２１−２２とコンテンツデータ２１−２３とが埋め込まれた構成になっている。
【０１１０】
ＦＰキャッシュ処理エンジン呼出命令２１−２２は前述の５−２２と同様、＜ＳＣＲＩＰＴ＞タグから＜／ＳＣＲＩＰＴ＞タグまでの部分である。
【０１１１】
コンテンツデータ２１−２３は＜ＣＯＭＭＥＮＴ  ＩＤ＝”ＭＤＡＴＡ”＞タグと＜／ＣＯＭＭＥＮＴ＞タグの間に埋め込まれる。この「ＩＤ＝”ＭＤＡＴＡ”」はＦＰキャッシュ処理エンジン呼出命令２１−２２から、コンテンツデータを参照するための識別子になっている。
【０１１２】
ブラウザコアエンジン部２−１でＦＰキャッシュ処理エンジン呼出命令２１−２２を実行した際の処理の流れを説明する。まず、命令２２−１でＦＰキャッシュ処理エンジン２−２を呼出して、ｍｃｓｐというオブジェクト名を割り当てている。次に、命令２２−２はＦＰ値を変数ｆｐにセットする命令である。命令２２−３は上述の＜ＣＯＭＭＥＮＴ  ＩＤ＝”ＭＤＡＴＡ”＞タグと＜／ＣＯＭＭＥＮＴ＞タグの間に埋め込まれたコンテンツデータの内容を変数ｃｏｎｔｅｎｔｓにセットする命令である。
【０１１３】
命令２２−４のｍｃｓｐ．ｒｅｇＦＰというのは、ｍｃｓｐというオブジェクトのｒｅｇＦＰというメソッドを実行させる命令である。ＦＰキャッシュ処理エンジン２−２は３つの転送モードに応じた３つのメソッドを持ち、圧縮転送の場合はｕｎｃｏｍｐｒｅｓｓ、差分転送の場合はｍａｋｅＤａｔａ、通常の転送の場合はｒｅｇＦＰを実行することで、それぞれの転送モードに対応した処理を行うことができる。命令２２−１で生成したオブジェクトｍｃｓｐもこれら３つのメソッドを持つ。
【０１１４】
３つのメソッドについて説明する。まず、圧縮転送の場合に用いるｕｎｃｏｍｐｒｅｓｓメソッドは引数としてＦＰ値を取り、ＦＰ値に該当するコンテンツデータをＦＰキャッシュ領域３−３から抽出して返り値として返す。
【０１１５】
差分転送の場合に用いるｍａｋｅＤａｔａメソッドは引数としてＦＰ値と差分データ（図１５のように、差分元ＦＰ値を含んだもの）を取り、差分元ＦＰ値と差分データを用いてコンテンツデータを合成して、ＦＰキャッシュ領域３−３にＦＰ値とコンテンツデータを登録し、そしてコンテンツデータを返り値として返す。
【０１１６】
通常の転送の場合に用いるｒｅｇＦＰメソッドは引数としてＦＰ値とコンテンツデータを取り、ＦＰキャッシュ領域３−３にＦＰ値とコンテンツデータを登録してから、コンテンツデータを返り値として返す。
【０１１７】
命令２２−４では、ＦＰキャッシュ処理エンジン２−２の処理結果として得られるコンテンツデータを変数ｏｕｔｐｕｔにセットし、この変数の値を命令２２−５によってブラウザコアエンジン部２−１に出力する。
【０１１８】
命令２２−４で呼び出すメソッドの種類は、リプライメッセージ生成部４−９が、プロキシサーバ１−２の解析部４−２あるいはＦＰ管理部４−７が決めた転送モードに応じて、選択して生成したものである。従って、命令２２−４で実行するメソッドの種類がモード情報２１−６２となっている。この構成ではＷｅｂブラウザ１−１側では転送モードを判別する必要がない。
【０１１９】
このようにＦＰ値２１−６０及び転送モード情報２１−６１をＦＰキャッシュ処理エンジン呼出命令２１−２２に埋め込み、コンテンツデータ２１−２３及びここに含まれる差分データをＦＰキャッシュ処理エンジン呼出命令２１−２２から直接参照可能な構成にしておくことで、Ｗｅｂブラウザ１−１側でリプライメッセージからＦＰ値とコンテンツデータ及び差分データを分離する処理が不要になるという利点がある。
【０１２０】
【発明の効果】
以上本発明によれば、サーバ側にプロキシサーバを設置し、クライアント側で汎用ブラウザを用いるだけで、クライアント側に別途プロキシサーバを用意することなく、フィンガープリント圧縮や差分圧縮によってネットワーク負荷を軽減させることができる。
【図面の簡単な説明】
【図１】  本発明の一実施形態のデータ転送装置を用いるシステムの構成を説明する図。
【図２】  本発明の一実施形態のシステムにおけるコマンドやデータの流れを説明する図。
【図３】  本発明の一実施形態のシステムにおけるコマンドやデータの流れを説明する図。
【図４】  本発明の一実施形態のシステムにおけるコマンドやデータの流れを説明する図。
【図５】  本発明の一実施形態のシステムにおけるコマンドやデータの流れを説明する図。
【図６】  本発明の一実施形態のシステムにおけるコマンドやデータの流れを説明する図。
【図７】  本発明の一実施形態のシステムにおけるコマンドやデータの流れを説明する図。
【図８】  本発明の一実施形態のシステムにおけるＷｅｂブラウザの構成を説明する図。
【図９】  本発明の一実施形態のシステムにおけるＷｅｂブラウザのＦＰキャッシュ処理エンジンの構成を説明する図。
【図１０】  本発明の一実施形態のシステムにおけるプロキシサーバの構成を説明する図。
【図１１】  本発明の一実施形態のシステムにおけるプロキシサーバのＦＰキャッシュ領域に登録されるデータの例を説明する図。
【図１２】  （ａ）本発明の一実施形態のシステムにおいてプロキシサーバからＷｅｂブラウザへのリプライメッセージの構成の第１の例を説明する図。（ｂ）本発明の一実施形態のシステムにおいて、Ｗｅｂブラウザから再リクエストメッセージを受けた場合の、プロキシサーバからＷｅｂサーバへのリプライメッセージの構成を説明する図。
【図１３】  本発明の一実施形態のシステムにおいてプロキシサーバからＷｅｂブラウザへのリプライメッセージのヘッダ部の例を説明する図。
【図１４】  本発明の一実施形態のシステムにおいてプロキシサーバからＷｅｂブラウザへのリプライメッセージのボディ部の第１の例を説明する図。
【図１５】  本発明の一実施形態のシステムにおいてプロキシサーバが差分転送を行った場合のリプライメッセージのボディ部のフィンガープリント部の例を説明する図。
【図１６】  本発明の一実施形態のシステムにおいてプロキシサーバが差分転送を行った場合のフィンガープリント部の差分元ＦＰ値の例を説明する図。
【図１７】  本発明の一実施形態のシステムにおいてＷｅｂブラウザがプロキシサーバからリプライメッセージを受け取った後の処理を説明するフローチャート。
【図１８】  本発明の一実施形態のシステムにおいてＷｅｂブラウザのＦＰキャッシュ処理エンジンの処理を説明するフローチャート。
【図１９】  本発明の一実施形態のシステムにおいてプロキシサーバがＷｅｂブラウザからのリクエストを受け取った後の処理を説明するフローチャート。
【図２０】  本発明の一実施形態のシステムにおいてプロキシサーバがＷｅｂサーバからのリプライを受け取った後の処理を説明するフローチャート。
【図２１】  本発明の一実施形態のシステムにおいてプロキシサーバからＷｅｂブラウザへのリプライメッセージの構成の第２の例を説明する図。
【図２２】  本発明の一実施形態のシステムにおいてプロキシサーバからＷｅｂブラウザへのリプライメッセージのボディ部の第２の例を説明する図。
【符号の説明】
１−１  Ｗｅｂブラウザ
１−２  プロキシサーバ
１−３  Ｗｅｂサーバ
１−１１、１−１２  キャッシュ
１００  クライアント
１１０  Ｗｅｂサーバ側ネットワーク
１１１、１１２  サーバ
２−１  ブラウザコアエンジン部
２−２  ＦＰキャッシュ処理エンジン
２００  プラグイン部
２０１  キャッシュ領域
２０２  メモリ
３−１  入力部
３−２  解析部
３−３  ＦＰキャッシュ領域
３−４  登録部
３−５  合成部
３−６  再リクエスト生成部
３−７  出力部
４−１  リクエスト受信部
４−２  解析部
４−３  キャッシュ領域
４−４  リクエスト送信部
４−５  リプライ受信部
４−６  ＦＰ判定部
４−７  ＦＰ管理部
４−８  ＦＰ計算部
４−９  リプライ生成部
４−１０  リプライ送信部
１１０１  ＵＲＬ
１１０２  全体のＦＰ値
１１０３  各行のＦＰ値
１１０４  コンテンツデータ
５−１  ヘッダ部
５−２  ボディ部（リプライデータ）
５−２１  ＦＰキャッシュ処理エンジンダウンロード命令
５−２２  ＦＰキャッシュ処理エンジン呼出命令
５−２３  フィンガープリント部
５−２４  コンテンツデータ部
５−３１  差分元ＦＰ値
５−３２  差分元データ
１０−１  ＜ＯＢＪＥＣＴ＞タグ
１０−２  パラメータ
１０−３  ＜ＳＣＲＩＰＴ＞タグ
１０−４  命令
１０−５  ＦＰ値
１０１１  ＦＰ値
１０１２  差分データ
１０１３、１０１４、１０１５  差分元ＦＰ値
１０２１  識別子
１０２２  引用行指示子
１０２３  差分元データのＦＰ値
２１−１  ヘッダ部
２１−２  ボディ部（リプライデータ）
２１−２１  ＦＰキャッシュ処理エンジンダウンロード命令
２１−２２  ＦＰキャッシュ処理エンジン呼出命令
２１−２３  コンテンツデータ
２１−６０  ＦＰ値
２１−６１  モード情報
２２−１、２２−２、２２−３、２２−４、２２−５  命令
【図１】
0004020676.tif 000002
【図２】
0004020676.tif 000003
【図３】
0004020676.tif 000004
【図４】
0004020676.tif 000005
【図５】
0004020676.tif 000006
【図６】
0004020676.tif 000007
【図７】
0004020676.tif 000008
【図８】
0004020676.tif 000009
【図９】
0004020676.tif 000010
【図１０】
0004020676.tif 000011
【図１１】
0004020676.tif 000012
【図１２】
0004020676.tif 000013
【図１３】
0004020676.tif 000014
【図１４】
0004020676.tif 000015
【図１５】
0004020676.tif 000016
【図１６】
0004020676.tif 000017
【図１７】
0004020676.tif 000018
【図１８】
0004020676.tif 000019
【図１９】
0004020676.tif 000020
【図２０】
0004020676.tif 000021
【図２１】
0004020676.tif 000022
【図２２】
0004020676.tif 000023