(57)【要約】【課題】ネットワークの負荷を軽減できるプロキシ装置を提供すること。【解決手段】サーバ側プロキシ２３０からクライアント側プロキシ２４０へ新たな内容のリプライデータを転送するにあたって、両プロキシ２にて、該データと該データにハッシュ関数を適用して算出したフィンガープリントとを対応付けて、フィンガープリント・キャッシュに登録しておく。サーバ側プロキシ２３０からクライアント側プロキシ２４０へフィンガープリント・キャッシュに登録されたフィンガープリントと同じフィンガープリントを持つリプライデータを転送するにあたっては、該リプライデータの代わりに該フィンガープリントを転送し、同じフィンガープリントが登録されていないが、他の登録データを参照データとして参照データのフィンガープリントを利用することによって転送すべきデータを圧縮して表現できるならば、圧縮データを転送する。【選択図】      図１
2007293894.tif 000002
【特許請求の範囲】
【請求項１】
サーバ装置から送信されたデータを受信し、該データをその宛先となるクライアント装置に通ずるクライアント側プロキシ装置へ送信するサーバ側プロキシ装置であって、
前記サーバ装置から前記データを受信する受信手段と、
この受信手段が受信したデータのフィンガープリントを生成するフィンガープリント生成手段と、
前記受信手段が受信した前記データを参照データとして、該参照データに基づいて前記フィンガープリント生成手段が生成した前記フィンガープリントを、該参照データに関連付けてフィンガープリント・キャッシュとして保持するための保持手段と、
前記受信手段が受信したデータに基づいて前記フィンガープリント生成手段が生成した前記フィンガープリントが、前記フィンガープリント・キャッシュに保持されているか否か判定する第１の判定手段と、
前記フィンガープリントが前記フィンガープリント・キャッシュに保持されていないと前記第１の判定手段が判定した場合に、前記受信手段が受信した前記データの一つの部分若しくは複数の部分について、当該部分ごとに、前記フィンガープリント・キャッシュに保持されている前記参照データのうち、当該部分と同一の内容を含む参照データに関連付けられたフィンガープリントと、当該参照データにおいて当該同一の内容の存在する箇所を特定可能とする箇所情報との組からなる圧縮情報を求め、該圧縮情報と、前記受信手段が受信した前記データから該圧縮情報に対応する部分を除外した残りの内容を示す直接指定情報とを含む差分圧縮表現データを生成する差分圧縮処理手段と、
この差分圧縮処理手段が生成した前記差分圧縮表現データのデータ量につき、該差分圧縮表現データの元であった前記データのデータ量と該差分圧縮表現データのデータ量とにより算出される、圧縮の程度を示す値が、基準値以上であるか否かを判定する第２の判定手段と、
前記受信手段が前記データを受信した際に、前記フィンガープリントが前記フィンガープリント・キャッシュに保持されていると前記第１の判定手段が判定した場合には、該フィンガープリントの元であったデータの代わりに該フィンガープリントを含むフィンガープリント圧縮時データを、前記宛先となるクライアント装置宛として前記クライアント側プロキシ装置へ送信し、前記フィンガープリントが前記フィンガープリント・キャッシュに保持されていないと前記第１の判定手段が判定した場合には、前記差分圧縮処理手段が生成した前記差分圧縮表現データにつき、前記圧縮の程度を示す値が前記基準値以上であると前記第２の判定手段が判定したときは、前記フィンガープリントと該フィンガープリントの元であったデータとを関連付けて前記フィンガープリント・キャッシュに追加し、且つ、該差分圧縮表現データの元であったデータの代わりに該差分圧縮表現データを含む差分圧縮時データを、前記宛先となるクライアント装置宛として前記クライアント側プロキシ装置へ送信し、前記差分圧縮処理手段が生成した前記差分圧縮表現データにつき、前記圧縮の程度を示す値が前記基準値以上でないと前記第２の判定手段が判定したときは、前記フィンガープリントと該フィンガープリントの元であったデータとを関連付けて前記フィンガープリント・キャッシュに追加し、且つ、当該受信したデータを含む非圧縮時データを、前記宛先となるクライアント装置宛として前記クライアント側プロキシ装置へ送信する送信手段とを備えたことを特徴とするサーバ側プロキシ装置。
【請求項２】
前記送信手段は、前記差分圧縮時データ又は前記非圧縮時データを送信する際には、前記差分圧縮時データと前記非圧縮時データとの少なくとも一方について、前記差分圧縮時データにあっては該差分圧縮時データに含まれる差分圧縮表現データの元であったデータのフィンガープリントを付加し、前記非圧縮時データにあっては該非圧縮時データに含まれるデータのフィンガープリントを付加して送信することを特徴とする請求項１に記載のサーバ側プロキシ装置。
【請求項３】
前記送信手段は、前記差分圧縮時データ又は前記非圧縮時データを送信する際には、前記差分圧縮時データと前記非圧縮時データとのいずれについても、前記フィンガープリントを付加しないで送信することを特徴とする請求項１に記載のサーバ側プロキシ装置。
【請求項４】
前記差分圧縮時データに含まれる前記差分圧縮表現データは、前記圧縮情報として、１又は複数の前記参照データに対応する前記フィンガープリントと、当該各参照データからコピーすべき内容のオフセット及び長さを示す箇所情報とを含ものであるとともに、前記圧縮情報及び前記直接指定情報に加えて、当該各参照データからコピーした内容及び前記直接指定情報が示す内容の接続方法を示す情報を含むものであることを特徴とする請求項１に記載のサーバ側プロキシ装置。
【請求項５】
前記差分圧縮時データに含まれる前記差分圧縮表現データは、前記圧縮情報として、１つの前記参照データに対応する前記フィンガープリントと、該参照データのうち該差分圧縮表現データの元となったデータと相違する部分を示す箇所情報とを含み、前記直接指定情報として、該相違する部分に嵌め込むべき内容を含むものであることを特徴とする請求項１に記載のサーバ側プロキシ装置。
【請求項６】
前記サーバ側プロキシ装置は、ローカルエリアネットワークを介して前記サーバ装置と接続されたものであることを特徴とする請求項１に記載のサーバ側プロキシ装置。
【請求項７】
前記サーバ装置から受信する前記データは、前記クライアント装置が送信し前記クライアント側プロキシ装置及び前記サーバ側プロキシ装置を介して該サーバ装置へ転送されたリクエストデータへの返答として、該サーバ装置が送信するリプライデータであることを特徴とする請求項１ないし６のいずれか１項に記載のサーバ側プロキシ装置。
【請求項８】
サーバ装置から送信されたデータをサーバ側プロキシ装置を介して受信し、該データをその宛先となるクライアント装置へ送信するクライアント側プロキシ装置であって、
前記データを参照データとして、該参照データのフィンガープリントを、該参照データに関連付けてフィンガープリント・キャッシュとして保持するための保持手段と、
前記サーバ側プロキシ装置から、前記データの代わりに当該データのフィンガープリントを含むフィンガープリント圧縮時データ、当該データの代わりに、該データの一つの部分若しくは複数の部分について、当該部分ごとに指定された、当該部分と同一の内容を含む参照データのフィンガープリントと、当該参照データにおいて当該同一の内容の存在する箇所を特定可能とする箇所情報との組からなる圧縮情報と、該データから該圧縮情報に対応する部分を除外した残りの内容を示す直接指定情報とを含む差分圧縮表現データを含む差分圧縮時データ、又は当該データを含む非圧縮時データを受信するための受信手段と、
この受信手段が受信したデータが、前記フィンガープリント圧縮時データであるか、前記差分圧縮時データであるか又は前記非圧縮時データであるかを判定する種別判定手段と、
前記受信手段が前記差分圧縮時データを受信したと、前記種別判定手段が判定した場合に、該差分圧縮時データに含まれる前記差分圧縮表現データが含む、該差分圧縮表現データの元であったデータにおける前記部分に対応する前記圧縮情報が含む前記フィンガープリントと前記箇所情報との組を参照して、当該部分ごとに、前記フィンガープリント・キャッシュから当該識別子及び当該箇所情報をもとに当該部分と同一の内容を取得し、取得した当該部分と同一の内容と、前記差分圧縮表現データが含む直接指定情報とを用いて、該差分圧縮表現データの元であったデータを復元する復元処理手段と、
前記受信手段が前記フィンガープリント圧縮時データを受信したと、前記種別判定手段が判定した場合には、該圧縮データに含まれるフィンガープリントに関連付けて前記フィンガープリント・キャッシュに保持されているデータを、前記宛先となる前記クライアント装置へ送信し、前記受信手段が前記差分圧縮時データを受信したと、前記種別判定手段が判定した場合には、前記復元処理手段が該差分圧縮時データに含まれる差分圧縮表現データに基づいて復元したデータを、該データに基づいて生成された前記フィンガープリントに関連付けて前記フィンガープリント・キャッシュに追加し、且つ、該データを、前記宛先となる前記クライアント装置へ送信し、前記受信手段が前記非圧縮時データを受信したと、前記種別判定手段が判定した場合には、該非圧縮時データに含まれるデータを、該データに基づいて生成された前記フィンガープリントに関連付けて前記フィンガープリント・キャッシュに追加し、且つ、該データを、前記宛先となる前記クライアント装置へ送信する送信手段とを備えたことを特徴とするクライアント側プロキシ装置。
【請求項９】
前記サーバ側プロキシ装置は、
前記サーバ装置から前記データを受信する手段と、
受信された前記データのフィンガープリントを生成する手段と、
生成された前記フィンガープリントを、該フィンガープリントの元であった前記データに関連付けてサーバ側フィンガープリント・キャッシュとして保持する手段と、
受信された前記データに基づいて生成された前記フィンガープリントが前記サーバ側フィンガープリント・キャッシュに保持されていない場合に、受信された前記データの一つの部分若しくは複数の部分について、当該部分ごとに、前記フィンガープリント・キャッシュに保持されている前記参照データのうち、当該部分と同一の内容を含む参照データに関連付けられたフィンガープリントと、当該参照データにおいて当該同一の内容の存在する箇所を特定可能とする箇所情報との組からなる圧縮情報を求め、該圧縮情報と、前記受信手段が受信した前記データから該圧縮情報に対応する部分を除外した残りの内容を示す直接指定情報とを含む差分圧縮表現データを生成する差分圧縮処理手段と、
この差分圧縮処理手段が生成した前記差分圧縮表現データのデータ量につき、該差分圧縮表現データの元であった前記データのデータ量と該差分圧縮表現データのデータ量とにより算出される、圧縮の程度を示す値が、基準値以上であるか否かを判定する差分表現可否判定手段と、
前記データを受信した際に、該データに基づいて生成された前記フィンガープリントが前記サーバ側フィンガープリント・キャッシュに保持されている場合には、該フィンガープリントの元であったデータの代わりに該フィンガープリントを含むフィンガープリント圧縮時データを、前記宛先となるクライアント装置宛として前記クライアント側プロキシ装置へ送信し、該フィンガープリントが前記サーバ側フィンガープリント・キャッシュに保持されていない場合には、前記差分圧縮処理手段が生成した前記差分圧縮表現データにつき、前記圧縮の程度を示す値が前記基準値以上であると前記差分表現可否判定手段が判定したときは、該フィンガープリントと該フィンガープリントの元であったデータとを関連付けて前記サーバ側フィンガープリント・キャッシュに追加し、且つ、該差分圧縮表現データの元であったデータの代わりに該差分圧縮表現データを含む差分圧縮時データを、前記宛先となるクライアント装置宛として前記クライアント側プロキシ装置へ送信し、前記差分圧縮処理手段が生成した前記差分圧縮表現データにつき、前記圧縮の程度を示す値が前記基準値以上でないと前記差分表現可否判定手段が判定したときは、該フィンガープリントと該フィンガープリントの元であったデータとを関連付けて前記サーバ側フィンガープリント・キャッシュに追加し、且つ、当該受信したデータを含む非圧縮時データを、前記宛先となるクライアント装置宛として前記クライアント側プロキシ装置へ送信する手段とを有するものであることを特徴とする請求項８に記載のクライアント側プロキシ装置。
【請求項１０】
前記受信手段が前記差分圧縮時データを受信したと、前記種別判定手段が判定した場合に、前記復元処理手段が該差分圧縮時データに含まれる差分圧縮表現データに基づいて復元したデータに基づいて、該データのフィンガープリントを生成し、前記受信手段が前記非圧縮時データを受信したと、前記種別判定手段が判定した場合に、該非圧縮時データに含まれるデータに基づいて、該データのフィンガープリントを生成するフィンガープリント生成手段を更に備え、
前記送信手段は、受信した前記差分圧縮時データについては、該差分圧縮時データに含まれる差分圧縮表現データに基づいて前記復元処理手段が復元したデータを、該データに基づいて前記フィンガープリント生成手段が生成したフィンガープリントに関連付けて前記フィンガープリント・キャッシュに追加し、受信した前記非圧縮時データについては、該非圧縮時データに含まれるデータを、該データに基づいてフィンガープリント生成手段が生成したフィンガープリントに関連付けて前記フィンガープリント・キャッシュに追加することを特徴とする請求項８または９に記載のクライアント側プロキシ装置。
【請求項１１】
前記受信手段が受信した前記差分圧縮時データには、該差分圧縮時データに含まれる差分圧縮表現データの元であったデータに基づいて生成されたフィンガープリントが含まれ、
前記クライアント側プロキシ装置は、前記受信手段が前記非圧縮時データを受信したと、前記種別判定手段が判定した場合に、該非圧縮時データに含まれる前記データに基づいて、該データのフィンガープリントを生成するフィンガープリント生成手段を更に備え、
前記送信手段は、受信した前記差分圧縮時データについては、該差分圧縮時データに含まれる差分圧縮表現データに基づいて前記復元処理手段が復元したデータを、該差分圧縮時データに含まれるフィンガープリントに関連付けて前記フィンガープリント・キャッシュに追加し、受信した前記非圧縮時データについては、該非圧縮時データに含まれるデータを、該データに基づいてフィンガープリント生成手段が生成した前記フィンガープリントに関連付けて前記フィンガープリント・キャッシュに追加することを特徴とする請求項８または９に記載のクライアント側プロキシ装置。
【請求項１２】
前記受信手段が受信した前記非圧縮時データには、該非圧縮時データに含まれるデータに基づいて生成されたフィンガープリントが含まれ、
前記クライアント側プロキシ装置は、前記受信手段が前記差分圧縮時データを受信したと、前記種別判定手段が判定した場合に、該差分圧縮時データに含まれる差分圧縮表現データに基づいて前記復元処理手段が復元した前記データに基づいて、該データのフィンガープリントを生成するフィンガープリント生成手段を更に備え、
前記送信手段は、受信した前記圧縮縮データについては、該差分圧縮時データに含まれる差分圧縮表現データに基づいて前記復元処理手段が復元した前記データを、該データに基づいてフィンガープリント生成手段が生成した前記フィンガープリントに関連付けて前記フィンガープリント・キャッシュに追加し、受信した前記非圧縮時データについては、前記データを、該非圧縮時データに含まれる前記フィンガープリントに関連付けて前記フィンガープリント・キャッシュに追加することを特徴とする請求項８または９に記載のクライアント側プロキシ装置。
【請求項１３】
前記受信手段が受信した前記差分圧縮時データには、該差分圧縮時データに含まれる差分圧縮表現データの元であったデータに基づいて生成されたフィンガープリントが含まれ、
前記受信手段が受信した前記非圧縮時データには、該非圧縮時データに含まれるデータに基づいて生成されたフィンガープリントが含まれ、
前記送信手段は、受信した前記差分圧縮時データについては、該差分圧縮時データに含まれる差分圧縮表現データに基づいて前記復元処理手段が復元したデータを、該差分圧縮時データに含まれるフィンガープリントに関連付けて前記フィンガープリント・キャッシュに追加し、受信した前記非圧縮時データについては、前記データを、該非圧縮時データに含まれる前記フィンガープリントに関連付けて前記フィンガープリント・キャッシュに追加することを特徴とする請求項８または９に記載のクライアント側プロキシ装置。
【請求項１４】
前記フィンガープリント圧縮時データは、それがフィンガープリント圧縮時データであることを示す識別情報を含むものであり、前記差分圧縮時データは、それが差分圧縮時データであることを示す識別情報を含むものであり、前記非圧縮時データは、それが非圧縮時データであることを示す識別情報を含むものであり、
前記種別判定手段は、前記識別情報に基づいて前記判定を行うことを特徴とする請求項８または９に記載のクライアント側プロキシ装置。
【請求項１５】
前記フィンガープリント圧縮時データは、そのヘッダに前記フィンガープリントを含み、そのボディーはＮＵＬＬであり、前記差分圧縮時データは、それが差分圧縮時データであることを示す差分圧縮フラグをそのヘッダに含み、前記差分圧縮表現データをそのボディーに含み、且つ、そのヘッダとボディーのいずれにも前記フィンガープリントを含まないものであり、前記非圧縮時データは、それが非圧縮時データであることを示す非圧縮フラグをそのヘッダに含み、前記データをそのボディーに含み、且つ、そのヘッダとボディーのいずれにも前記フィンガープリントを含まないものであり、
前記種別判定手段は、前記ヘッダに前記フィンガープリントが含まれるか又は前記ボディーがＮＵＬＬであることを検出した場合に、前記受信手段が受信したデータが、前記フィンガープリント圧縮時データであると判断し、前記ヘッダに前記差分圧縮フラグを検出した場合に、前記受信手段が受信したデータが、前記差分圧縮時データであると判断し、前記ヘッダに前記非圧縮フラグを検出した場合に、前記受信手段が受信したデータが、前記非圧縮時データであると判断することを特徴とする請求項８または９に記載のクライアント側プロキシ装置。
【請求項１６】
前記差分圧縮時データに含まれる前記差分圧縮表現データは、前記圧縮情報として、１又は複数の前記参照データに対応する前記フィンガープリントと、当該各参照データからコピーすべき内容のオフセット及び長さを示す箇所情報とを含ものであるとともに、前記圧縮情報及び前記直接指定情報に加えて、当該各参照データからコピーした内容及び前記直接指定情報が示す内容の接続方法を示す情報を含むものであることを特徴とする請求項８または９に記載のクライアント側プロキシ装置。
【請求項１７】
前記差分圧縮時データに含まれる前記差分圧縮表現データは、前記圧縮情報として、１つの前記参照データに対応する前記フィンガープリントと、該参照データのうち該差分圧縮表現データの元となったデータと相違する部分を示す箇所情報とを含み、前記直接指定情報として、該相違する部分に嵌め込むべき内容を含むものであることを特徴とする請求項８または９に記載のクライアント側プロキシ装置。
【請求項１８】
前記クライアント側プロキシ装置は、ローカルエリアネットワークを介して前記クライアント装置と接続されたものであることを特徴とする請求項８または９に記載のクライアント側プロキシ装置。
【請求項１９】
前記サーバ装置から受信する前記データは、前記クライアント装置が送信し前記クライアント側プロキシ装置及び前記サーバ側プロキシ装置を介して該サーバ装置へ転送されたリクエストデータへの返答として、該サーバ装置が送信するリプライデータであることを特徴とする請求項８ないし１８のいずれか１項に記載のクライアント側プロキシ装置。
【請求項２０】
サーバ装置から送信されたデータを受信し、該データをその宛先となるクライアント装置に通ずるクライアント側プロキシ装置へ送信するものであるとともに、前記データを参照データとして、該参照データのフィンガープリントを、該参照データに関連付けてフィンガープリント・キャッシュとして保持するための保持手段を備えたサーバ側プロキシ装置のデータ転送方法であって、
前記サーバ装置から前記データを受信し、
受信した前記データのフィンガープリントを生成し、
受信した前記データに基づいて生成された前記フィンガープリントが、前記フィンガープリント・キャッシュに保持されているか否か判定し、
前記フィンガープリントが前記フィンガープリント・キャッシュに保持されていないと判定された場合に、受信した前記データの一つの部分若しくは複数の部分について、当該部分ごとに、前記フィンガープリント・キャッシュに保持されている前記参照データのうち、当該部分と同一の内容を含む参照データに関連付けられたフィンガープリントと、当該参照データにおいて当該同一の内容の存在する箇所を特定可能とする箇所情報との組からなる圧縮情報を求め、該圧縮情報と、受信した前記データから該圧縮情報に対応する部分を除外した残りの内容を示す直接指定情報とを含む差分圧縮表現データを生成し、
生成された前記差分圧縮表現データのデータ量につき、該差分圧縮表現データの元であった前記データのデータ量と該差分圧縮表現データのデータ量とにより算出される、圧縮の程度を示す値が、基準値以上であるか否かを判定し、
前記データを受信した際に、前記フィンガープリントが前記フィンガープリント・キャッシュに保持されていると判定された場合には、該フィンガープリントの元であったデータの代わりに該フィンガープリントを含むフィンガープリント圧縮時データを、前記宛先となるクライアント装置宛として前記クライアント側プロキシ装置へ送信し、前記フィンガープリントが前記フィンガープリント・キャッシュに保持されていないと判定された場合には、生成された前記差分圧縮表現データにつき、前記圧縮の程度を示す値が前記基準値以上であると判定されたときは、前記フィンガープリントと該フィンガープリントの元であったデータとを関連付けて前記フィンガープリント・キャッシュに追加し、且つ、該差分圧縮表現データの元であったデータの代わりに該差分圧縮表現データを含む差分圧縮時データを、前記宛先となるクライアント装置宛として前記クライアント側プロキシ装置へ送信し、生成された前記差分圧縮表現データにつき、前記圧縮の程度を示す値が前記基準値以上でないと判定されたときは、前記フィンガープリントと該フィンガープリントの元であったデータとを関連付けて前記フィンガープリント・キャッシュに追加し、且つ、当該受信したデータを含む非圧縮時データを、前記宛先となるクライアント装置宛として前記クライアント側プロキシ装置へ送信することを特徴とするデータ転送方法。
【請求項２１】
サーバ装置から送信されたデータをサーバ側プロキシ装置を介して受信し、該データをその宛先となるクライアント装置へ送信するものであるとともに、前記データを参照データとして、該参照データのフィンガープリントを、該参照データに関連付けてフィンガープリント・キャッシュとして保持するための保持手段を備えたクライアント側プロキシ装置のデータ転送方法であって、
前記サーバ側プロキシ装置から、前記データの代わりに当該データのフィンガープリントを含むフィンガープリント圧縮時データ、当該データの代わりに、該データの一つの部分若しくは複数の部分について、当該部分ごとに指定された、当該部分と同一の内容を含む参照データのフィンガープリントと、当該参照データにおいて当該同一の内容の存在する箇所を特定可能とする箇所情報との組からなる圧縮情報と、該データから該圧縮情報に対応する部分を除外した残りの内容を示す直接指定情報とを含む差分圧縮表現データを含む差分圧縮時データ、又は当該データを含む非圧縮時データを受信し、
受信された前記データが、前記フィンガープリント圧縮時データであるか、前記差分圧縮時データであるか又は前記非圧縮時データであるかを判定し、
前記差分圧縮時データを受信したと判定された場合に、該差分圧縮時データに含まれる前記差分圧縮表現データが含む、該差分圧縮表現データの元であったデータにおける前記部分に対応する前記圧縮情報が含む前記フィンガープリントと前記箇所情報との組を参照して、当該部分ごとに、前記フィンガープリント・キャッシュから当該識別子及び当該箇所情報をもとに当該部分と同一の内容を取得し、取得した当該部分と同一の内容と、前記差分圧縮表現データが含む直接指定情報とを用いて、該差分圧縮表現データの元であったデータを復元し、
前記フィンガープリント圧縮時データを受信したと判定された場合には、該圧縮データに含まれるフィンガープリントに関連付けて前記フィンガープリント・キャッシュに保持されているデータを、前記宛先となる前記クライアント装置へ送信し、前記差分圧縮時データを受信したと判定された場合には、該差分圧縮時データに含まれる差分圧縮表現データに基づいて復元された前記データを、該データに基づいて生成された前記フィンガープリントに関連付けて前記フィンガープリント・キャッシュに追加し、且つ、該データを、前記宛先となる前記クライアント装置へ送信し、前記非圧縮時データを受信したと判定された場合には、該非圧縮時データに含まれるデータを、該データに基づいて生成された前記フィンガープリントに関連付けて前記フィンガープリント・キャッシュに追加し、且つ、該データを、前記宛先となる前記クライアント装置へ送信することを特徴とするデータ転送方法。
【請求項２２】
サーバ装置から送信されたデータを受信し、該データをその宛先となるクライアント装置に通ずるクライアント側プロキシ装置へ送信するサーバ側プロキシ装置としてコンピュータを機能させるためのプログラムであって、
前記サーバ装置から前記データを受信する受信手段と、
この受信手段が受信したデータのフィンガープリントを生成するフィンガープリント生成手段と、
前記受信手段が受信した前記データを参照データとして、該参照データに基づいて前記フィンガープリント生成手段が生成した前記フィンガープリントを、該参照データに関連付けてフィンガープリント・キャッシュとして保持するための保持手段と、
前記受信手段が受信したデータに基づいて前記フィンガープリント生成手段が生成した前記フィンガープリントが、前記フィンガープリント・キャッシュに保持されているか否か判定する第１の判定手段と、
前記フィンガープリントが前記フィンガープリント・キャッシュに保持されていないと前記第１の判定手段が判定した場合に、前記受信手段が受信した前記データの一つの部分若しくは複数の部分について、当該部分ごとに、前記フィンガープリント・キャッシュに保持されている前記参照データのうち、当該部分と同一の内容を含む参照データに関連付けられたフィンガープリントと、当該参照データにおいて当該同一の内容の存在する箇所を特定可能とする箇所情報との組からなる圧縮情報を求め、該圧縮情報と、前記受信手段が受信した前記データから該圧縮情報に対応する部分を除外した残りの内容を示す直接指定情報とを含む差分圧縮表現データを生成する差分圧縮処理手段と、
この差分圧縮処理手段が生成した前記差分圧縮表現データのデータ量につき、該差分圧縮表現データの元であった前記データのデータ量と該差分圧縮表現データのデータ量とにより算出される、圧縮の程度を示す値が、基準値以上であるか否かを判定する第２の判定手段と、
前記受信手段が前記データを受信した際に、前記フィンガープリントが前記フィンガープリント・キャッシュに保持されていると前記第１の判定手段が判定した場合には、該フィンガープリントの元であったデータの代わりに該フィンガープリントを含むフィンガープリント圧縮時データを、前記宛先となるクライアント装置宛として前記クライアント側プロキシ装置へ送信し、前記フィンガープリントが前記フィンガープリント・キャッシュに保持されていないと前記第１の判定手段が判定した場合には、前記差分圧縮処理手段が生成した前記差分圧縮表現データにつき、前記圧縮の程度を示す値が前記基準値以上であると前記第２の判定手段が判定したときは、前記フィンガープリントと該フィンガープリントの元であったデータとを関連付けて前記フィンガープリント・キャッシュに追加し、且つ、該差分圧縮表現データの元であったデータの代わりに該差分圧縮表現データを含む差分圧縮時データを、前記宛先となるクライアント装置宛として前記クライアント側プロキシ装置へ送信し、前記差分圧縮処理手段が生成した前記差分圧縮表現データにつき、前記圧縮の程度を示す値が前記基準値以上でないと前記第２の判定手段が判定したときは、前記フィンガープリントと該フィンガープリントの元であったデータとを関連付けて前記フィンガープリント・キャッシュに追加し、且つ、当該受信したデータを含む非圧縮時データを、前記宛先となるクライアント装置宛として前記クライアント側プロキシ装置へ送信する送信手段としてコンピュータを機能させるためのプログラム。
【請求項２３】
サーバ装置から送信されたデータをサーバ側プロキシ装置を介して受信し、該データをその宛先となるクライアント装置へ送信するクライアント側プロキシ装置としてコンピュータを機能させるためのプログラムであって、
前記データを参照データとして、該参照データのフィンガープリントを、該参照データに関連付けてフィンガープリント・キャッシュとして保持するための保持手段と、
前記サーバ側プロキシ装置から、前記データの代わりに当該データのフィンガープリントを含むフィンガープリント圧縮時データ、当該データの代わりに、該データの一つの部分若しくは複数の部分について、当該部分ごとに指定された、当該部分と同一の内容を含む参照データのフィンガープリントと、当該参照データにおいて当該同一の内容の存在する箇所を特定可能とする箇所情報との組からなる圧縮情報と、該データから該圧縮情報に対応する部分を除外した残りの内容を示す直接指定情報とを含む差分圧縮表現データを含む差分圧縮時データ、又は当該データを含む非圧縮時データを受信するための受信手段と、
この受信手段が受信したデータが、前記フィンガープリント圧縮時データであるか、前記差分圧縮時データであるか又は前記非圧縮時データであるかを判定する種別判定手段と、
前記受信手段が前記差分圧縮時データを受信したと、前記種別判定手段が判定した場合に、該差分圧縮時データに含まれる前記差分圧縮表現データが含む、該差分圧縮表現データの元であったデータにおける前記部分に対応する前記圧縮情報が含む前記フィンガープリントと前記箇所情報との組を参照して、当該部分ごとに、前記フィンガープリント・キャッシュから当該識別子及び当該箇所情報をもとに当該部分と同一の内容を取得し、取得した当該部分と同一の内容と、前記差分圧縮表現データが含む直接指定情報とを用いて、該差分圧縮表現データの元であったデータを復元する復元処理手段と、
前記受信手段が前記フィンガープリント圧縮時データを受信したと、前記種別判定手段が判定した場合には、該圧縮データに含まれるフィンガープリントに関連付けて前記フィンガープリント・キャッシュに保持されているデータを、前記宛先となる前記クライアント装置へ送信し、前記受信手段が前記差分圧縮時データを受信したと、前記種別判定手段が判定した場合には、前記復元処理手段が該差分圧縮時データに含まれる差分圧縮表現データに基づいて復元したデータを、該データに基づいて生成された前記フィンガープリントに関連付けて前記フィンガープリント・キャッシュに追加し、且つ、該データを、前記宛先となる前記クライアント装置へ送信し、前記受信手段が前記非圧縮時データを受信したと、前記種別判定手段が判定した場合には、該非圧縮時データに含まれるデータを、該データに基づいて生成された前記フィンガープリントに関連付けて前記フィンガープリント・キャッシュに追加し、且つ、該データを、前記宛先となる前記クライアント装置へ送信する送信手段としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、他の装置のためにデータ転送を行うサーバ側プロキシ装置、クライアント側プロキシ装置、データ転送方法及びプログラムに関する。
【背景技術】
【０００２】
ネットワークを介して様々なサービスを提供するサーバと、所望のサービスをサーバに対して要求するクライアントとから構成される、クライアント・サーバ型の情報システムが広く利用されている。特に、インターネット上でＨＴＴＰプロトコルを使って通信するＷＥＢサーバとクライアントとからなるＷＯＲＬＤ ＷＩＤＥ ＷＥＢシステム（あるいは単にＷＥＢとも呼ばれる）は、大変広く利用されているクライアント・サーバ型の情報システムである。通常、サーバ上ではサーバプログラムが動作し、クライアント上ではブラウザなどの所定のツール（プログラム）が動作する。インターネット上で提供されるサービスの内容も多岐に渡っており、ネットワーク経由で文字、静止画像、動画像、音声等の情報（例えば、ホームページ、電子メール、デジタルコンテンツなど）や、プログラムなどを提供、配信あるいは転送などするサービス、また商品を販売するための電子店舗サービス、座席や部屋等の予約サービス、種々の契約の仲介サービスなど、種々のサービスが既に存在し、また次々と新たな形態のサービスが出現している。
【０００３】
ところで、ＷＥＢのようなクライアント・サーバ型の情報システムにおいては、提供されるサービスがどのような形態のものであろうと、基本的にはクライアント・サーバ間でデータ転送が行われることによってサービスが提供される。したがって、クライアントとサーバとの間で通信に用いるネットワークの容量（バンド幅）が、システム全体のボトルネックになりやすい。そこで、通常、ネットワークの負荷を軽減させるためにキャッシュ技術が用いられる。
【０００４】
ＷＥＢシステムの場合、クライアント上で動作するブラウザ等はキャッシュ機構を使用するものが多く、最近アクセスしたデータをキャッシュしている。ＷＥＢではＵＲＬと呼ばれる名前で情報やサービスを指定してアクセスがなされるので、クライアント上のキャッシュは、過去にＷＥＢサーバに要求した情報やサービスの結果として返されるデータのうちでキャッシュ可能なものを、そのＵＲＬと対応させてキャッシュに記録している。この場合、キャッシュ内にあるものと同じＵＲＬの情報やサービスのリクエストがあった際に、そのキャッシュ内の応答データが古くなっていないと判断できるならば、そのデータを返すことで、ＷＥＢサーバとの間の通信を無くすことができる。
【０００５】
企業のオフィス内のＬＡＮあるいは研究機関におけるＬＡＮあるいは家庭内のＬＡＮなどで複数のユーザがいる場合、該ＬＡＮとインターネットとの間にプロキシサーバを置き、プロキシサーバにキャッシュ機構を設けるようにすることも多い。クライアント内のキャッシュ（例えば、ブラウザのキャッシュ）は、当該クライアント・ユーザに専用のキャッシュとして動作するが、ＬＡＮ上のプロキシサーバのキャッシュは、複数のクライアント・ユーザに共有のキャッシュとして動作する。そのため、後者では、過去に他人（他クライアント）がアクセスしたＵＲＬに対してアクセスする際にもキャッシュが効く。
【０００６】
さて、ＷＥＢにおいて、クライアントとサーバとの間は、ＨＴＴＰと呼ぶプロトコルで通信が行われる。ＨＴＴＰプロトコルは、クライアントからサーバへ送る「リクエストメッセージ」と、それに答えてサーバからクライアントへ応答を返す「リプライメッセージ」とが組になっている。
【０００７】
リクエストメッセージは、「リクエストヘッダ」と「リクエストボディ」からなる。リクエストヘッダには、アクセスしたい情報やサービスを指定するＵＲＬやアクセスの種類を示すメソッド名、その他アクセスに必要な各種の情報が入る。リクエストボディには、サーバに送るデータを入れる。リクエストボディに入っているデータを「リクエストデータ」とも呼ぶ。
【０００８】
リプライメッセージは、「リプライヘッダ」と「リプライボディ」からなる。リプライヘッダには、処理結果のステータスなどの情報が入り、リプライボディには要求された情報や要求されたサービスの処理結果などのデータが入る。リプライボディに入っているデータを「リプライデータ」とも呼ぶ。
【０００９】
リクエストメッセージのメソッドとしては、サーバ上の情報を読み出す「ＧＥＴメソッド」、ユーザの持つデータをサーバに書き込む「ＰＵＴメソッド」、リクエストの応じて処理した結果を送り返してもらう「ＰＯＳＴメソッド」が、情報やサービスのアクセスに用いられる主要なものである。その他、ＤＥＬＥＴＥなどのメソッドが定義されている。
【００１０】
多くの場合、ＧＥＴメソッドのリクエストメッセージのリクエストボディ、ＰＵＴメソッドのリプライメッセージのリプライボディは空である。ＰＯＳＴメソッドのリクエストメッセージのリクエストボディには、必要に応じてサーバ側での処理に用いる情報が入り、ＰＯＳＴメソッドのリプライメッセージのリプライボディには、その処理の結果のデータが入る。
【００１１】
ＧＥＴメソッドでサーバから読み出すデータは、読み出す毎にサーバ側で生成する「動的データ」と、既にサーバ側で記憶しているデータをそのまま送り返す「静的データ」に分けることができる。これらのうち、動的データについては、同じＵＲＬでも読み出す度に内容が異なる可能性があるので、多くの場合、サーバはキャッシュ不可の指定をそのリプライメッセージのヘッダに入れて送り返す。したがって、ＷＥＢのデータでキャッシュの対象になるのは、静的データの部分である。この静的データは、不特定多数のユーザが参照して構わない「共有データ」と、ユーザ認証することで特定のユーザだけがアクセスできるようにアクセス制御を行う「プライベートデータ」に分けることができる。前者の共有データは、どのようなキャッシュでもキャッシュ可能である。しかしながら、後者のプライベートデータは、プロキシサーバなどの共有キャッシュでは、キャッシュ不可である（プライベートデータは必ずサーバで認証して送り返す必要があるので）。ただし、ブラウザなどの個人専用のキャッシュの場合には、プライベートデータでもキャッシュは可能である。
【００１２】
ＰＯＳＴメソッドは、サーバ側で処理をした結果を返すので、一般的にサーバはキャッシュ不可の指定をリプライメッセージのヘッダに入れて結果を送り返す。そのため、通常はキャッシュの対象にはならない。
【００１３】
ＰＵＴメソッドは、データをサーバに送るものなので、キャッシュは何も処理をしない。
【発明の開示】
【発明が解決しようとする課題】
【００１４】
従来のＷＥＢのキャッシュは、静的コンテンツをキャッシュの対象にしている。かつては、ＷＥＢで公開される情報やサービスには、情報の更新頻度がそれほど高くなく、不特定多数の人に公開されているものが多かったため、静的コンテンツの割合は非常に高く、従来のキャッシュ技術でもネットワークの負荷の軽減に有効であった。
【００１５】
しかしながら、ＷＥＢベースのＡＳＰ（Ａｐｐｌｉｃａｔｉｏｎ Ｓｅｒｖｉｃｅ Ｐｒｏｖｉｄｅｒ）のように、ユーザがＷＥＢブラウザを使って、ネットワーク経由でサーバ上の情報やサービスにアクセスするシステムが普及するにつれて、下記のように従来のキャッシュ技術では対応できないデータが増加している。  
・ユーザの認証を行い、アクセスできるユーザを制限しているので、プライベートデータが多い。  
・バックエンドのデータベースを参照して生成する動的データが多い。  
・帳票処理や検索などＰＯＳＴメソッドを使う場合が多い。  
・グループ内の情報共有のためにＰＵＴメソッドを使う場合が多い。  
この結果、キャッシュ技術のみではネットワークの負荷を軽減する手法として有効に機能しなくなってきている。
【００１６】
本発明は、上記事情を考慮してなされたもので、データ転送装置間を接続するネットワークの負荷をより軽減することができるキャッシュ技術・圧縮技術を備えたサーバ側プロキシ装置、クライアント側プロキシ装置、データ転送方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１７】
本発明は、サーバ装置から送信されたデータを受信し、該データをその宛先となるクライアント装置に通ずるクライアント側プロキシ装置へ送信するサーバ側プロキシ装置であって、前記サーバ装置から前記データを受信する受信手段と、この受信手段が受信したデータのフィンガープリントを生成するフィンガープリント生成手段と、前記受信手段が受信した前記データを参照データとして、該参照データに基づいて前記フィンガープリント生成手段が生成した前記フィンガープリントを、該参照データに関連付けてフィンガープリント・キャッシュとして保持するための保持手段と、前記受信手段が受信したデータに基づいて前記フィンガープリント生成手段が生成した前記フィンガープリントが、前記フィンガープリント・キャッシュに保持されているか否か判定する第１の判定手段と、前記フィンガープリントが前記フィンガープリント・キャッシュに保持されていないと前記第１の判定手段が判定した場合に、前記受信手段が受信した前記データの一つの部分若しくは複数の部分について、当該部分ごとに、前記フィンガープリント・キャッシュに保持されている前記参照データのうち、当該部分と同一の内容を含む参照データに関連付けられたフィンガープリントと、当該参照データにおいて当該同一の内容の存在する箇所を特定可能とする箇所情報との組からなる圧縮情報を求め、該圧縮情報と、前記受信手段が受信した前記データから該圧縮情報に対応する部分を除外した残りの内容を示す直接指定情報とを含む差分圧縮表現データを生成する差分圧縮処理手段と、この差分圧縮処理手段が生成した前記差分圧縮表現データのデータ量につき、該差分圧縮表現データの元であった前記データのデータ量と該差分圧縮表現データのデータ量とにより算出される、圧縮の程度を示す値が、基準値以上であるか否かを判定する第２の判定手段と、前記受信手段が前記データを受信した際に、前記フィンガープリントが前記フィンガープリント・キャッシュに保持されていると前記第１の判定手段が判定した場合には、該フィンガープリントの元であったデータの代わりに該フィンガープリントを含むフィンガープリント圧縮時データを、前記宛先となるクライアント装置宛として前記クライアント側プロキシ装置へ送信し、前記フィンガープリントが前記フィンガープリント・キャッシュに保持されていないと前記第１の判定手段が判定した場合には、前記差分圧縮処理手段が生成した前記差分圧縮表現データにつき、前記圧縮の程度を示す値が前記基準値以上であると前記第２の判定手段が判定したときは、前記フィンガープリントと該フィンガープリントの元であったデータとを関連付けて前記フィンガープリント・キャッシュに追加し、且つ、該差分圧縮表現データの元であったデータの代わりに該差分圧縮表現データを含む差分圧縮時データを、前記宛先となるクライアント装置宛として前記クライアント側プロキシ装置へ送信し、前記差分圧縮処理手段が生成した前記差分圧縮表現データにつき、前記圧縮の程度を示す値が前記基準値以上でないと前記第２の判定手段が判定したときは、前記フィンガープリントと該フィンガープリントの元であったデータとを関連付けて前記フィンガープリント・キャッシュに追加し、且つ、当該受信したデータを含む非圧縮時データを、前記宛先となるクライアント装置宛として前記クライアント側プロキシ装置へ送信する送信手段とを備えたことを特徴とする。
【００１８】
本発明は、サーバ装置から送信されたデータをサーバ側プロキシ装置を介して受信し、該データをその宛先となるクライアント装置へ送信するクライアント側プロキシ装置であって、前記データを参照データとして、該参照データのフィンガープリントを、該参照データに関連付けてフィンガープリント・キャッシュとして保持するための保持手段と、前記サーバ側プロキシ装置から、前記データの代わりに当該データのフィンガープリントを含むフィンガープリント圧縮時データ、当該データの代わりに、該データの一つの部分若しくは複数の部分について、当該部分ごとに指定された、当該部分と同一の内容を含む参照データのフィンガープリントと、当該参照データにおいて当該同一の内容の存在する箇所を特定可能とする箇所情報との組からなる圧縮情報と、該データから該圧縮情報に対応する部分を除外した残りの内容を示す直接指定情報とを含む差分圧縮表現データを含む差分圧縮時データ、又は当該データを含む非圧縮時データを受信するための受信手段と、この受信手段が受信したデータが、前記フィンガープリント圧縮時データであるか、前記差分圧縮時データであるか又は前記非圧縮時データであるかを判定する種別判定手段と、前記受信手段が前記差分圧縮時データを受信したと、前記種別判定手段が判定した場合に、該差分圧縮時データに含まれる前記差分圧縮表現データが含む、該差分圧縮表現データの元であったデータにおける前記部分に対応する前記圧縮情報が含む前記フィンガープリントと前記箇所情報との組を参照して、当該部分ごとに、前記フィンガープリント・キャッシュから当該識別子及び当該箇所情報をもとに当該部分と同一の内容を取得し、取得した当該部分と同一の内容と、前記差分圧縮表現データが含む直接指定情報とを用いて、該差分圧縮表現データの元であったデータを復元する復元処理手段と、前記受信手段が前記フィンガープリント圧縮時データを受信したと、前記種別判定手段が判定した場合には、該圧縮データに含まれるフィンガープリントに関連付けて前記フィンガープリント・キャッシュに保持されているデータを、前記宛先となる前記クライアント装置へ送信し、前記受信手段が前記差分圧縮時データを受信したと、前記種別判定手段が判定した場合には、前記復元処理手段が該差分圧縮時データに含まれる差分圧縮表現データに基づいて復元したデータを、該データに基づいて生成された前記フィンガープリントに関連付けて前記フィンガープリント・キャッシュに追加し、且つ、該データを、前記宛先となる前記クライアント装置へ送信し、前記受信手段が前記非圧縮時データを受信したと、前記種別判定手段が判定した場合には、該非圧縮時データに含まれるデータを、該データに基づいて生成された前記フィンガープリントに関連付けて前記フィンガープリント・キャッシュに追加し、且つ、該データを、前記宛先となる前記クライアント装置へ送信する送信手段とを備えたことを特徴とする。  
好ましくは、前記サーバ側プロキシ装置は、前記サーバ装置から前記データを受信する手段と、受信された前記データのフィンガープリントを生成する手段と、生成された前記フィンガープリントを、該フィンガープリントの元であった前記データに関連付けてサーバ側フィンガープリント・キャッシュとして保持する手段と、受信された前記データに基づいて生成された前記フィンガープリントが前記サーバ側フィンガープリント・キャッシュに保持されていない場合に、受信された前記データの一つの部分若しくは複数の部分について、当該部分ごとに、前記フィンガープリント・キャッシュに保持されている前記参照データのうち、当該部分と同一の内容を含む参照データに関連付けられたフィンガープリントと、当該参照データにおいて当該同一の内容の存在する箇所を特定可能とする箇所情報との組からなる圧縮情報を求め、該圧縮情報と、前記受信手段が受信した前記データから該圧縮情報に対応する部分を除外した残りの内容を示す直接指定情報とを含む差分圧縮表現データを生成する差分圧縮処理手段と、この差分圧縮処理手段が生成した前記差分圧縮表現データのデータ量につき、該差分圧縮表現データの元であった前記データのデータ量と該差分圧縮表現データのデータ量とにより算出される、圧縮の程度を示す値が、基準値以上であるか否かを判定する差分表現可否判定手段と、前記データを受信した際に、該データに基づいて生成された前記フィンガープリントが前記サーバ側フィンガープリント・キャッシュに保持されている場合には、該フィンガープリントの元であったデータの代わりに該フィンガープリントを含むフィンガープリント圧縮時データを、前記宛先となるクライアント装置宛として前記クライアント側プロキシ装置へ送信し、該フィンガープリントが前記サーバ側フィンガープリント・キャッシュに保持されていない場合には、前記差分圧縮処理手段が生成した前記差分圧縮表現データにつき、前記圧縮の程度を示す値が前記基準値以上であると前記差分表現可否判定手段が判定したときは、該フィンガープリントと該フィンガープリントの元であったデータとを関連付けて前記サーバ側フィンガープリント・キャッシュに追加し、且つ、該差分圧縮表現データの元であったデータの代わりに該差分圧縮表現データを含む差分圧縮時データを、前記宛先となるクライアント装置宛として前記クライアント側プロキシ装置へ送信し、前記差分圧縮処理手段が生成した前記差分圧縮表現データにつき、前記圧縮の程度を示す値が前記基準値以上でないと前記差分表現可否判定手段が判定したときは、該フィンガープリントと該フィンガープリントの元であったデータとを関連付けて前記サーバ側フィンガープリント・キャッシュに追加し、且つ、当該受信したデータを含む非圧縮時データを、前記宛先となるクライアント装置宛として前記クライアント側プロキシ装置へ送信する手段とを有するものであるようにしてもよい。
【００１９】
なお、装置に係る本発明は方法に係る発明としても成立し、方法に係る本発明は装置に係る発明としても成立する。また、装置または方法に係る本発明は、コンピュータに当該発明に相当する手順を実行させるための（あるいはコンピュータを当該発明に相当する手段として機能させるための、あるいはコンピュータに当該発明に相当する機能を実現させるための）プログラムとしても成立し、該プログラムを記録したコンピュータ読取り可能な記録媒体としても成立する。
【００２０】
本発明によれば、サーバ側プロキシ装置とクライアント側プロキシ装置との間で、データとそのフィンガープリントとの対応を保持し、この対応を保持しているデータについては、データを転送する代わりに対応するフィンガープリントを転送することで、サーバ側プロキシ装置とクライアント側プロキシ装置との間の転送データ量を削減することができる。
【００２１】
例えば、ＧＥＴメソッドのリプライメッセージがプライベートデータであっても、これをフィンガープリントにより圧縮してプロキシ装置間を転送することができるようになる。また、例えば、ＧＥＴメソッドのリプライメッセージが動的データであっても、内容が同じデータなら、これをフィンガープリントにより圧縮してプロキシ装置間を転送することができるようになる。また、例えば、ＰＯＳＴメソッドであっても、結果が同じデータなら、これをフィンガープリントにより圧縮してプロキシ装置間を転送することができるようになる。
【００２２】
また、本発明によれば、データに対応するフィンガープリントが保持されていないために、データを転送する代わりに対応するフィンガープリントを転送することができない場合であっても、保持されているデータに対応するフィンガープリントを利用して当該データを圧縮して表現したデータを転送することによって、プロキシ装置間の転送データ量を削減することができる。
【００２３】
例えば、ＧＥＴメソッドやＰＯＳＴメソッドのリプライデータが以前にアクセスしたデータと一部が異なる場合には、差分転送することで、データ量を削減することができる。また、例えば、ＰＵＴメソッドやＰＯＳＴメソッドのリクエストデータが以前に送ったデータと一部が異なる場合には、差分転送することでデータ量を削減することができる。
【発明の効果】
【００２４】
本発明によれば、サーバ側プロキシ装置とクライアント側プロキシ装置との間で、データとそのフィンガープリントとの対応を保持し、この対応を保持しているデータについては、データを転送する代わりに対応するフィンガープリントを転送することで、サーバ側プロキシ装置とクライアント側プロキシ装置との間の転送データ量を削減することができる。
【発明を実施するための最良の形態】
【００２５】
以下、図面を参照しながら発明の実施の形態を説明する。
【００２６】
以下では、ＷＡＮがインターネットであり、クライアントはユーザオフィスＬＡＮに接続されたものであり、ＨＴＴＰプロトコルが使用されるような場合を例にとって説明するが、もちろん、本発明は、ＷＡＮがインターネット以外のものであっても、クライアントがオフィス以外の例えば家庭内ＬＡＮ等に設置されたものであっても、ＨＴＴＰプロトコル以外のプロトコルが使用されるものであっても適用可能である。
【００２７】
図３８に本発明を適用するコンピュータ・ネットワーク・システムの基本的な構成例を示す。この構成例では、ＡＳＰサーバセンター２０２内のローカルエリアネットワーク（ＬＡＮ）２１２と、ユーザオフィス２０４内のローカルエリアネットワーク（ＬＡＮ）２１６との間が、インターネットや専用回線などの広域ネットワーク（ＷＡＮ）２１４を介して接続されており、ＡＳＰサーバセンター２０２内のサーバ２２０と、ユーザオフィス２０４内のクライアント２５０とが、ＬＡＮ２１２・ＷＡＮ２１４・ＬＡＮ２１６を介して通信可能になっている。ＡＳＰサーバセンター内ＬＡＮには１または複数のサーバが接続され、ユーザオフィス内ＬＡＮには１または複数のクライアントが接続される。
【００２８】
ＷＥＢベースのＡＳＰは、サーバセンター２０２に設置したサーバ２２０から、ＷＡＮ２１４を介して、様々なアプリケーションプログラムによるサービスを提供し、ユーザはオフィス２０４に設置されたクライアント上のＷＥＢブラウザ等を使ってそれらのサービスにアクセスする。
【００２９】
このような利用形態においては、ユーザオフィス内ＬＡＮ２１６とサーバセンター内ＬＡＮ２１２とをつなぐネットワーク、特にインターネットなどの広域ネットワーク２１４の実効的な通信容量（バンド幅）は、サーバセンター内ＬＡＮ２１２やユーザオフィス内ＬＡＮ２１６よりも低く、そこが性能上のボトルネックになって通信遅延が発生し、アプリケーションの応答性能が低下するという問題が発生する。
【００３０】
そこで、本実施形態では、図１に示すように、サーバセンター内ＬＡＮ２１２とユーザオフィス内ＬＡＮ２１６とをつなぐ広域ネットワーク２１４の両端に、サーバ側プロキシ２３０およびクライアント側プロキシ２４０という２つのモジュールを設置し、それらの間で後述するフィンガープリント圧縮（ＦＰ圧縮）または後述する差分圧縮を行って通信データ量を低減することで、広域ネットワークのボトルネックを解消する。
【００３１】
本実施形態のサーバ２２０、サーバ側プロキシ２３０、クライアント側プロキシ２４０、クライアント２５０は、いずれも、計算機上でソフトウェア（サーバ・プログラム、サーバ側プロキシ・プログラム、クライアント側プロキシ・プログラム、クライアント・プログラム）を動作させる形で実現することができる。この場合に、必要に応じて計算機所望の機能を有するＯＳやドライバソフト、パケット通信用ソフト、暗号ソフト等といったソフトウェア、あるいは通信インタフェース装置や外部記憶装置や入出力装置等といったハードウェアが搭載あるいは接続される。また、この場合に、ユーザあるいは管理者からの情報の入力やユーザへの情報の呈示等のために、グラフィカル・ユーザ・インタフェース（ＧＵＩ）を用いると好ましい。
【００３２】
サービスを利用するためにユーザが使用するクライアント２５０上では、その目的に応じて例えばＷＥＢブラウザ等のプログラムが動作する。ユーザは、例えば、ＷＥＢブラウザからインターネットを介し情報転送あるいは注文受付等の所望のサービスを提供するサーバにリクエストメッセージを出し、リプライメッセージを受けることによって、またはこれを適宜繰り返すことによって、サービスを利用する。もちろん、ＷＥＢブラウザ等の汎用のソフトウェアではなく、特定のサービスを利用するための専用のソフトウェアなどの他のものが用いられても構わない。また、クライアントは、汎用の計算機ではなく、例えばインターネット機能を有する携帯電話端末等でもよい。
【００３３】
サーバ２２０上では、所定のサーバ・プログラムが動作し、クライアント２２０のユーザに対して、当該サーバ・サイトに固有のサービスを提供する。
【００３４】
サーバ側プロキシ２３０は、図１のように、サーバセンター内ＬＡＮ２１２とＷＡＮ２１４との両方に接続し、トランスペアレント・プロキシとして動作するように設置して実施することができる。また、図２のように、サーバセンター内ＬＡＮ２１２上に設置して実施することもできる。また、図３のように、サーバ側プロキシ２３０の機能をサーバ２２０に内蔵するように実施することもできる。
【００３５】
同様に、クライアント側プロキシ２４０は、図１のように、ユーザオフィス内ＬＡＮ２１６とＷＡＮ２１４との両方に接続し、トランスペアレント・プロキシとして動作するように設置して実施することができる。また、図２のように、ユーザオフィス内ＬＡＮ２１６上に設置して実施することもできる。また、図３のように、クライアント側プロキシ２４０の機能をクライアント２５０上で動作するブラウザ等に内蔵するように実施することもできる。あるいは、ブラウザ等の動作するクライアント２５０上に、個人用のクライアント側プロキシ２４０を動作させるように実施することもできる。
【００３６】
なお、サーバ側プロキシ２３０とクライアント側プロキシ２４０とは、図１〜図３などのように同じ形態であってもよいし、異なる形態であってもよい。
【００３７】
以下では、フィンガープリント・キャッシュやこれを利用したＦＰ圧縮について説明し、次いで差分圧縮について説明する。
【００３８】
本実施形態のサーバ側プロキシ２３０およびクライアント側プロキシ２４０は、いずれも、フィンガープリント・キャッシュ（ＦＰキャッシュ）と呼ぶキャッシュ機構を持つ。フィンガープリント・キャッシュは、フィンガープリント（ＦＰ）と呼ぶ名前によって、ＨＴＴＰプロトコルでやりとりされるデータを記録・管理する。
【００３９】
フィンガープリントは、図４に例示するように、ＨＴＴＰプロトコルでやり取りされるデータ（図４の例ではコンテンツ）の内容から、あらかじめ決められた計算方法（図４の例ではハッシュ関数）で決定される、短い数値である。この数値は、可変長でもよいが、処理の容易さの観点では、固定長の数値の方が扱いやすい。
【００４０】
フィンガープリントを計算する方法としては、良く知られているＭＤ−５やＳＨＡ−１などのハッシュ関数を用いることができる。これらのハッシュ関数は、データに対する電子署名などに使われており、任意のデータが与えられると、ＭＤ−５の場合は１２８ビットの数値に、ＳＨＡ−１の場合は１６０ビットの数値に、変換することができる。これらのハッシュ関数の特徴は、２つのデータＸ１，Ｘ２が与えられ、データＸ１とデータＸ２とが同じであれば、データＸ１に対して計算したハッシュ値とデータＸ２に対して計算したハッシュ値とは等しくなるが、異なる２つのデータＡ，Ｂが与えられた場合には、データＡに対して計算したハッシュ値とデータＢに対して計算したハッシュ値とは、非常に高い確率で異なるものになることである（原理上は、異なる２つのデータＡ，Ｂに対してそれぞれ計算したハッシュ値が同じになる場合があるが、その確率は実用上無視できるくらいに小さい）。
【００４１】
図５に示すように、サーバ側プロキシ２３０やクライアント側プロキシ２４０の持つフィンガープリント・キャッシュ（図中の６０）は、過去にＨＴＴＰプロトコルでやり取りされたデータ本体（図中の６１）を、そのデータから計算して求めたフィンガープリントの値（図中の６２）を名前として、記録・管理している。
【００４２】
例えばＨＴＴＰプロトコルでサーバ側プロキシ２３０からクライアント側プロキシ２４０へデータを転送するときに、サーバ側プロキシ２３０は、当該データのフィンガープリントを計算し、そのフィンガープリントに対応するデータがフィンガープリント・キャッシュに入っていれば、当該データ（と同じ内容のデータ）は過去に転送したことがあるので、当該データを転送せずに、対応するフィンガープリントの値を転送する。フィンガープリントを受け取ったクライアント側プロキシ２４０は、当該フィンガープリントの値に対応するデータをフィンガープリント・キャッシュから取り出すことで、転送すべきデータを再現することができる。このような方式（すなわち、データ圧縮→データ転送→データ解凍）により、過去に送ったものと同じデータならばフィンガープリントの値を送るだけでよいので、ネットワークを流れるデータ量を大幅に削減することができる。もちろん、クライアント側プロキシ２４０からサーバ側プロキシ２３０へデータを転送するときも同様である。
【００４３】
説明上、サーバ側プロキシ２３０とクライアント側プロキシ２４０との間でのデータ転送にあたり、フィンガープリント・キャッシュを利用してメッセージ・ボディーのデータをフィンガープリントに置き換えて転送情報量を圧縮することを、フィンガープリント圧縮（ＦＰ圧縮）と呼ぶものとする。
【００４４】
なお、サーバ側プロキシ２３０とクライアント側プロキシ２４０との間において、すべてのメッセージをＦＰ圧縮を適用する対象（すなわち、フィンガープリント・キャッシュを利用してデータをフィンガープリントに置き換えるための処理を行う対象）としてもよいが、例えばフィンガープリント・キャッシュの効果が期待できないものなどに対する適用を除外するために、予め定められた条件を満たすメッセージについては、これをＦＰ圧縮の適用対象外とする（常にＦＰ圧縮しないで転送する）ようにしてもよい。この場合の予め定められた条件とは、例えば、メッセージ・ヘッダに予め定められた情報が記述されていることである。具体的には、例えば、メッセージ・ヘッダにＧＥＴメソッドを示す情報およびリクエストを示す情報が記述されていることである。また、予め定められた条件の他の例としては、転送されるデータが空（ｎｕｌｌ）あるいは非常に短いサイズであることである。もちろん、それらの他にも種々のバリエーションがある。また、複数の条件を組み合わせて使用するようにしてもよい。
【００４５】
続いて、差分圧縮について説明する。
【００４６】
前述のＦＰ圧縮では、データに対するフィンガープリントを用いてデータの同一性を高速に判断し、フィンガープリント・キャッシュに登録されているデータと同じデータはプロキシ間で転送しないようにして（代わりに当該データに対するフィンガープリントを転送するようにして）、ネットワークの負荷を低減させる。
【００４７】
しかし、フィンガープリント・キャッシュに登録されているデータと異なるデータは、たとえ大部分は同じ内容であってもＦＰ圧縮を適用できない。そこで、本実施形態では、ＦＰ圧縮できない場合であっても、フィンガープリント・キャッシュに登録されている１または複数のデータを参照データとして、参照データのフィンガープリントや、参照データに対する差分情報など転送すべきデータを復元するための情報によって、転送データを表現することによって、少ない情報量で転送データを表現し、なるべく転送データ量を減らすようにしている。すなわち、フィンガープリント・キャッシュの中のデータを辞書として使って、その中から取り出せるデータは送らないようにするのが基本的なアイデアである。
【００４８】
例えば、ＷＥＢベースのＡＳＰのような応用では、大部分は同じ内容であるが一部分だけが異なっているようなデータが多く使われる。例えば、帳票のデータなどは、多くのフィールドに同じ情報が記入されていて、一部分だけが違うようなものが多数存在する。また、例えば、Ｗｅｂページで日付もしくは時刻のみ異なるものや、総アクセス回数のカウンタ値のみ異なるものなどもある。このような場合には、特に有効になる。
【００４９】
また、このようなフィンガープリントを利用した差分圧縮は、転送すべきデータと参照データとの間の関係を予め取り決めておく必要がなという利点も得られる。すなわち、従来の差分転送の方法の場合には、予め双方で何をベースに差分を取るかを決める必要があったため、差分転送をＷＥＢシステムに実際に用いようとすると、このＵＲＬのデータはこのデータをベースに差分を取るというようなルールを、双方に登録する手段が必要であり、任意のデータに対して有効に機能させることは不可能であった。これに対して、本差分圧縮方法は、フィンガープリント・キャッシュの中にあるデータを参照データとして差分を取ることで、差分のベースを予め決めておかなくても、差分によるデータの圧縮の効果を得ることができる。
【００５０】
説明上、サーバ側プロキシ２３０とクライアント側プロキシ２４０との間でのデータ転送にあたり、フィンガープリント・キャッシュを利用してメッセージ・ボディーのデータを参照データのフィンガープリント等に置き換えて転送情報量を圧縮することを、差分圧縮と呼ぶものとする。
【００５１】
なお、ここでは、ＦＰ圧縮の適用対象のメッセージをすべて差分圧縮の適用対象にするものとする場合を例にとって説明する。もちろん、前述と同様に、ＦＰ圧縮の適用対象のメッセージのうち、予め定められた条件を満たすメッセージについては、これを差分圧縮の適用対象外とするようにしてもよい（この場合、差分圧縮を適用される条件が、ＦＰ圧縮を適用される条件に対して更に他の条件を加重したものになる）。例えば、ＦＰ圧縮しないデータサイズの上限値Ｕ１よりも、差分圧縮しないデータサイズの上限値Ｕ２を大きくする（ＦＰ圧縮すべきデータサイズの下限値Ｌ１よりも、差分圧縮すべきデータサイズの下限Ｌ２を大きくする）という方法や、ＦＰ圧縮の適用対象か否かはデータサイズで判断するが、差分圧縮の適用対象か否かについては、ＦＰ圧縮の適用対象のうちＨＴＭＬやＸＭＬ以外のデータを適用対象外とする（ＨＴＭＬやＸＭＬのデータに対してのみ差分圧縮を行う）という方法等、種々の方法がある。
【００５２】
本実施形態では、圧縮対象のメッセージは、結果的に、データがＦＰ圧縮されたメッセージ、データが差分圧縮されたメッセージ、またはデータが圧縮されていないメッセージのいずれかとして、サーバ側プロキシ２３０とクライアント側プロキシ２４０との間を転送されることになる。
【００５３】
ここで、差分圧縮の方法について説明する。
【００５４】
フィンガープリント・キャッシュを利用した差分圧縮の方法には次に例示するものなど種々の方法がある。  
・フィンガープリント・キャッシュに登録されているデータのうちの１つを参照データとする。プロキシ間では、参照データに対応するフィンガープリントの値と、転送データと参照データとの差分を示す情報とを転送する。  
・上記の方法において、参照データとの差分の全部または一部についても、フィンガープリント・キャッシュに登録されているデータを利用する。あるいは、フィンガープリント・キャッシュに登録されているデータ（の全体または部分）を組み合わせることによって転送データの全部または一部を表現する。例えば、フィンガープリント・キャッシュに登録されているデータのうち任意数のものを参照データとする。プロキシ間では、参照データに対応するフィンガープリントの値と、参照データのうち転送データの復元に使用する部分を示す情報と、その部分をもとにした転送データの復元方法を示す情報とを転送する。
【００５５】
以下では、差分圧縮データの表現方法の一例を示す。
【００５６】
図６に、転送すべきデータを表現するための３種類の指示を示す。データの代わりに転送される差分圧縮データは、これら指示の並びで構成する。
【００５７】
（ａ）は、フィンガープリント・キャッシュ内のデータを参照するときに、参照データに番号を付けて定義する指示である。１バイト目の８ｎ（図６の例では、ｎ＝０）は指示識別子である。この指示識別子のうちｎは、そのフィンガープリントで指定されるデータをｎ番の参照データとして扱うことを示す。２バイト目から始まる１６バイトが当該参照データに対するフィンガープリントの値を示す。この例では、８０〜８Ｆによってそれぞれ０番の参照データから、最大１５番までの参照データが扱えるようになっている。もちろん、扱える参照データの最大数は、実装によって多くも少なくもできる。
【００５８】
（ｂ）は、（ａ）で定義された参照データの中から部分データをコピーする指示を表す。１バイト目の９ｎ（図６の例では、ｎ＝０）は指示識別子である。この指示識別子のうちｎは、（ａ）の指示で定義されたｎ番の参照データを使用することを示す。２バイト目からの４バイトは、そのｎ番の参照データ中のオフセット位置を、６バイト目からの４バイトでデータの長さをそれぞれ指示する。そして、それらによって、ｎ番の参照データの中の指定オフセット位置から指定長さのデータを、この指示の並びの位置（順番）に従って（転送データの構成部分として）コピーすべきことを示す。
【００５９】
（ｃ）は、データを直接指定するための指示である。１バイト目のＡ０は、指示識別子である。２バイト目からの４バイトは、データの長さを示す。６バイト目以降に、その長さで指定されたバイト数のデータが続く。そして、それらによって、６バイト目以降のデータを、この指示の並びの位置（順番）に従って（転送データの構成部分として）コピーすることを示す。
【００６０】
このような指示の並びで構成された差分圧縮データは、フィンガープリント・キャッシュを参照しながら、指示された順にデータをコピーして接続していくだけで解凍することができる。
【００６１】
次に、上記の方法に従った差分圧縮の例を示す。
【００６２】
図７に示すようなデータがフィンガープリント５Ｅ８３…Ｂ６としてフィンガープリント・キャッシュに入っていたとする。
【００６３】
このとき、図８のようなデータが与えられると、図７のデータを参照データとして、図９のように差分圧縮することができる。
【００６４】
すなわち、図８のデータは、図７のデータと比較すると、図７のデータの『ＴＯＫＹＯ』が『ＯＳＡＫＡ』に変わっているだけである。そこで、図９のように、まず、０バイト目でフィンガープリント“５Ｅ８３…Ｂ６”のデータを０番参照データとして定義することを指示し、１７バイト目で０番参照データの０バイト目から６０バイトをコピーすることを指示し、次に２６バイト目で『ＯＳＡＫＡ』の５文字をコピーすることを指示し、最後に３６バイト目で０番参照データの６５バイト目から５１バイトをコピーすることを指示している。
【００６５】
この指示の通りに解凍すれば、図８のデータを再現することができる。
【００６６】
この例では、参照データを１つしか使わなかったが、複数個使うことも可能である。
【００６７】
次に、上記の方法に従った差分圧縮の他の例を示す。
【００６８】
図１０に示すようなデータがフィンガープリント８２Ｆ３…３８としてフィンガープリント・キャッシュに入っており、図１１に示すようなデータがフィンガープリントＡ２０Ｄ…ＣＢとしてフィンガープリント・キャッシュに入っていたとする。このとき、図１２のようなデータが与えられると、図１０のデータと図１１のデータを参照データとして、図１３のように差分圧縮することができる。
【００６９】
図１３では、まず、０バイト目でフィンガープリント“８２Ｆ３…３８”のデータを０番参照データとして定義することを指示し、１７バイト目で０番参照データの０バイト目から５３バイトをコピーすることを指示し、２６バイト目でフィンガープリント“Ａ２０Ｄ…ＣＢ”のデータを１番参照データとして定義することを指示し、４３バイト目で１番参照データの９６バイト目から５５バイトをコピーすることを指示している。
【００７０】
この指示の通りに解凍すれば、図１２のデータを再現することができる。
【００７１】
なお、上記した方法では、参照データの使用すべき部分の指示と、使用すべきデータの直接指定を行う方法（方法１）であったが、その代わりに、参照データのうち使用しない部分（直接指示データで置き換える部分）の指示と、その使用しない部分に嵌め込むデータの直接指定を行う方法（方法２）も可能である。
【００７２】
また、方法１と方法２を併用することも可能である。
【００７３】
次に、図１４〜図１８を参照しながら、サーバ側プロキシ２３０とクライアント側プロキシ２４０との間でデータ転送する際の（ＦＰ圧縮の適用対象のメッセージについての）プロキシ間メッセージ・フォーマットについて説明する。
【００７４】
サーバ側プロキシ２３０とクライアント側プロキシ２４０との間でデータ転送する場合、ＦＰ圧縮の適用対象のメッセージには、データがＦＰ圧縮されてフィンガープリントに置き換えられたメッセージ（ＦＰ圧縮時のメッセージ）と、ＦＰ圧縮されいないが、差分圧縮されたデータが搭載されているメッセージ（差分圧縮時のメッセージ）と、ＦＰ圧縮も差分圧縮もされていないデータが搭載されているメッセージ（非圧縮時のメッセージ）とがある。すべてのメッセージをＦＰ圧縮の適用対象とするのではない構成の場合には、これら３つのメッセージに加えて、ＦＰ圧縮の適用対象外のメッセージがある。
【００７５】
両プロキシのうち送信側プロキシにおいて、ＦＰ圧縮時のメッセージでは、データが削除され、フィンガープリントが付加され、差分圧縮時のメッセージでは、データが削除され、参照データのフィンガープリントなど当該データを復元するための情報が付加される。非圧縮時のメッセージおよび圧縮適用対象外のメッセージでは、データは削除されない。
【００７６】
両プロキシのうち受信側プロキシにおいては、上記の３種もしくは４種のメッセージを識別できる必要がある。ＦＰ圧縮時のメッセージ受信時は、フィンガープリントをデータに戻し、差分圧縮時のメッセージ受信時は、データを復元する。また、差分圧縮時または非圧縮時のメッセージ受信時は、フィンガープリント・キャッシュの登録を行う。
【００７７】
図１４に、メッセージ・フォーマットの一例を示す。（ａ）は非圧縮時のメッセージであり、（ｂ）は差分圧縮時のメッセージであり、（ｃ）はＦＰ圧縮時のメッセージである。
【００７８】
（ａ）ではメッセージ・ボディーにデータが載せられ、（ｂ）ではメッセージ・ボディーにデータの代わりに当該データを復元するための情報が載せられ、（ｃ）ではメッセージ・ボディーにデータの代わりにフィンガープリント（ＦＰ）が載せられる。
【００７９】
また、この例では、メッセージ・ヘッダに、メッセージの種類を識別可能とする識別情報が（圧縮側のプロキシにおいて）記述され、この識別情報に基づいて（解凍側のプロキシにおいて）ＦＰ圧縮の有無を識別する（例えば、０１ならば非圧縮なし、１０ならば差分圧縮、１１ならばＦＰ圧縮）。なお、識別情報は、プロキシ間で使用される特別のものであってもよいし、もともと通常のＨＴＴＰメッセージ・ヘッダに存在するフィールドを利用あるいは併用したものであってもよい。
【００８０】
なお、ＦＰ圧縮の適用対象外のメッセージが存在し得る構成の場合には、圧縮側（送信側）のプロキシにおいて、図１４（ｄ）に示すように、ＦＰ圧縮の適用対象外のメッセージのメッセージ・ヘッダに上記の識別情報（例えば、００とする）を含めればよい。
【００８１】
また、ＦＰ圧縮の適用対象外のメッセージが存在し得る構成の場合に、解凍側（受信側）プロキシにおいて、メッセージ・ヘッダに含まれる何らかの情報によって当該メッセージがＦＰ圧縮の適用対象外のメッセージであることを判断できるとき、あるいはメッセージ・ボディーが空（ｎｕｌｌ）のときに当該メッセージがＦＰ圧縮の適用対象外のメッセージであることを判断するようにしたときなどには、ＦＰ圧縮の適用対象外のメッセージのメッセージ・ヘッダには識別情報を含めないようにすることも可能である。
【００８２】
ここで、図３９に図１４（ａ）のフォーマットのメッセージの具体例を示し、図４０に図１４（ｂ）のフォーマットのメッセージの具体例を示し、図４１に図１４（ｃ）のフォーマットのメッセージの具体例を示し、図４２に図１４（ｄ）のフォーマットのメッセージの具体例を示す。各図のヘッダ中の“Ｆｉｎｇｅｒｐｒｉｎｔ−Ｍｏｄｅ：…”が識別情報に相当し、図４１のボディの“６Ｅ３９…０１２８”がフィンガープリントに相当する。
【００８３】
なお、非圧縮時や差分圧縮時には、図１４（ａ），（ｂ）の例では、メッセージに当該データに対するフィンガープリントを含ませなかったが、メッセージ・ヘッダにフィンガープリントを含ませるようにしてもよい（あるいは、メッセージ・ボディーに当該データに対するフィンガープリントを含ませるようにしてもよい）。図１５（ａ）〜（ｃ）は、非圧縮時や差分圧縮時には、メッセージ・ヘッダにフィンガープリントを含ませ、ＦＰ圧縮時には、メッセージ・ボディーにフィンガープリントを含ませる場合の一例である。このようにすれば、解凍側で当該データについてフィンガープリント・キャッシュの登録を行う際に、該フィンガープリントを利用することによって、あらためて当該データからフィンガープリントを求める手間が省ける。
【００８４】
図４３に図１５（ａ）のフォーマットのメッセージの具体例を示し、図４４に、図１５（ｂ）のフォーマットのメッセージの具体例を示す。図１５（ｃ）のフォーマットのメッセージの具体例は図４１と同様である。図４３、図４４のヘッダ中の“Ｆｉｎｇｅｒｐｒｉｎｔ：…”がフィンガープリントに相当する。
【００８５】
なお、以上のいずれの場合においても、図１６に示すように、ＦＰ圧縮時のメッセージでは、メッセージ・ヘッダにフィンガープリント（ＦＰ）を含め、メッセージ・ボディーを空（ｎｕｌｌ）にしてもよい。
【００８６】
図４５に、図１６のフォーマットのメッセージの具体例を示す。
【００８７】
なお、以上の他にも、種々のメッセージ・フォーマットが可能である。
【００８８】
例えば、図１７では、（ａ）の非圧縮時のメッセージのヘッダに非圧縮フラグを記述し且つフィンガープリントは記述せず、（ｂ）の差分圧縮時のメッセージのヘッダに差分圧縮フラグを記述し且つフィンガープリントは記述せず、（ｃ）のＦＰ圧縮時のメッセージのヘッダにフィンガープリントは記述し且つボディーは空（ｎｕｌｌ）にする。
【００８９】
この場合には、メッセージ・ボディーが空（ｎｕｌｌ）であることあるいはメッセージのヘッダにフィンガープリントが記述されていることを検出するによって、当該メッセージがＦＰ圧縮時のメッセージであることを識別することができる。また、非圧縮時のメッセージや差分圧縮時のメッセージは、ヘッダに非圧縮フラグや差分圧縮フラグが記述されていることを検出することによって、識別することができる。
【００９０】
図４６に図１７（ａ）のフォーマットのメッセージの具体例を示し、図４７に、図１７（ｂ）のフォーマットのメッセージの具体例を示し、図４８に図１７（ｃ）のフォーマットのメッセージの具体例を示す。図４６のヘッダ中の“Ｎｏｎ−Ｃｏｍｐｒｅｓｓｉｏｎ：…”が非圧縮フラグに相当し、図４７のヘッダ中の“Ｄｉｆｆｅｒｅｎｃｉａｌ−Ｃｏｍｐｒｅｓｓｉｏｎ：…”が差分縮フラグに相当する。
【００９１】
なお、ＦＰ圧縮の適用対象外のメッセージが存在し得る構成の場合には、圧縮側（送信側）のプロキシにおいて、図１８の（ａ），（ｂ）に示すように（（ａ）はデータが空（ｎｕｌｌ）でない場合、（ｂ）はデータが空（ｎｕｌｌ）である場合）、ＦＰ圧縮の適用対象外のメッセージのメッセージ・ヘッダに対象外フラグを含めればよい。
【００９２】
また、ＦＰ圧縮の適用対象外のメッセージが存在し得る構成の場合に、解凍側（受信側）プロキシにおいて、メッセージ・ヘッダに含まれる何らかの情報によって当該メッセージがＦＰ圧縮の適用対象外のメッセージであることを判断できるときなどには、図１８の（ｃ），（ｄ）に示すように（（ｃ）はデータが空（ｎｕｌｌ）でない場合、（ｄ）はデータが空（ｎｕｌｌ）である場合）ＦＰ圧縮の適用対象外のメッセージのメッセージ・ヘッダには対象外フラグを含めないようにすることも可能である。
【００９３】
図４９に図１８（ａ）のフォーマットのメッセージの具体例を示し、図５０に図１８（ｂ）のフォーマットのメッセージの具体例を示し、図５１に図１８（ｃ）のフォーマットのメッセージの具体例を示し、図５２に図１８（ｄ）のフォーマットのメッセージの具体例を示す。図４９、図５０のヘッダ中の“Ｎｏ−ＦＰ−Ｃｏｍｐｒｅｓｓｉｏｎ：…”が対象外フラグに相当する。
【００９４】
以下では、サーバ側プロキシ２３０からクライアント側プロキシ２４０へリプライメッセージを転送するときにそのリプライデータをＦＰ圧縮・解凍する場合を中心に本実施形態について詳しく説明する。
【００９５】
図１９に本実施形態のサーバ側プロキシ２３０の構成例を示し、図２０に本実施形態のクライアント側プロキシ２４０の構成例を示す。なお、図１９や図２０は、サーバ側プロキシ２３０からクライアント側プロキシ２４０へデータを転送する際の構成を中心に示してある。
【００９６】
図１９に示されるように、本サーバ側プロキシ２３０は、サーバセンター内ＬＡＮ２１２または広域ネットワーク２１４から転送メッセージを受信するための処理を行う受信部２３１、転送メッセージに含まれるデータに対してＦＰ圧縮、差分圧縮を施すための処理部２３２、サーバセンター内ＬＡＮ２１２または広域ネットワーク２１４へ転送メッセージを送信するための処理を行う送信部２３３、フィンガープリントとそのもととなったデータとを対応付けて記憶するためのフィンガープリント・キャッシュ（ＦＰキャッシュ）２３４を備えている。また、処理部２３２は、転送メッセージに含まれるデータを圧縮対象とすべきか否かを判定するためのフィンガープリント（ＦＰ）圧縮判定部２３２１、フィンガープリント・キャッシュ２３４に対する検索や登録などを行うためのフィンガープリント・キャッシュ（ＦＰキャッシュ）管理部２３２２、転送メッセージに含まれるデータを対応するフィンガープリントで置き換えるなどの処理を行うためのフィンガープリント（ＦＰ）圧縮処理部２３２３、転送メッセージに含まれるデータを差分圧縮データで置き換えるなどの処理を行うための差分圧縮処理部２３２４を含む。
【００９７】
図２０に示されるように、本クライアント側プロキシ２４０は、ユーザオフィス内ＬＡＮ２１６または広域ネットワーク２１４から転送メッセージを受信するための処理を行う受信部２４１、転送メッセージに含まれるデータに対してＦＰ解凍を施すための処理部２４２、ユーザオフィス内ＬＡＮ２１６または広域ネットワーク２１４へ転送メッセージを送信するための処理を行う送信部２４３、フィンガープリントとそのもととなったデータとを対応付けて記憶するためのフィンガープリント・キャッシュ（ＦＰ・キャッシュ）２４４を備えている。また、処理部２４２は、転送メッセージに含まれるデータを圧縮対象とすべきか否か並びに転送メッセージに対するＦＰ圧縮および差分圧縮の有無を判定するためのフィンガープリント（ＦＰ）圧縮判定部２４２１、フィンガープリント・キャッシュ２３４に対する検索や登録などを行うためのフィンガープリント・キャッシュ（ＦＰキャッシュ）管理部２４２２、ＦＰ圧縮された転送メッセージに含まれるフィンガープリントから元のデータを解凍するなどの処理を行うためのフィンガープリント（ＦＰ）解凍処理部２４２３、差分圧縮された転送メッセージに含まれる差分圧縮データから元のデータを解凍するなどの処理を行うための差分解凍処理部２４２４を含む。
【００９８】
なお、圧縮側のＦＰ圧縮判定部２３２１と解凍側のＦＰ圧縮判定部２４２１は、前述したようにメッセージが予め定められた条件を満たすか否かを調べることによって、そのメッセージに含まれるデータをＦＰ圧縮の適用対象とするか否かを判断する（すべてのメッセージをＦＰ圧縮の適用対象にする場合には、圧縮側のＦＰ圧縮判定部２３２１および後に示す手順例の該当部分は不要であり、解凍側のＦＰ圧縮判定部２４２１の該当判断の部分および後に示す手順例の該当部分は不要である）。また、解凍側のＦＰ圧縮判定部２４２１は、ＦＰ圧縮の適用対象のメッセージについて、そのデータがＦＰ圧縮されたものか否かを判定する。以下では、ＦＰ圧縮の適用対象となるメッセージを転送する場合（ＦＰ圧縮の適用対象とすると判断された場合、またはすべてのメッセージをＦＰ圧縮の適用対象にする場合）を中心に説明する。
【００９９】
図２１及び図２２に、サーバ側プロキシ３０からクライアント側プロキシ２４０へリプライメッセージを転送する際のサーバ側プロキシ２３０の処理手順の一例を示す。なお、図２１及び図２２は、１つのリプライメッセージを受けたときの処理を記述しているが、実際はサーバ側プロキシ２３０が受け取ったリプライメッセージ全てに対して、図２１及び図２２に例示する処理を行う。
【０１００】
サーバ側プロキシ２３０は、受信部２３１により、サーバ２２０からリプライメッセージを受信する（ステップＳ２０１）。
【０１０１】
ＦＰ圧縮判定部２３２１は、該リプライメッセージのリプライデータがＦＰ圧縮対象のものであるか否か調べ、判断する（ステップＳ２０２）。リプライデータがＦＰ圧縮対象外のものと判断されたならば（ステップＳ２０２）、受信したリプライメッセージを送信部３３からクライアント側プロキシ２４０へ転送する（ステップＳ２１２）。
【０１０２】
ステップＳ２０２にて該リプライメッセージのリプライデータがＦＰ圧縮対象のものであると判断されたならば、ＦＰキャッシュ管理部３２２にて、該リプライデータのフィンガープリントの値を計算し（ステップＳ２０３）、該フィンガープリントの値をキーとしてフィンガープリント・キャッシュ２３４を検索する（ステップＳ２０４）。
【０１０３】
そして、該フィンガープリントの値とこれに対応するデータとの組がフィンガープリント・キャッシュ２３４に登録されていたならば（ステップＳ２０５）、ＦＰ圧縮処理部２３２３にて、受信したリプライメッセージを、該フィンガープリントの値を用いてＦＰ圧縮時のフォーマットにして（例えば図１６等）、送信部２３３から、クライアント側プロキシ２４０へ送信する（ステップＳ２０６）。
【０１０４】
一方、ステップＳ２０４の検索の結果、該フィンガープリントの値とこれに対応するデータとの組がフィンガープリント・キャッシュ２３４に登録されていなかったならば（ステップＳ２０５）、差分圧縮処理部２３２４にて、差分圧縮を行い（ステップＳ２０７）、差分圧縮に成功したか否か判定する（ステップＳ２０８）。
【０１０５】
差分圧縮に成功したか否かは、例えば、差分圧縮の対象とした元のデータのデータ量ｒ０と、差分圧縮データのデータ量ｒ１とを比較し、ｒ０−ｒ１＞ｄを満たすならば、成功したと判断する。ここで、定数ｄは、予め定められた０以上の整数である。
【０１０６】
ステップＳ２０８にて差分圧縮に成功したと判断されたならば、次の２つの作業を行う。  
（１−１）差分圧縮処理部２３２４にて、受信したリプライメッセージを、（必要に応じて該フィンガープリントの値を用いて）差分圧縮時のフォーマットにして（例えば図１５（ｂ）等）、送信部２３３から、クライアント側プロキシ２４０へ送信する（ステップＳ２０９）。  
（１−２）ＦＰキャッシュ管理部２３２２にて、該フィンガープリントの値と、該リプライメッセージとを対応付けて（フィンガープリントの値をキーにして）、フィンガープリント・キャッシュ２３４に登録する（ステップＳ２１１）。
【０１０７】
なお、上記の（１−１）と（１−２）は、いずれを先に行ってもよいし、並行して行ってもよい。
【０１０８】
一方、ステップＳ２０８にて差分圧縮に失敗したと判断されたならば、次の２つの作業を行う。  
（２−１）差分圧縮処理部２３２４にて、受信したリプライメッセージを、非圧縮時のフォーマットにして（例えば図１５（ａ）等）、送信部２３３から、クライアント側プロキシ２４０へ送信する（ステップＳ２１０）。  
（２−２）ＦＰキャッシュ管理部２３２２にて、該フィンガープリントの値と、該リプライメッセージとを対応付けて（フィンガープリントの値をキーにして）、フィンガープリント・キャッシュ２３４に登録する（ステップＳ２１１）。
【０１０９】
なお、上記の（２−１）では、差分圧縮処理部２３２４ではなく、ＦＰ圧縮処理部２３２３にて受信リプライメッセージを非圧縮時のフォーマットにするようにしてもよい。
【０１１０】
また、上記の（２−１）と（２−２）は、いずれを先に行ってもよいし、並行して行ってもよい。
【０１１１】
次に、図２３及び図２４に、サーバ側プロキシ２３０からクライアント側プロキシ２４０へリプライメッセージを転送する際のクライアント側プロキシ２４０の処理手順の一例を示す。なお、図２３及び図２４は、１つのリクエストメッセージを受けたときの処理を記述しているが、実際はクライアント側プロキシ２４０が受け取ったリクエストメッセージ全てに対して、図２３及び図２４に例示する処理を行う。
【０１１２】
クライアント側プロキシ２４０は、受信部２４１により、サーバ側プロキシ２３０からリプライメッセージを受信する（ステップＳ２１１）。
【０１１３】
ＦＰ圧縮判定部２４２１は、該リプライメッセージのリプライデータがＦＰ圧縮対象のものであるか否か調べ、判断する（ステップＳ２１２）。リプライデータがＦＰ圧縮対象外のものと判断されたならば（ステップＳ２１２）、受信したリプライメッセージを送信部４３からクライアント２５０へ転送する（ステップＳ２２４）。
【０１１４】
ステップＳ２１２にて該リプライメッセージのリプライデータがＦＰ圧縮対象のものであると判断されたならば、ＦＰ圧縮判定部２４２１は、さらに、リプライデータがＦＰ圧縮されているか否か調べ、判断する（ステップＳ２１３）。
【０１１５】
ステップＳ２１３にて該リプライメッセージのリプライデータがＦＰ圧縮されているものと判断されたならば（例えば図１６等の場合）、ＦＰキャッシュ管理部２４２２にて、該リプライデータのフィンガープリントの値を求め（ステップＳ２１４）、該フィンガープリントの値をキーとしてフィンガープリント・キャッシュ２４４を検索する（ステップＳ２１５）。
【０１１６】
そして、ＦＰ解凍処理部２４２３にて、受信リプライメッセージに対して、フィンガープリント・キャッシュ２３４から検索された該フィンガープリントの値に対応するデータを付加し、プロキシ間で特別の情報を使用する場合には該情報を削除した後に、これを送信部２４３からクライアント２５０へ送信する（ステップＳ２１６）。
【０１１７】
一方、ステップＳ２１３にて該リプライメッセージのリプライデータがＦＰ圧縮されていないものと判断されたならば（例えば図１５（ａ），（ｂ）等の場合）、ＦＰ圧縮判定部２４２１は、さらに、該リプライデータが差分圧縮されているか否か判定する（ステップＳ２１７）。
【０１１８】
ステップＳ２１７にて差分圧縮されていると判断されたならば（例えば図１５（ｂ）等の場合）、次の２つの作業を行う。  
（１−１）差分解凍処理部２４２４にて、（ＦＰキャッシュ管理部２４２２によりし参照データを検索・取得した後に）差分圧縮データを解凍して元のリプライデータを復元し（ステップＳ２１８）、該復元したリプライデータをリプライメッセージに付加し、またプロキシ間で特別の情報を使用する場合には受信リプライメッセージから該情報を削除し、該リプライメッセージを送信部２４３からクライアント２５０へ送信する（ステップＳ２１９）。  
（１−２）ＦＰキャッシュ管理部２４２２にて、該リプライデータのフィンガープリントの値を求め（ステップＳ２２０）、該フィンガープリントの値と、該リプライメッセージとを対応付けて（フィンガープリントの値をキーにして）、フィンガープリント・キャッシュ２３４に登録する（ステップＳ２２３）。
【０１１９】
一方、ステップＳ２１７にて差分圧縮されていないと判断されたならば（例えば図１５（ａ）等の場合）、次の２つの作業を行う。  
（２−１）差分解凍処理部２４２４にて、プロキシ間で特別の情報を使用する場合には受信リプライメッセージから該情報を削除した後に、これを送信部２４３からクライアント２５０へ送信する（ステップＳ２２２）。  
（２−２）ＦＰキャッシュ管理部２４２２にて、該リプライデータのフィンガープリントの値を求め（ステップＳ２２１）、該フィンガープリントの値と、該リプライメッセージとを対応付けて（フィンガープリントの値をキーにして）、フィンガープリント・キャッシュ２３４に登録する（ステップＳ２２３）。
【０１２０】
なお、上記の（２−１）では、差分解凍処理部２４２４ではなく、ＦＰ解凍処理部２４２３にて処理するようにしてもよい。
【０１２１】
また、上記の（１−１）と（１−２）は、いずれを先に行ってもよいし、並行して行ってもよい。上記の（２−１）と（２−２）についても同様である。
【０１２２】
ところで、ステップＳ２１４／ステップＳ２２０／ステップＳ２２１では、メッセージにフィンガープリントが記述されている場合に、該メッセージからフィンガープリントを得る方法と、メッセージにフィンガープリントが記述されてない場合に、リプライデータをもとにハッシュ関数等によってフィンガープリントの値を計算する方法とがある。なお、メッセージにフィンガープリントが記述されている場合であっても、リプライデータをもとにフィンガープリントの値を計算する方法も可能である。また、ステップＳ２１４／ステップＳ２２０／ステップＳ２２１は、フィンガープリントを使用する以前の任意のタイミングで行って構わない。ただし、後者の方法の場合には、ステップＳ２２０の計算は、ステップＳ２１８より後に行う必要がある。
【０１２３】
また、ステップＳ２１２、Ｓ２１３、Ｓ２１７の判断は、同時に行ってもよい。
【０１２４】
次に、差分圧縮を行う手順について説明する。
【０１２５】
図２５に、差分圧縮手順の一例を示す。これは、先に説明した３種類の指定を用いる場合の手順例である。
【０１２６】
ここでは、差分圧縮を行うために、フィンガープリント・キャッシュに入っているデータのうち、最近アクセスしたものを順に並べた履歴表を利用するものとする。この履歴表には、必ずしもフィンガープリント・キャッシュに入っている全てのデータのフィンガープリントが記録されている必要は無い。例えば、予め定められた個数が記録されていればよい（この場合、個数は、例えば差分圧縮の参照データとして使用するに有効な個数を想定して予め決定する）。もちろん、履歴表への記録の基準として、最近のアクセスの順以外の１又は複数の基準を用いてもよいし、最近のアクセスの順の基準に加えて他に１又は複数の基準を併用してもよい。
【０１２７】
なお、履歴表は、フィンガープリント・キャッシュと一体化して構成する方法もある。
【０１２８】
（ステップＳ２３１）まず、作業用のコピーバッファおよび指示バッファを空にする。
【０１２９】
このコピーバッファにコピーされた内容をもとに、図６（ａ）〜（ｃ）の指示が作成され、これが指示バッファに書き出される。最終的に、指示バッファに書き出された指示の並びが、差分圧縮データになる。
【０１３０】
（ステップＳ２３２）差分圧縮の対象とするデータを文字列として扱い、その文字列上を指すポインタを用意する。まず、ポインタが当該文字列のうちの最初の文字を指すように設定する。
【０１３１】
以下では、ステップＳ２４１でポインタが当該文字列のうちの最後の文字に辿りついたと判断されるまで、ループ処理を実行することになる。
【０１３２】
（ステップＳ２３３）履歴表に記録されているフィンガープリントに対応するデータを、新しいものから順に取り出し、その中に、差分圧縮したいデータの中のポインタの指す場所から予め定められた長さ以上マッチするデータを参照データとして取り出す。
【０１３３】
なお、参照データと決定方法としては、種々の方法がある。例えば、履歴表に記録されているフィンガープリントに対応するデータを最新の順に調べていき、最初に予め定めた長さ以上マッチしたデータを参照データとして取り出す方法、履歴表に記録されているフィンガープリントに対応するデータの全てを調べ、その中でマッチした長さが最も長かったデータ（ただし、予め定めた長さ以上マッチしたことを条件とする）を参照データとして取り出す方法などがある。
【０１３４】
（ステップＳ２３４）参照データが見つけられたらならば、ステップＳ２３７へ移る。参照データが見つけられなかったならば、ステップＳ２３５へ移る。
【０１３５】
（ステップＳ２３７）ステップＳ２３４にて参照データが見つけられた場合に、コピーバッファが空でなければ、コピーバッファ中の文字列に対応する、図６の（ｃ）の直接指定によるコピー指示を作成し、これを指示バッファに書き出す。コピーバッファは、空にする。なお、コピーバッファが空ならば、何もしない。
【０１３６】
（ステップＳ２３８）ステップＳ２３３にて見つかった参照データに対応する図６の（ａ）の参照データ定義が未だ指示バッファに書き出されていなければ、指示バッファに当該参照データ定義の指示を書き出す。
【０１３７】
（ステップＳ２３９）参照データからマッチした文字列のコピー指示を、図６の（ｂ）のコピー指示として指示バッファに書き出す。
【０１３８】
（ステップＳ２４０）ポインタを参照データとマッチした文字列の長さ分だけ進める。
【０１３９】
（ステップＳ２３５）一方、ステップＳ２３４にて参照データが見つけられた場合に、ポインタの指す文字をコピーバッファに入れる。
【０１４０】
（ステップＳ２３６）ポインタを１文字分だけ進める。
【０１４１】
（ステップＳ２４１）差分圧縮の対象とするデータの最後までポインタが来ていなければ（処理していないデータ部分が残っていれば）、ステップＳ２３３へ戻る。差分圧縮の対象とするデータの最後までポインタが来ていたら（処理していないデータ部分が残っていなければ）、処理ループを抜けて、ステップＳ２４２へ移る。
【０１４２】
（ステップＳ２４２）コピーバッファが空でなければ、コピーバッファ中の文字列に対応する、図６の（ｃ）の直接指定によるコピー指示を作成し、これを指示バッファに書き出す。コピーバッファは、空にする。なお、コピーバッファが空ならば、何もしない。
【０１４３】
このときの指示バッファの内容が、差分圧縮データとなる。
【０１４４】
なお、前述のように、実際には、このようにして差分圧縮を行った後、差分圧縮を行った結果のデータサイズが、行う前のデータサイズよりも小さくなっている（あるいは一定基準（一定の圧縮量）を超えて小さくなっている）ことを確認する。差分圧縮によってデータサイズが小さくならない（あるいは一定基準（一定の圧縮量）を超えては小さくならない）場合には、差分圧縮しない方が良いので、データはそのまま転送する。
【０１４５】
ところで、上記の差分圧縮の処理において、ステップＳ２３３の予め定められた長さ以上マッチする文字列を持つ最新のデータを選び出す処理が、最も時間がかかる処理であると考えられる。この処理をより高速化するために、ハッシュ表を利用することができる。履歴表に入れるデータから、その中の全ての予め定められた長さの文字列を取り出し、そのハッシュ値（例えば、全ての文字のコードを足したものなど）を計算し、ハッシュ表に登録しておく。このハッシュ表は、同じハッシュ値を持つデータがあればより最新のデータによって上書きされるようにしておく。  
このハッシュ表を使って、差分圧縮したいデータの現在のポインタの位置から予め定められた長さの文字列のハッシュ値を求め、そのハッシュ値を使ってハッシュ表を引いて求めたデータが、ステップＳ２３３で選ぶべきデータの第１の候補になる。ここで、異なる文字列でも同じハッシュ値を生成する場合があるので、本当に同じかどうかは文字列を実際に比較して確認し、同じでなければ、履歴表のデータを順に見るなど方法で次の候補を探す。
【０１４６】
ステップＳ２３３の処理を高速化する他の方法は、行を単位として比較処理を行う方法である。図２５の手順では文字を単位として比較処理をしていたが、履歴表にあるすべてのデータに対して、そのデータ内の各行のハッシュ値の列を計算しておく。差分圧縮したいデータからも、まず、各行のハッシュ値の列を計算する。以降は、図２５の手順と同様であるが、比較は文字単位ではなく、行のハッシュ値を単位として行う。この方法は、行を単位としているため、文字単位よりも比較回数を減らすことができる。ただし、ハッシュ値で比較するために、異なる行でも同じハッシュ値を持つ場合があるので、最終的にはハッシュ値が同じだと判断した後に、実際に行の中も比較して本当に同じかどうかを判断するのが望ましい。  
もちろん、このように行を単位として比較する構成についても、上記のハッシュ技法を組み合わせることができる。この場合、連続する複数行を組み合わせて、予め定められた長さと同じか長くなる最少の行数を単位としてハッシュ表に登録すればよい。
【０１４７】
次に、図２６に、差分圧縮手順の他の例を示す。これは、フィンガープリント・キャッシュに登録されているデータのうちの１つを参照データとし、プロキシ間では、参照データに対応するフィンガープリントの値と、転送データと参照データとの差分を示す情報とを転送する場合の手順例である。
【０１４８】
ここでも、前述したような履歴表を用いるものとする。
【０１４９】
まず、履歴表に記録されているフィンガープリントに対応するデータのうち、所定の基準を満たす一つを、参照データとして選択する（ステップＳ２４５）。
【０１５０】
所定の基準は、例えば、差分圧縮の対象とするデータのうち、参照データとするデータとの間でマッチしなかった部分のデータ量が、予め定められたデータ量以下であって、かつ、参照データをそのマッチしなかった部分によって複数の塊に分断したときにおけるその分断された塊の数が、予め定められた数以下である場合に、これを参照データとして選択可能とする。
【０１５１】
そして、参照データとして決定する方法としては、前述のように、例えば、履歴表に記録されているフィンガープリントに対応するデータを最新の順に調べていき、最初に予め定めた長さ以上マッチしたデータを参照データとして取り出す方法、履歴表に記録されているフィンガープリントに対応するデータの全てを調べ、その中でマッチしなかったデータ量や分断数が最も少なかったデータを参照データとして取り出す方法など、種々の方法がある。
【０１５２】
参照データが見つけられたらならば（ステップＳ２４６）、参照データ定義の指示（例えば図６の（ａ））を、指示バッファに書き出す（ステップＳ２４７）。
【０１５３】
参照データのうち、マッチしなかった部分（直接指定データで置換する部分）を示す指示（例えば図６の（ｂ）と同じフォーマットの指示で１バイト目の指示識別子を変えたもの）を、指示バッファに書き出す（ステップＳ２４８）。
【０１５４】
参照データのマッチしなかった部分に嵌め込むべきデータを示す直接指定する指示（例えば図６の（ｃ））を、指示バッファに書き出す（ステップＳ２４９）。
【０１５５】
なお、置換部分が複数個所ある場合には、その分だけステップＳ２４８とステップＳ２４９を実行する。
【０１５６】
このときの指示バッファの内容が、差分圧縮データとなる。
【０１５７】
一方、参照データが見つけられたらならば（ステップＳ２４６）、差分圧縮はしないことになる。
【０１５８】
なお、上記の図２５や図２６の説明では、履歴表をフィンガープリント・キャッシュとは別に設けるものとしたが、履歴表は、フィンガープリント・キャッシュと一体化して構成する方法もある。
【０１５９】
また、上記の説明では、履歴表を用いるものとしたが、履歴表を用いない方法もある。例えば、フィンガープリント・キャッシュを所定の順番で（例えば、エントリ順にあるいはランダムに）予め定められた上限数だけ調べ、それらのうちで最良のものを使用するようにする方法や、フィンガープリント・キャッシュを所定の順番で（例えば、エントリ順にあるいはランダムに）調べ、予め定められた条件を満たす参照データが初めて得られた時点で、参照データを決定してしまう方法など、種々の方法がある。
【０１６０】
また、履歴表またはフィンガープリント・キャッシュに、フィンガープリントに加えて、そのフィンガープリントを登録したときに元となったリプライデータを含んでいたリプライメッセージについてのＵＲＬをも保持しておき、参照データを探索する際に、まず差分圧縮対象のリプライデータを含むリプライメッセージについてのＵＲＬと同じＵＲＬを持つデータが、履歴表またはフィンガープリント・キャッシュに登録されていないかどうか調べ、登録されているならば当該ＵＲＬと同じＵＲＬを持つデータを他のものよりも優先して、参照データとして使用できないかどうか調べるようにしてもよい。
【０１６１】
もちろん、図２５や図２６の他にも、種々の差分圧縮の手順が可能である。
【０１６２】
なお、クライアント側プロキシ２４０からサーバ側プロキシ２３０へリクエストメッセージを転送する際にはフィンガープリント・キャッシュを用いないものとする場合には、サーバ側プロキシ２３０は、図２７に例示するように、クライアント側プロキシ２４０からリクエストメッセージを受信し（ステップＳ２２５）、これをサーバ２２０へ送信する（ステップＳ２２６）、という手順で構わない。同様に、クライアント側プロキシ２４０は、図２８に例示するように、クライアント２５０からリクエストメッセージを受信し（ステップＳ２２７）、これをサーバ側プロキシ２３０へ送信する（ステップＳ２２８）、という手順で構わない。
【０１６３】
以下では、図２９（登録時すなわち非圧縮時）、図３０（ＦＰ圧縮時）および図３１（登録時すなわち差分圧縮時）を参照しながら、フィンガープリント・キャッシュを利用したデータ転送についてより具体的に説明する。
【０１６４】
まず、図２９を参照しながら、サーバ側プロキシ２３０からクライアント側プロキシ２４０へ、フィンガープリント・キャッシュ登録されていないデータであって且つ差分圧縮も成功しなかったデータを転送するとともに、該データについてフィンガープリント・キャッシュ登録する場合の動作について説明する。
【０１６５】
（１）クライアント２５０上のブラウザ等は、例えば“／Ａ．ｃｇｉ”というＵＲＬでサーバ２２０に、ＰＯＳＴメソッドのリクエストメッセージを出したとする。サーバ２２０へのリクエストメッセージは、まず、クライアント側プロキシ２４０に送られるように、ブラウザ等を設定しておく。
【０１６６】
（２）クライアント２５０からリクエストメッセージを受け取ったクライアント側プロキシ２４０は、そのリクエストメッセージをサーバ側プロキシ２３０に転送する。
【０１６７】
（３）リクエストメッセージを受け取ったサーバ側プロキシ２３０は、そのリクエストメッセージをサーバ２５０へ転送する。
【０１６８】
（４）サーバ２２０は、該リクエストメッセージに対する処理を行った後、サーバ側プロキシ２３０に、そのリプライメッセージを送り返す。
【０１６９】
（５）リプライメッセージを受け取ったサーバ側プロキシ２３０は、まず、受信リプライメッセージの持つリプライデータのフィンガープリントを計算し、そのフィンガープリント名を持ったデータがフィンガープリント・キャッシュ２３４に入っているかどうかを調べる。ここでは、入っておらず、初めてのデータ（一旦フィンガープリント・キャッシュ登録されたものがその後に削除あるいは無効化されることがある構成の場合に、一旦フィンガープリント・キャッシュ登録されたが削除あるいは無効化され、その後において初めてである場合を含む）であるので、そのデータをフィンガープリントを名前としてフィンガープリント・キャッシュ２３４に入れる（登録する）。
【０１７０】
なお、圧縮対象になるデータをＦＰ圧縮できなかった場合には、差分圧縮処理を行い、リプライデータを差分圧縮してデータ量を減らすことができるならば、差分圧縮するが、ここでは、リプライデータを差分圧縮してデータ量を減らすことができなかったものとしている。
【０１７１】
（６）サーバ側プロキシ２３０は、データを載せたリプライメッセージをクライアント側プロキシ２４０に転送する。なお、前述したように、リプライデータから計算したフィンガープリントの値を、リプライヘッダ等に入れて送ると、クライアント側プロキシ２４０で再度フィンガープリントを計算する手間を省くことが出来る。
【０１７２】
（７）リプライメッセージを受け取ったクライアント側プロキシ２４０は、初めてのデータであるので、リプライデータをフィンガープリント・キャッシュ２４４に登録する。なお、前述したように、リプライデータからフィンガープリントを計算するか、あるいはサーバ側プロキシがリプライヘッダ等に入れたフィンガープリントを取り出し、これを名前として入れる。
【０１７３】
（８）クライアント側プロキシ２４０は、（リプライヘッダ等にフィンガープリントの値などのサーバ側プロキシ２３０とクライアント側プロキシ２４０との間だけで使用される情報が存在する構成の場合には、これを削除した後に、）リプライメッセージを、クライアント２５０（上で動作するブラウザ等）へ送り返す。
【０１７４】
なお、サーバ側プロキシ２３０において、上記の（５）のフィンガープリント・キャッシュ登録は、（６）の動作の後に行っても構わない。また、クライアント側プロキシ２４０において、（７）のフィンガープリント・キャッシュ登録は、（８）の動作の後に行っても構わない。
【０１７５】
次に、図３０を参照しながら、図２９の動作が行われてキャッシュ登録されているデータを、サーバ側プロキシ２３０からクライアント側プロキシ２４０へ転送する場合の動作について説明する。
【０１７６】
（１）〜（４）は、図２９を参照して説明した動作における（１）〜（４）と同様である。
【０１７７】
（５）サーバ２５０からリプライメッセージを受け取ったサーバ側プロキシ２４０は、まず、受信リプライメッセージの持つリプライデータのフィンガープリントを計算し、そのフィンガープリント名を持ったデータがフィンガープリント・キャッシュ２３４に入っているかどうかを調べる。ここではフィンガープリント・キャッシュ登録されているので、（前述したように例えばフィンガープリントの値をリプライヘッダ等に入れ且つリプライボディを空にするなどして）リプライボディのデータをフィンガープリントで置き換える。
【０１７８】
（６）サーバ側プロキシ２３０は、リプライボディをフィンガープリントで置き換えたリプライメッセージをクライアント側プロキシ２４０に転送する。
【０１７９】
（７）リプライメッセージを受け取ったクライアント側プロキシ２４０は、リプライデータがフィンガープリントで置き換えられていることを検出し、（前述したように例えばリプライヘッダなどにて）指定されたフィンガープリントを使ってフィンガープリント・キャッシュ２４４から対応するデータを取り出し、これをリプライボディに入れる。また、リプライヘッダ等にフィンガープリントの値などのサーバ側プロキシ２３０とクライアント側プロキシ２４０との間だけで使用される情報が存在する構成の場合には、これを削除する。
【０１８０】
（８）そして、クライアント側プロキシ２３０は、リプライメッセージを、クライアント（上で動作するブラウザ等）へ送り返す。
【０１８１】
ところで、サーバ側プロキシ２３０およびクライアント側プロキシ２４０のフィンガープリント・キャッシュは、その容量に上限があるため、所定のアルゴリズムに従いガーベジコレクションを行って、例えば古いデータや使いそうに無いデータを消して行くのが好ましい。
【０１８２】
ただし、このようにすると、サーバ側プロキシ２３０のフィンガープリント・キャッシュ２３４は持っていてもクライアント側プロキシ２４０のフィンガープリント・キャッシュ２４４では既に消されてしまっているデータが発生し得ることになるので、上記の（７）で、クライアント側プロキシ２４０において、フィンガープリントをもとにしてフィンガープリント・キャッシュ２４４からリプライデータを置き換えるべきデータを取り出そうとしたが、フィンガープリント・キャッシュ２４４に該当するフィンガープリントとデータの組が存在しない場合がある。このような場合には、例えば、クライアント側プロキシ２４０は、サーバ側プロキシ２３０に対して、指定したフィンガープリントのデータを送るように依頼し、依頼されたサーバ側プロキシ２３０は、指定されたフィンガープリントのデータをフィンガープリント・キャッシュ２３４から取り出して送り返すような仕組みを設ければよい。
【０１８３】
なお、逆に、サーバ側プロキシ２３０のフィンガープリント・キャッシュ２３４では既に消されてしまっているがクライアント側プロキシ２４０のフィンガープリント・キャッシュ２４４はまだ持っていてるデータが存在する場合には、図２９を参照して説明した動作における（７）で、クライアント側プロキシ２４０において、フィンガープリント／リプライデータをフィンガープリント・キャッシュ２４４に登録する際に、その時点で登録されていたフィンガープリント／リプライデータに対して上書きしてもよい。
【０１８４】
図３０を参照して説明した動作における（５）で、サーバ側プロキシ２３０において、リプライデータのフィンガープリントを求め、該フィンガープリントがフィンガープリント・キャッシュ２３４に入っていれば、当該プライデータと同じデータが該フィンガープリントと組になってフィンガープリント・キャッシュ２３４に入っているものとみなして処理している。実用上、異なるデータから同じフィンガープリントが生成されないことを前提にすれば、この方法で十分であるが、非常に小さな確率で異なるデータのフィンガープリントが偶々同じ値になってしまった場合に生じるエラーを取り除くようにする方法もある。この場合には、リプライデータから求めたフィンガープリントがフィンガープリント・キャッシュ２３４に入っているときに、該フィンガープリントと組になってフィンガープリント・キャッシュ２３４に入っているデータと、当該プライデータとを比較して、同じか否かを判断するようにすればよい。このとき、もしフィンガープリントは同じであるが内容が異なるデータが登録されていると判断された場合の処理は、以下に例示するような方法が考えられる。  
・そのフィンガープリントは以降使用しないものとする（そのフィンガープリントを与えるデータは以後キャッシュされないことになる）。  
・先に登録されているフィンガープリント／データを優先する（登録中のフィンガープリントと同じ値のフィンガープリントを与える他のデータは、その登録中はキャッシュされないことになる）。  
・現在登録対象となっているフィンガープリント／データを優先する（登録中のフィンガープリント／データは、同じ値のフィンガープリントを与える他のデータによって次々と更新されていくことになる）。
【０１８５】
図３１を用いて、差分転送を行う本実施形態の動作を説明する。
【０１８６】
（１）〜（４）は、図２９を参照して説明した動作における（１）〜（４）と同様である。
【０１８７】
（５）リプライメッセージを受け取ったサーバ側プロキシ２３０は、まず、受信リプライメッセージの持つリプライデータのフィンガープリントを計算し、そのフィンガープリント名を持ったデータがフィンガープリント・キャッシュ２３４に入っているかどうかを調べる。ここでは、入っておらず、初めてのデータであるので、そのデータをフィンガープリントを名前としてフィンガープリント・キャッシュ２３４に入れる（登録する）。
【０１８８】
（６）圧縮対象になるデータをＦＰ圧縮できなかった場合には、差分圧縮処理を行い、リプライデータを差分圧縮してデータ量を減らすことができるならば、差分圧縮する。ここでは、フィンガープリントが“７１Ｆ０…７３Ｅ６”のデータを参照データとした場合に、リプライデータを差分圧縮してデータ量を減らすことができたものとする。リプライデータを差分圧縮データに置き換え、リプライヘッダ等に差分圧縮したことを示す情報を入れる。
【０１８９】
（７）サーバ側プロキシ２３０は、リプライメッセージをクライアント側プロキシに転送する。
【０１９０】
（８）クライアント側プロキシ２４０は、リプライヘッダ等を見て、リプライデータが差分圧縮されていることを知り、圧縮の解凍を行う。このとき、まず、圧縮されたデータ内に指定されている参照データのフィンガープリント“７１Ｆ０…７３Ｅ６”を取り出し、次に、該フィンガープリントに対応するデータをフィンガープリント・キャッシュから取り出して使用する。解凍したデータをリプライデータに入れ、リプライヘッダのコンテンツサイズなど必要なヘッダを書き換える。
【０１９１】
（９）また、リプライメッセージを受け取ったクライアント側プロキシ２４０は、初めてのデータであるので、解凍したリプライデータをフィンガープリント・キャッシュ２４４に登録する。また、リプライヘッダ等にフィンガープリントの値などのサーバ側プロキシ２３０とクライアント側プロキシ２４０との間だけで使用される情報が存在する構成の場合には、これを削除する。なお、前述したように、リプライデータからフィンガープリントを計算するか、あるいはサーバ側プロキシがリプライヘッダ等に入れたフィンガープリントを取り出し、これを名前として入れる。
【０１９２】
（１０）クライアント側プロキシ２４０は、リプライメッセージを、クライアント２５０（上で動作するブラウザ等）へ送り返す。
【０１９３】
なお、上記の（５）では、圧縮対象で未登録のデータは、すべてフィンガープリント・キャッシュに登録するものとし、また、上記の（６）で参照データに用いたデータは、すべてフィンガープリント・キャッシュの登録を維持するものとしたが、参照データに唯一のデータを使用した場合であって、かつ、差分圧縮対象となったデータと、その差分圧縮に用いた参照データとが、ほとんど同じ内容（例えば、両者でマッチしないデータ量が基準以下）である場合には、（ｉ）圧縮対象で未登録のデータはフィンガープリント・キャッシュに登録せず、参照データはフィンガープリント・キャッシュの登録を維持する、あるいは（ii）圧縮対象で未登録のデータをフィンガープリント・キャッシュに登録し、参照データはフィンガープリント・キャッシュから削除する、などの方法も可能である。また、参照データに唯一のデータを使用した場合であって、かつ、差分圧縮対象となったデータと、その差分圧縮に用いた参照データとが、ほとんど同じ内容であって、かつ、ＵＲＬが同一の場合には、データが更新されたものとして、圧縮対象で未登録のデータをフィンガープリント・キャッシュに登録し、参照データはフィンガープリント・キャッシュから削除する、などの方法も可能である。その他にも種々のバリエーションがある。
【０１９４】
ところで、これまで説明した例では、サーバ側プロキシ２３０からクライアント側プロキシ２４０へリプライデータを転送する際にフィンガープリント・キャッシュを利用するものとし、あるデータとこれに対するフィンガープリントとの組をフィンガープリント・キャッシュに登録するタイミングは、そのデータが初めてサーバ側プロキシ２３０からクライアント側プロキシ２４０へ転送されるときとしている。しかし、例えばＷＥＢベースのＡＳＰのような利用法では、データはまずユーザオフィス等で作成されてサーバに登録され、それをブラウザ等からアクセスするような場合が多いため、このような場合には、当該データをサーバに登録する時点でクライアント側プロキシおよびサーバ側プロキシのフィンガープリント・キャッシュに登録しておくと、それ以降のアクセスを高速化することができる。そこで、サーバが送信するリプライデータが、もともとはクライアントからサーバへ転送されたデータ（ただし、この転送のときはリクエストデータ）である場合には、登録タイミングを、該リプライデータとなる元のリクエストデータが初めてクライアント側プロキシ１４０からサーバ側プロキシ１３０へ転送されるときとするようにしてもよい（この場合、当該データがリプライデータとなって初めてサーバ側プロキシ１３０からクライアント側プロキシ１４０へ転送される際には、すでにフィンガープリント・キャッシュへの登録が完了していることになるので、リプライデータとしては初めての転送であっても、フィンガープリント・キャッシュを利用して、転送データ量を削減することができる）。
【０１９５】
さて、これまで説明した例では、サーバ側プロキシ２３０からクライアント側プロキシ２４０へリプライデータを転送するときに、該リプライデータがフィンガープリント・キャッシュに登録されているデータと同じものである場合には、該リプライデータに代えて、対応するフィンガープリントを転送し、または差分圧縮データを転送することで、ネットワークのトラフィックを軽減しているが、本発明は、クライアント側プロキシ２４０からサーバ側プロキシ２３０へリクエストデータを転送する場合についてさらに適用することが可能である。
【０１９６】
なお、ＦＰ圧縮を両方に適用する場合に、差分圧縮をいずれか一方についてのみ適用することも可能である。
【０１９７】
また、ＦＰ圧縮および差分圧縮を、クライアント側プロキシ２４０からサーバ側プロキシ２３０へリクエストデータを転送する場合についてのみ適用することも可能である。
【０１９８】
ＦＰ圧縮および差分圧縮をクライアント側プロキシ２４０からサーバ側プロキシ２３０へのリクエストデータ転送に適用する場合、すでに説明したリプライデータに対するサーバ側プロキシ２３０とクライアント側プロキシ２４０との役割を逆にすればよいので、ＦＰ圧縮および差分圧縮を両データ転送に適用する場合には、サーバ側プロキシ２３０は図１９の構成に加えて、更に処理部２３２にフィンガープリント解凍処理部および差分解凍処理部を備え、クライアント側プロキシ２４０は図２０の構成に加えて、更に処理部２４２にフィンガープリント圧縮処理部および差分圧縮処理部を備えればよい。
【０１９９】
なお、いずれのプロキシにおいても、フィンガープリント圧縮処理部とフィンガープリント解凍処理部とを併せて、フィンガープリント（ＦＰ）圧縮・解凍処理部としてもよい。同様に、差分圧縮処理部と差分解凍処理部とを併せて、差分圧縮・解凍処理部としてもよい。
【０２００】
また、サーバ側プロキシ２３０やクライアント側プロキシ２４０は、リプライデータ転送に対するフィンガープリント・キャッシュとは独立にリクエストデータ転送に対するフィンガープリント・キャッシュを設けてもよいが、リプライデータ転送とクエストデータ転送とで同じフィンガープリント・キャッシュを共用してもよい。差分圧縮の際に前述した履歴表を使用する構成の場合には、履歴表についても同様に独立して設けてもよいし、共用してもよい。
【０２０１】
図３２に、この場合のプロキシ（サーバ側プロキシ、クライアント側プロキシ）の構成例を示す。
【０２０２】
また、図３３及び図３４に、クライアント側プロキシ２４０からサーバ側プロキシ２３０へリクエストメッセージを転送する際のクライアント側プロキシ２４０の処理手順の一例を示す。図３３及び図３４は、図２１及び図２２において、転送するメッセージがリプライメッセージからリクエストメッセージになり、メッセージ送信元がサーバからクライアントになり、メッセージ送信先がクライアントからサーバになり、サーバ側プロキシ４０の動作とクライアント側プロキシ４０の動作とを入れ替えたものに相当する。
【０２０３】
また、図３５及び図３６に、クライアント側プロキシ２４０からサーバ側プロキシ２３０へリクエストメッセージを転送する際のサーバ側プロキシ２３０の処理手順の一例を示す。
【０２０４】
図３５及び図３６は、図２３及び図２４において、転送するメッセージがリプライメッセージからリクエストメッセージになり、メッセージ送信元がサーバからクライアントになり、メッセージ送信先がクライアントからサーバになり、サーバ側プロキシ４０の動作とクライアント側プロキシ４０の動作とを入れ替えたものに相当する。
【０２０５】
このようにリクエストデータに対してもフィンガープリントまたは差分圧縮データで置き換えられるように実施すると、例えば、同じファイルを何度もサーバにアップロードする際ときには、２回目以降フィンガープリントを送るだけで済むので、ネットワークのトラフィックを軽減させることができる。
【０２０６】
なお、本実施形態では、クライアント側プロセスからサーバ側プロキシへ転送されるリクエストメッセージや、サーバ側プロキシからクライアント側プロセスへ転送されるリプライメッセージを対象とする場合について示してきたが、あるプロキシに、リクエストメッセージを送信する装置とリプライメッセージを送信する装置との両方、あるいはリクエストメッセージおよびリプライメッセージの両方を送信する装置が接続されている場合には、もちろん、クライアント側プロセスからサーバ側プロキシへ転送されるリクエストメッセージおよびリプライメッセージならびにサーバ側プロキシからクライアント側プロセスへ転送されるリクエストメッセージおよびリプライメッセージを対象とすることや、クライアント側プロセスからサーバ側プロキシへ転送されるリクエストメッセージおよびサーバ側プロキシからクライアント側プロセスへ転送されるリクエストメッセージのみ対象とすることなども可能である。
【０２０７】
ところで、これまでは１つのサーバ側プロキシと１つのクライアント側プロキシとの間の１対１の通信に着目して説明してきたが、本発明の適用範囲はもちろんサーバ側プロキシとクライアント側プロキシとが１対１で通信するシステムには限定されるものではないく、サーバ側プロキシとクライアント側プロキシとが１対多で通信するシステム、サーバ側プロキシとクライアント側プロキシとが多対１で通信するシステム、あるいはサーバ側プロキシとクライアント側プロキシとが多対多で通信するシステムにも適用可能である。例えば、図３７のように、複数のユーザオフィスに設置したクライアント側プロキシや、モバイルユーザが利用する個人用プロキシなどがサーバ側プロキシを共有して使用するように実施することも可能である。
【０２０８】
また、これまでは、１つのメッセージに含まれるデータ全体をＦＰ圧縮する対象（フィンガープリント・キャッシュに登録する対象）にしていたが、例えば、１つのメッセージに含まれるデータが所定の単位のデータの集合で構成される場合には、１つのメッセージに含まれる一部の単位データのみＦＰ圧縮する対象（フィンガープリント・キャッシュに登録する対象）にする構成も可能である。
【０２０９】
また、本実施形態のサーバ側プロキシあるいはクライアント側プロキシ（一方でも両方でもよい）に、プロキシの共有キャッシュ機構でキャッシュ可能とされているリプライデータについて、クライアントが出したリクエストメッセージにおいて指定されていたＵＲＬと、該リクエストメッセージに対応するリプライメッセージに含まれていたリプライデータと、該リプライデータに対応するフィンガープリントと、該リプライメッセージのリプライ・ヘッダに入れられて来たＭＩＭＥタイプなどのリクエスト・ヘッダを構成するのに必要な情報や有効期間の判定に使うためのタイムスタンプなどの情報を対応付けてキャッシュしておき（フィンガープリント・キャッシュにすべて保持してもよいし、リプライデータを除く情報（ＵＲＬとフィンガープリントと他の情報）を保持する対応テーブルを別途設けてもよい）、これとフィンガープリント・キャッシュとを併用することで、プロキシサーバの共有キャッシュの動作をも行うようにすることができる。例えば、クライアント側プロキシに該キャッシュ機能を設けた場合、クライアントが送信したリクエストメッセージにて指定されているＵＲＬに対するリプライデータがキャッシュされており且つ該データが有効である場合には、該クライアント側プロキシが、ＵＲＬに対応するデータをフィンガープリント・キャッシュから取得して、リプライメッセージを作成して、これをクライアントに応答することができる。
【０２１０】
なお、以上の各機能は、ソフトウェアとして実現可能である。  
また、本実施形態は、コンピュータに所定の手段を実行させるための（あるいはコンピュータを所定の手段として機能させるための、あるいはコンピュータに所定の機能を実現させるための）プログラムとして実施することもでき、該プログラムを記録したコンピュータ読取り可能な記録媒体として実施することもできる。
【０２１１】
なお、この発明の実施の形態で例示した構成は一例であって、それ以外の構成を排除する趣旨のものではなく、例示した構成の一部を他のもので置き換えたり、例示した構成の一部を省いたり、例示した構成に別の機能あるいは要素を付加したり、それらを組み合わせたりすることなどによって得られる別の構成も可能である。また、例示した構成と論理的に等価な別の構成、例示した構成と論理的に等価な部分を含む別の構成、例示した構成の要部と論理的に等価な別の構成なども可能である。また、例示した構成と同一もしくは類似の目的を達成する別の構成、例示した構成と同一もしくは類似の効果を奏する別の構成なども可能である。  
また、この発明の実施の形態で例示した各種構成部分についての各種バリエーションは、適宜組み合わせて実施することが可能である。
【０２１２】
また、この発明の実施の形態は、個別装置としての発明、関連を持つ２以上の装置についての発明、システム全体としての発明、個別装置内部の構成部分についての発明、またはそれらに対応する方法の発明等、種々の観点、段階、概念またはカテゴリに係る発明を包含・内在するものである。  
従って、この発明の実施の形態に開示した内容からは、例示した構成に限定されることなく発明を抽出することができるものである。
【０２１３】
本発明は、上述した実施の形態に限定されるものではなく、その技術的範囲において種々変形して実施することができる。
【図面の簡単な説明】
【０２１４】
【図１】本発明の一実施形態に係るコンピュータ・ネットワーク・システムの構成例を示す図
【図２】同実施形態に係るコンピュータ・ネットワーク・システムの他の構成例を示す図
【図３】同実施形態に係るコンピュータ・ネットワーク・システムのさらに他の構成例を示す図
【図４】同実施形態で使用するフィンガープリントについて説明するための図
【図５】同実施形態で使用するフィンガープリント・キャッシュについて説明するための図
【図６】同実施形態で使用する差分圧縮の指示方法について説明するための図
【図７】同実施形態の差分圧縮の具体例について説明するための図
【図８】同実施形態の差分圧縮の具体例について説明するための図
【図９】同実施形態の差分圧縮の具体例について説明するための図
【図１０】同実施形態の差分圧縮の他の具体例について説明するための図
【図１１】同実施形態の差分圧縮の他の具体例について説明するための図
【図１２】同実施形態の差分圧縮の他の具体例について説明するための図
【図１３】同実施形態の差分圧縮の他の具体例について説明するための図
【図１４】同実施形態で使用するメッセージ・フォーマットの一例を示す図
【図１５】同実施形態で使用するメッセージ・フォーマットの他の例を示す図
【図１６】同実施形態で使用するメッセージ・フォーマットのさらに他の例を示す図
【図１７】同実施形態で使用するメッセージ・フォーマットのさらに他の例を示す図
【図１８】同実施形態で使用するメッセージ・フォーマットのさらに他の例を示す図
【図１９】同実施形態に係るサーバ側プロキシの構成例を示す図
【図２０】同実施形態に係るクライアント側プロキシの構成例を示す図
【図２１】同実施形態に係るサーバ側プロキシの手順例を示すフローチャート
【図２２】同実施形態に係るサーバ側プロキシの手順例を示すフローチャート
【図２３】同実施形態に係るクライアント側プロキシの手順例を示すフローチャート
【図２４】同実施形態に係るクライアント側プロキシの手順例を示すフローチャート
【図２５】同実施形態の差分圧縮の処理手順の一例を示すフローチャート
【図２６】同実施形態の差分圧縮の処理手順の他の例を示すフローチャート
【図２７】同実施形態に係るサーバ側プロキシの手順例を示すフローチャート
【図２８】同実施形態に係るクライアント側プロキシの手順例を示すフローチャート
【図２９】同実施形態に係るサーバ側プロキシとクライアント側プロキシとの間のデータ転送について説明するための図
【図３０】同実施形態に係るサーバ側プロキシとクライアント側プロキシとの間のデータ転送について説明するための図
【図３１】同実施形態に係るサーバ側プロキシとクライアント側プロキシとの間のデータ転送について説明するための図
【図３２】同実施形態にプロキシの他の構成例を示す図
【図３３】同実施形態に係るクライアント側プロキシの他の手順例を示すフローチャート
【図３４】同実施形態に係るクライアント側プロキシの他の手順例を示すフローチャート
【図３５】同実施形態に係るサーバ側プロキシの他の手順例を示すフローチャート
【図３６】同実施形態に係るサーバ側プロキシの他の手順例を示すフローチャート
【図３７】同実施形態に係るコンピュータ・ネットワーク・システムのさらに他の構成例を示す図
【図３８】従来のコンピュータ・ネットワーク・システムについて説明するための図
【図３９】図１４（ａ）のフォーマットのメッセージの具体例を示す図
【図４０】図１４（ｂ）のフォーマットのメッセージの具体例を示す図
【図４１】図１４（ｃ）、図１５（ｃ）のフォーマットのメッセージの具体例を示す図
【図４２】図１４（ｄ）のフォーマットのメッセージの具体例を示す図
【図４３】図１５（ａ）のフォーマットのメッセージの具体例を示す図
【図４４】図１５（ｂ）のフォーマットのメッセージの具体例を示す図
【図４５】図１６のフォーマットのメッセージの具体例を示す図
【図４６】図１７（ａ）のフォーマットのメッセージの具体例を示す図
【図４７】図１７（ｂ）のフォーマットのメッセージの具体例を示す図
【図４８】図１７（ｃ）のフォーマットのメッセージの具体例を示す図
【図４９】図１８（ａ）のフォーマットのメッセージの具体例を示す図
【図５０】図１８（ｂ）のフォーマットのメッセージの具体例を示す図
【図５１】図１８（ｃ）のフォーマットのメッセージの具体例を示す図
【図５２】図１８（ｄ）のフォーマットのメッセージの具体例を示す図
【符号の説明】
【０２１５】
２０２…ＡＳＰサーバセンター、２０４…ユーザオフィス、２１２…ＡＳＰサーバセンター内ＬＡＮ、２１４…ＷＡＮ、２１６…ユーザオフィス内ＬＡＮ、２２０…サーバ装置、
２３０…サーバ側プロキシ装置、２４０…クライアント側プロキシ装置、２５０…クライアント装置、２３１，２４１…受信部、２３２，２４２…処理部、２３３，２４３…送信部、２３４，２４４…フィンガープリント・キャッシュ、２３２１，２４２１…ＦＰ圧縮判定部、２３２２，２４２２…フィンガープリント・キャッシュ管理部、２３２３…ＦＰ圧縮処理部、２４２３…ＦＰ解凍処理部、２３２４…差分圧縮処理部、２４２４…差分解凍処理部、２３２５，２４２５…ＦＰ解凍・解凍処理部、２３２６，２４２６…差分解凍・解凍処理部
【図１】
2007293894.tif 000003
【図２】
2007293894.tif 000004
【図３】
2007293894.tif 000005
【図４】
2007293894.tif 000006
【図５】
2007293894.tif 000007
【図６】
2007293894.tif 000008
【図７】
2007293894.tif 000009
【図８】
2007293894.tif 000010
【図９】
2007293894.tif 000011
【図１０】
2007293894.tif 000012
【図１１】
2007293894.tif 000013
【図１２】
2007293894.tif 000014
【図１３】
2007293894.tif 000015
【図１４】
2007293894.tif 000016
【図１５】
2007293894.tif 000017
【図１６】
2007293894.tif 000018
【図１７】
2007293894.tif 000019
【図１８】
2007293894.tif 000020
【図１９】
2007293894.tif 000021
【図２０】
2007293894.tif 000022
【図２１】
2007293894.tif 000023
【図２２】
2007293894.tif 000024
【図２３】
2007293894.tif 000025
【図２４】
2007293894.tif 000026
【図２５】
2007293894.tif 000027
【図２６】
2007293894.tif 000028
【図２７】
2007293894.tif 000029
【図２８】
2007293894.tif 000030
【図２９】
2007293894.tif 000031
【図３０】
2007293894.tif 000032
【図３１】
2007293894.tif 000033
【図３２】
2007293894.tif 000034
【図３３】
2007293894.tif 000035
【図３４】
2007293894.tif 000036
【図３５】
2007293894.tif 000037
【図３６】
2007293894.tif 000038
【図３７】
2007293894.tif 000039
【図３８】
2007293894.tif 000040
【図３９】
2007293894.tif 000041
【図４０】
2007293894.tif 000042
【図４１】
2007293894.tif 000043
【図４２】
2007293894.tif 000044
【図４３】
2007293894.tif 000045
【図４４】
2007293894.tif 000046
【図４５】
2007293894.tif 000047
【図４６】
2007293894.tif 000048
【図４７】
2007293894.tif 000049
【図４８】
2007293894.tif 000050
【図４９】
2007293894.tif 000051
【図５０】
2007293894.tif 000052
【図５１】
2007293894.tif 000053
【図５２】
2007293894.tif 000054