(57)【要約】【課題】セキュリティを維持しつつ、クライアント側のコンテンツのリクエストから該コンテンツ表示までの時間を短縮すること。【解決手段】クライアント装置とサーバとの間でコンテンツを中継する中継装置に、サーバから送信されたコンテンツを保持する手段と、クライアント装置により送信されたコンテンツのリクエストに対応するコンテンツが保持されているかを判断し、該保持されたデータをレスポンスとして前記クライアント装置に送信するか否かを判断する手段と、リクエストに対応するコンテンツが保持されていないと判断された場合に、該リクエストに追加情報が含まれるか否かを示す情報を格納する手段と、格納された追加情報が含まれるか否かを示す情報に基づいて、リクエストに対してサーバから送信されたレスポンスに対応するリクエストに追加情報が含まれるか否かを判断する手段と、リスポンスに対応するリクエストに追加情報が含まれないと判断された場合に、該レスポンスを格納する手段とを有することにより達成される。【選択図】図２
2009140290.tif 000002
【特許請求の範囲】
【請求項１】
クライアント装置とサーバとの間でコンテンツを中継するコンテンツ中継装置であって、
前記サーバから送信されたコンテンツを保持するキャッシュ保持手段と、
前記クライアント装置により送信されたコンテンツのリクエストに対応するコンテンツが前記キャッシュ保持手段に保持されているかを判断し、該キャッシュ保持手段に保持されたデータをレスポンスとして前記クライアント装置に送信するか否かを判断するキャッシュ利用判断手段と、
前記キャッシュ利用判断手段により、前記リクエストに対応するコンテンツが前記キャッシュ保持手段に保持されていないと判断された場合に、前記リクエストに追加情報が含まれるか否かを示す情報を格納するリクエスト情報保持手段と、
前記リクエスト情報保持手段に格納された追加情報が含まれるか否かを示す情報に基づいて、前記リクエストに対して前記サーバから送信されたレスポンスに対応するリクエストに追加情報が含まれるか否かを判断するキャッシュ対象選択手段と、
前記キャッシュ対象選択手段により、前記リスポンスに対応するリクエストに追加情報が含まれないと判断された場合に、該サーバから送信されたレスポンスを前記キャッシュ保持手段に格納するキャッシュ更新手段と
を有することを特徴とするコンテンツ中継装置。
【請求項２】
請求項１に記載のコンテンツ中継装置において：
前記キャッシュ利用判断手段は、前記クライアント装置により送信されたコンテンツのリクエストに対応するコンテンツが前記キャッシュ保持手段に保持されている場合に、該コンテンツに含まれるキャッシュ禁止の有無及び／又は有効期限に基づいて、該キャッシュ保持手段に保持されたデータをレスポンスとして前記クライアント装置に送信するか否かを判断し、
該コンテンツがキャッシュ禁止及び／又は有効期限切れである場合に、該コンテンツに前記クライアント装置に表示させるコンテンツを差し替えるためのプログラムを埋め込む差し替え指示手段
を有することを特徴とするコンテンツ中継装置。
【請求項３】
請求項１に記載のコンテンツ中継装置において、
前記キャッシュ対象選択手段により、前記サーバから送信されたレスポンスに対応するリクエストに追加情報が含まれると判断された場合に、該追加情報が含まれないリクエストを、前記サーバに送信する代理リクエスト生成手段
を有することを特徴とするコンテンツ中継装置。
【請求項４】
請求項１に記載のコンテンツ中継装置において、
自中継装置と前記サーバとの間の応答時間に基づいて、通信遅延時間を計測する通信時間計測手段
を有し、
前記キャッシュ利用判断手段は、前記通信遅延時間に基づいて、前記キャッシュ保持手段に保持されたデータをレスポンスとして前記クライアント装置に送信するか否かを判断することを特徴とするコンテンツ中継装置。
【請求項５】
請求項１に記載のコンテンツ中継装置において、
前記サーバから送信されたコンテンツを、該コンテンツのリクエストを送信したクライアント装置毎に保持する個別キャッシュ保持手段と
を有し、
前記キャッシュ更新手段は、前記キャッシュ対象選択手段により、前記リクエストに対する応答に対応するリクエストに追加情報が含まれると判断された場合に、該レスポンスを前記個別キャッシュ保持手段に格納することを特徴とするコンテンツ中継装置。
【請求項６】
クライアント装置とサーバとの間でコンテンツを中継するコンテンツ中継装置を有するコンテンツ中継システムであって、
前記中継装置は、
前記サーバから送信されたコンテンツを保持するキャッシュ保持手段と、
前記クライアントにより送信されたコンテンツのリクエストに対応するコンテンツが前記キャッシュ保持手段に保持されているかを判断し、該キャッシュ保持手段に保持されたデータをレスポンスとして前記クライアント装置に送信するか否かを判断するキャッシュ利用判断手段と、
前記キャッシュ利用判断手段により、前記リクエストに対応するコンテンツが前記キャッシュ保持手段に保持されていないと判断された場合に、前記リクエストに追加情報が含まれるか否かを示す情報を格納するリクエスト情報保持手段と、
前記リクエスト情報保持手段に格納された追加情報が含まれるか否かを示す情報に基づいて、前記リクエストに対して前記サーバから送信されたレスポンスに対応するリクエストに追加情報が含まれるか否かを判断するキャッシュ対象選択手段と、
前記キャッシュ対象選択手段により、前記リスポンスに対応するリクエストに追加情報が含まれないと判断された場合に、該サーバから送信されたレスポンスを前記キャッシュ保持手段に格納するキャッシュ更新手段と
を有し、
前記キャッシュ利用判断手段は、前記クライアント装置により送信されたコンテンツのリクエストに対応するコンテンツが前記キャッシュ保持手段に保持されている場合に、該コンテンツに含まれるキャッシュ禁止の有無及び／又は有効期限に基づいて、該キャッシュ保持手段に保持されたデータをレスポンスとして前記クライアント装置に送信するか否かを判断し、
該コンテンツがキャッシュ禁止及び／又は有効期限切れである場合に、該コンテンツに前記クライアント装置に表示させるコンテンツを差し替えるためのプログラムを埋め込み、
前記クライアント装置は、
受信したコンテンツに埋め込まれたコンテンツを取得するリクエストを送信し、表示中のコンテンツを前記リクエストに対するレスポンスに差し替えるコンテンツ取得手段
を有することを特徴とするコンテンツ中継システム。
【請求項７】
クライアント装置とサーバとの間でコンテンツを中継するコンテンツ中継装置におけるコンテンツ中継方法であって、
前記クライアント装置により送信されたコンテンツのリクエストに対応するコンテンツが前記サーバから送信されたコンテンツを保持するキャッシュ保持手段に保持されているかを判断する保持判断ステップと、
前記保持判断ステップにおいて、前記キャッシュ保持手段に保持されていると判断された場合に、前記キャッシュ保持手段に保持されたデータをレスポンスとして前記クライアント装置に送信するか否かを判断するキャッシュ利用判断ステップと、
前記キャッシュ利用判断ステップにおいて、前記リクエストに対応するコンテンツが前記キャッシュ保持手段に保持されていないと判断された場合に、前記リクエストに追加情報が含まれるか否かを示す情報を格納するリクエスト情報保持ステップと、
前記リクエスト情報保持ステップにおいて格納された追加情報が含まれるか否かを示す情報に基づいて、前記リクエストに対して前記サーバから送信されたレスポンスに対応するリクエストに追加情報が含まれるか否かを判断するキャッシュ対象選択ステップと、
前記キャッシュ対象選択ステップにより、前記リスポンスに対応するリクエストに追加情報が含まれないと判断された場合に、該サーバから送信されたレスポンスを前記キャッシュ保持手段に格納するキャッシュ更新ステップと
を有することを特徴とするコンテンツ中継方法。
【請求項８】
コンピュータを、
クライアント装置により送信されたコンテンツのリクエストに対応するコンテンツがサーバから送信されたコンテンツを保持するキャッシュ保持手段に保持されているかを判断し、該キャッシュ保持手段に保持されたデータをレスポンスとして前記クライアント装置に送信するか否かを判断するキャッシュ利用判断手段と、
前記キャッシュ利用判断手段により、前記リクエストに対応するコンテンツが前記キャッシュ保持手段に保持されていないと判断された場合に、前記リクエストに追加情報が含まれるか否かを示す情報を格納するリクエスト情報保持手段と、
前記リクエスト情報保持手段に格納された追加情報が含まれるか否かを示す情報に基づいて、前記リクエストに対して前記サーバから送信されたレスポンスに対応するリクエストに追加情報が含まれるか否かを判断するキャッシュ対象選択手段と、
前記キャッシュ対象選択手段により、前記リスポンスに対応するリクエストに追加情報が含まれないと判断された場合に、該サーバから送信されたレスポンスを前記キャッシュ保持手段に格納するキャッシュ更新手段と
して機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアントとサーバとの間に設置され、サーバからのコンテンツを一時的に蓄え、クライアントからの要求があった場合に本来のサーバに代わってコンテンツを中継する、コンテンツ中継装置、コンテンツ中継システム及びコンテンツ中継方法並びにプログラムに関する。
【背景技術】
【０００２】
プロキシサーバ(proxy  server)は、サーバとクライアントとの間で両装置間の通信を中継する。プロキシサーバは、中継したサーバからのコンテンツをキャッシュに保持する。その後、クライアントからの要求に応じて、該要求対象のコンテンツがキャッシュ内に保持されている場合にはそのコンテンツを応答する（例えば、特許文献１参照）。このようにすることで、クライアントに対する応答時間の高速化を実現する。
【０００３】
また、プロキシサーバは、サーバから送信されるコンテンツ中に含まれる、当該コンテンツの有効期限やキャッシュに格納するか否かを制御するためのキャッシュ制御コマンドの内容を確認し、該コンテンツをキャッシュに保持するか否かを判断する。
【０００４】
しかし、近年のインターネットトラフィックでは、プロキシサーバのキャッシュに保持することができ、キャッシュの機能を利用できるコンテンツが減少してきている。このため、キャッシュの利用効果が落ちてきている。例えば、一般的なニュースサイトやポータルサイトでは、プロキシサーバのキャッシュに保持することを禁止されたコンテンツ（キャッシュ禁止の指示があるコンテンツ）、もしくはキャッシュの有効期限がほぼゼロになるようにコンテンツの有効期限や最終更新日が設定されたコンテンツが多い。
【０００５】
このように、プロキシサーバのキャッシュに保持させないコンテンツが増加している理由は、大きく分けて２つある。１つ目は、キャッシュに保持されたコンテンツではなく、最新のコンテンツを常に表示させるためである。例えは、ニュースに関するコンテンツでは、最新のニュースを提供する観点からは、キャッシュに保持されたコンテンツを提供するよりも、サーバから提供されるニュースを提供する方が好ましい場合がある。２つ目は、セキュリティを目的にしたものである。ユーザ個別の情報がページに含まれる場合に、該ページがキャッシュに格納されることにより該ページに含まれる各ユーザの情報が他のユーザに表示される虞がある。このような問題を防ぐためである。
【特許文献１】特開２００１−２８２６０７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、上述した背景技術には以下に示すような問題点がある。
【０００７】
上記のようなプロキシサーバのキャッシュに保持させないコンテンツが一般化し、増加することにより、例えば特定の時間に該コンテンツのリクエストが大量に発生した場合に、該リクエストがプロキシサーバから外部ネットワーク、例えばサーバへの問い合わせとなる。このため、外部ネットワークのゲートウェイやバックボーンのネットワークのトラヒックが混雑し、タイムアウトやページ表示の大幅な遅延が発生する。
【０００８】
例えば、最新の情報をリアルタイムに表示しなくてもよいと考えるユーザによるリクエストに対して提供されるコンテンツであっても、キャッシュ禁止の指示があるコンテンツは常にキャッシュされない。
【０００９】
また、例えば、コンテンツ自体の更新頻度がキャッシュを禁止とするまで高くなく、キャッシュしても問題ない場合があるにも関わらず、キャッシュ禁止の指示があるコンテンツは常にキャッシュに保持されない。
【００１０】
以上のような場合に、キャッシュによる高速化の効果が全く得られないという問題がある。
【００１１】
また、コンテンツに設定された有効期限が短い場合でも、プロキシサーバ上のキャッシュに保持された該コンテンツが頻繁に消去されるため、該コンテンツへのリクエストがプロキシサーバから外部ネットワーク、例えばサーバへの問い合わせとなる。このため、上記の問題、すなわちタイムアウトやページ表示の大幅な遅延が発生する。
【００１２】
本発明は、上述した問題点を鑑みてなされたものであり、その目的は、セキュリティを維持しつつ、クライアント側のコンテンツのリクエストから該コンテンツ表示までの時間を短縮することができるコンテンツ中継装置、コンテンツ中継システム及びコンテンツ中継方法並びにプログラムを提供することにある。
【課題を解決するための手段】
【００１３】
上記課題を解決するため、このコンテンツ中継装置は、
クライアント装置とサーバとの間でコンテンツを中継するコンテンツ中継装置であって、
前記サーバから送信されたコンテンツを保持するキャッシュ保持手段と、
前記クライアントにより送信されたコンテンツのリクエストに対応するコンテンツが前記キャッシュ保持手段に保持されているかを判断し、該キャッシュ保持手段に保持されたデータをレスポンスとして前記クライアント装置に送信するか否かを判断するキャッシュ利用判断手段と、
前記キャッシュ利用判断手段により、前記リクエストに対応するコンテンツが前記キャッシュ保持手段に保持されていないと判断された場合に、前記リクエストに追加情報が含まれるか否かを示す情報を格納するリクエスト情報保持手段と、
前記リクエスト情報保持手段に格納された追加情報が含まれるか否かを示す情報に基づいて、前記リクエストに対して前記サーバから送信されたレスポンスに対応するリクエストに追加情報が含まれるか否かを判断するキャッシュ対象選択手段と、
前記キャッシュ対象選択手段により、前記リスポンスに対応するリクエストに追加情報が含まれないと判断された場合に、該サーバから送信されたレスポンスを前記キャッシュ保持手段に格納するキャッシュ更新手段と
を有することを要件とする。
【００１４】
また、このコンテンツ中継システムでは、
前記コンテンツ中継装置は、
前記キャッシュ利用判断手段は、前記クライアントにより送信されたコンテンツのリクエストに対応するコンテンツが前記キャッシュ保持手段に保持されている場合に、該コンテンツに含まれるキャッシュ禁止の有無及び／又は有効期限に基づいて、該キャッシュ保持手段に保持されたデータをレスポンスとして前記クライアント装置に送信するか否かを判断し、
該コンテンツがキャッシュ禁止及び／又は有効期限切れである場合に、該コンテンツに前記クライアント装置に表示させるコンテンツを差し替えるためのプログラムを埋め込む差し換え指示手段
を有し、
前記クライアント装置は、
受信したコンテンツに埋め込まれたコンテンツを取得するリクエストを送信し、表示中のコンテンツを前記リクエストに対するレスポンスに差し替えるコンテンツ取得手段
を有することを要件とする。
【００１５】
また、このコンテンツ中継方法は、
クライアント装置とサーバとの間でコンテンツを中継するコンテンツ中継装置におけるコンテンツ中継方法であって、
前記クライアント装置により送信されたコンテンツのリクエストに対応するコンテンツが前記サーバから送信されたコンテンツを保持するキャッシュ保持手段に保持されているかを判断する保持判断ステップと、
前記保持判断ステップにおいて、前記キャッシュ保持手段に保持されていると判断された場合に、前記キャッシュ保持手段に保持されたデータをレスポンスとして前記クライアント装置に送信するか否かを判断するキャッシュ利用判断ステップと、
前記キャッシュ利用判断ステップにおいて、前記リクエストに対応するコンテンツが前記キャッシュ保持手段に保持されていないと判断された場合に、前記リクエストに追加情報が含まれるか否かを示す情報を格納するリクエスト情報保持ステップと、
前記リクエスト情報保持ステップにおいて格納された追加情報が含まれるか否かを示す情報に基づいて、前記リクエストに対して前記サーバから送信されたレスポンスに対応するリクエストに追加情報が含まれるか否かを判断するキャッシュ対象選択ステップと、
前記キャッシュ対象選択ステップにより、前記リスポンスに対応するリクエストに追加情報が含まれないと判断された場合に、該サーバから送信されたレスポンスを前記キャッシュ保持手段に格納するキャッシュ更新ステップと
を有することを要件とする。
【００１６】
また、このプログラムは、
コンピュータを、
クライアント装置により送信されたコンテンツのリクエストに対応するコンテンツがサーバから送信されたコンテンツを保持するキャッシュ保持手段に保持されているかを判断し、該キャッシュ保持手段に保持されたデータをレスポンスとして前記クライアント装置に送信するか否かを判断するキャッシュ利用判断手段と、
前記キャッシュ利用判断手段により、前記リクエストに対応するコンテンツが前記キャッシュ保持手段に保持されていないと判断された場合に、前記リクエストに追加情報が含まれるか否かを示す情報を格納するリクエスト情報保持手段と、
前記リクエスト情報保持手段に格納された追加情報が含まれるか否かを示す情報に基づいて、前記リクエストに対して前記サーバから送信されたレスポンスに対応するリクエストに追加情報が含まれるか否かを判断するキャッシュ対象選択手段と、
前記キャッシュ対象選択手段により、前記リスポンスに対応するリクエストに追加情報が含まれないと判断された場合に、該サーバから送信されたレスポンスを前記キャッシュ保持手段に格納するキャッシュ更新手段と
して機能させることを要件とする。
【発明の効果】
【００１７】
開示のコンテンツ中継装置、コンテンツ中継システム及びコンテンツ中継方法並びにプログラムは、セキュリティを維持しつつ、クライアント側のコンテンツのリクエストから該コンテンツ表示までの時間を短縮できる効果を奏する。
【発明を実施するための最良の形態】
【００１８】
次に、本発明を実施するための最良の形態を、以下の実施例に基づき図面を参照しつつ説明する。
なお、実施例を説明するための全図において、同一機能を有するものは同一符号を用い、繰り返しの説明は省略する。
（第１の実施例）
本発明の実施例に係るコンテンツ中継システムとしての通信システムの構成の一例について、図１を参照して説明する。
【００１９】
本実施例に係る通信システム１０００は、クライアント装置１００ｎ（ｎは、ｎ＞０の整数）を有する。図１には、一例としてｎ＝２の場合を示している。クライアント装置１００ｎは、一台であってもよいし、複数であってもよい。クライアント装置１００ｎは拠点側のネットワーク、言い換えればユーザ側のネットワークに存在する。クライアント装置１００ｎは、例えばＰＣにより構成され、入力装置、演算装置、制御装置、記憶装置及び出力装置により構成される。クライアント装置１００ｎは、プロキシサーバ２００を介して通信網５０を介した先にあるサーバ３００に対してアクセスを行う。通信網５０としては、インターネット、バックボーンネットワークが含まれる。例えば、クライアント装置１００ｎ上のブラウザにより、プロキシサーバ２００を経由して外部のサーバ３００と所定のプロトコル、例えばHTTP(HyperText  Transfer  Protocol)を用いた通信を行う。
【００２０】
また、通信システム１０００は、コンテンツ中継装置としてのプロキシサーバ２００を有する。プロキシサーバ２００は拠点側のネットワークに存在する。例えば、プロキシサーバ２００は、通信網５０を介した先にあるサーバ３００に対してアクセスを行う。そして、プロキシサーバ２００は、上述したように、中継したサーバ３００からのコンテンツをキャッシュに保持する。その後、クライアント装置１００ｎからの要求に応じて、該要求対象のコンテンツがキャッシュ内に保持されている場合にはそのコンテンツを応答する。プロキシサーバ２００は、例えば、入力装置、演算装置、制御装置、記憶装置及び出力装置により構成される。プロキシサーバ２００は、インターネットなどの外部ネットワークとＬＡＮ(Local  Area  Network)などの内部ネットワークとの接点に設置されるようにしてもよい。
【００２１】
また、通信システム１０００は、サーバ３００を有する。サーバ３００は、クライアント装置１００ｎに対し、自サーバ３００の持っている機能やデータ（コンテンツ）を提供する。例えば、サーバ３００は、ＷＷＷサーバにより構成されるようにしてもよい。サーバ３００は、例えば、入力装置、演算装置、制御装置、記憶装置及び出力装置により構成される。例えば、サーバ３００のドメイン名として、www.sample.comが登録されている場合、クライアント装置１００ｎは、例えば、http://www.sample.com/へHTTPリクエストを送信する。
【００２２】
なお、図１には、一例としてプロキシサーバ２００及びサーバ３００が、いずれも１つの場合を示している。しかし、プロキシサーバ２００及びサーバ３００が複数であっても構わない。
【００２３】
また、本実施例では、プロキシサーバ２００がクライアント側のネットワークに設置された場合について説明するが、サーバ側のネットワークに設置するようにしてもよい。またこの場合、リバースプロキシとして構成するようにしてもよい。
【００２４】
また、本実施例では、プロキシサーバ２００を個別のハードウエアとして構成した場合について説明するが、ソフトウェアとして構成するようにしてもよい。この場合、該ソフトウェアは、ファイアウォールが設置されている場合には、該ファイアウォールにインストールすることにより設定するようにしてもよいし、サーバ３００にインストールすることにより設定するようにしてもよい。
【００２５】
本実施例に係るコンテンツ中継システムでは、クライアント装置１００ｎへの応答速度を高速化するため、キャッシュ禁止と指定されているコンテンツであっても、全ユーザに対して共通に表示可能なコンテンツである場合にはキャッシュに強制的に格納する。このようなコンテンツとして例えば、更新頻度が高いために、キャッシュ禁止と指定されているコンテンツが含まれる。一方で、本実施例に係るプロキシサーバ２００は、ユーザ毎の情報、言い換えればユーザ毎に異なるコンテンツはキャッシュに格納しない。すなわち、プロキシサーバ２００は、ユーザ毎にリクエストメッセージが異なる場合はキャッシュ対象外とする。また、プロキシサーバ２００は、別ユーザでも同じリクエストを送れば同じリプライが返ってくる場合はキャッシュ禁止と指定されているコンテンツでも強制的にキャッシュに格納する。例えば、HTTPリクエストメッセージ中に追加情報が付与されていない場合、対応するHTTPリプライのデータを強制的にキャッシュに格納する。例えば、追加情報には、ユーザＩＤ及び／又はセッションＩＤなどが含まれ、クッキー(Cookie)やPOST/GETのパラメータとして、リクエストに付与される。
【００２６】
また、本実施例に係るプロキシサーバ２００は、キャッシュに保持されているリクエストに対応するコンテンツが有効期限切れなどで古い場合、該古いキャッシュをクライアント装置１００ｎに表示させるために送信し、最新情報を後からクライアント装置１００ｎに表示させる。すなわち、プロキシサーバ２００は、有効期限切れ及び／又はキャッシュ禁止のコンテンツをクライアント装置１００ｎに仮表示させておき、最新ではないものは後から差し替えを行う。具体的には、プロキシサーバ２００は、キャッシュ禁止もしくは有効期限切れのコンテンツを応答するときに、該応答するコンテンツの中にスクリプトを埋め込んでおき、クライアント装置１００ｎのブラウザ上で当該スクリプトを実行させる。当該スクリプトの実行中に、サーバ３００からコンテンツの取得し、該コンテンツの取得後に画面の差し替えを行う。スクリプトとしては、例えばJava(登録商標)Script等が含まれる。
【００２７】
本発明の第１の実施例に係るプロキシサーバ２００について、図２を参照して説明する。
【００２８】
本実施例に係るプロキシサーバ２００は、クライアント側送受信部２０２を備える。クライアント側送受信部２０２は、クライアント装置１００ｎとの間でフレームの送受信を行う。例えば、クライアント側送受信部２０２は、クライアント装置１００ｎから受信したコンテンツのリクエスト（コンテンツリクエスト）を後述するキャッシュ利用判断部２０６に渡す。例えば、クライアント装置１００ｎから送信されたHTTPリクエストをキャッシュ利用判断部２０６に入力する。具体的には、クライアント側送受信部２０２は、クライアント装置１００ｎから図３に示すようなHTTPリクエストが送信された場合に、該HTTPリクエストをキャッシュ利用判断部２０６に入力する。HTTPリクエストには、HTTPヘッダが含まれる。
【００２９】
また、本実施例に係るプロキシサーバ２００は、サーバ側送受信部２０４を備える。サーバ側送受信部２０４は、サーバ３００との間でフレームの送受信を行う。例えば、サーバ側送受信部２０４は、サーバ３００から受信したコンテンツリクエストに対するコンテンツのレスポンスを後述するキャッシュ対象選択部２１４に渡す。例えば、サーバ側送受信部２０４は、サーバ３００から送信されたHTTPレスポンスをキャッシュ対象選択部２１４に渡す。具体的には、サーバ側送受信部２０４は、サーバ３００から図４に示すようなHTTPレスポンスが送信された場合に、該HTTPレスポンスをキャッシュ対象選択部２１４に入力する。HTTPレスポンスには、HTTPヘッダと、HTMLヘッダと、HTML  bodyとが含まれる。
【００３０】
また、本実施例に係るプロキシサーバ２００は、キャッシュ利用判断部２０６を備える。キャッシュ利用判断部２０６は、クライアント側送受信部２０２により入力されたコンテンツリクエストに基づいて、該コンテンツリクエストに含まれる宛先を参照し、該宛先が後述する共有キャッシュ保持部２１２に格納されているかを判断する。例えば、キャッシュ利用判断部２０６は、クライアント側送受信部２０２によりHTTPリクエストが入力されると、共有キャッシュ保持部２１２に格納されたコンテンツを読み出すことにより、同じ宛先のコンテンツが格納されているかを判断する。
【００３１】
キャッシュ利用判断部２０６は、共有キャッシュ保持部２１２に同じ宛先のコンテンツが格納されていない場合は、サーバ３００にコンテンツリクエストを転送するために、サーバ側送受信部２０４に該コンテンツリクエストを渡す。そして、キャッシュ利用判断部２０６は、後述するリクエスト情報保持部２１０に、該コンテンツリクエストの情報を格納する。
【００３２】
また、キャッシュ利用判断部２０６は、コンテンツリクエストのメッセージ中にキャッシュ利用禁止の指定が含まれる場合は、共有キャッシュ保持部２１２に該コンテンツの有無にかかわらず、すなわち該コンテンツが格納されているか否かにかかわらずサーバ３００に該コンテンツリクエストを転送するために、サーバ側送受信部２０４に該コンテンツリクエストを入力する。例えば、キャッシュ利用禁止の指定としては、コンテンツリクエストのキャッシュ−コントロール(Cache-control)にノー−キャッシュ(no-cache)の情報を含めることにより指定してもよい。具体的には、キャッシュ利用判断部２０６は、コンテンツリクエストのメッセージ中にキャッシュ利用禁止の指定が含まれる場合は、共有キャッシュ保持部２１２に該コンテンツの有無の確認を行わず、サーバ側送受信部２０４に該コンテンツリクエストを入力する。
【００３３】
また、キャッシュ利用判断部２０６は、共有キャッシュ保持部２１２に該コンテンツが格納されている場合には、以下の処理を行う。キャッシュ利用判断部２０６は、該コンテンツの有効期限を参照し、有効期限が切れていた場合は、当該キャッシュに保持されているデータを後述する差し換え指示部２０８に渡す。また、キャッシュ利用判断部２０６は、該コンテンツにキャッシュ禁止フラグが付与されている場合は、共有キャッシュ保持部２１２に保持されている該データを後述する差し換え指示部２０８に渡す。また、キャッシュ利用判断部２０６は、該コンテンツに含まれる有効期限が有効期限内で、かつ該コンテンツにキャッシュ禁止フラグが付与されていない場合は、当該共有キャッシュ保持部２１２に保持されている該データをHTTPレスポンスとしてクライアント側送受信部２０２に渡す。
【００３４】
また、本実施例に係るプロキシサーバ２００は、差し換え指示部２０８を備える。差し替え指示部２０８は、キャッシュ利用判断部２０６からデータ（HTTPレスポンス）が入力された場合、当該HTTPレスポンスのメッセージ中にコンテンツの取得及び差し換え処理を行うプログラムを埋め込んで、クライアント側送受信部２０２に渡す。コンテンツの取得及び差し替え処理を行うプログラムとしては、ウェブブラウザなどでの利用に適したスクリプト言語が含まれる。このスクリプト言語は簡易プログラム言語と呼ばれてもよい。具体的には、ジャバスクリプト(JavaScript)などが含まれる。
【００３５】
また、本実施例に係るプロキシサーバ２００は、リクエスト情報保持部２１０を備える。リクエスト情報保持部２１０は、サーバ３００へ転送したコンテンツリクエスト、例えばHTTPリクエストの情報を保持する。例えば、HTTPリクエストの情報としては、該リクエストのTCP(Transmission  Control  Protocol)コネクションの識別子、URL(Uniform  Resource  Locator)が含まれる。さらに、追加情報として、例えばクッキー(Cookie)及び／又はGET/POSTパラメータが付与されているか否かを示す情報を保持するようにしてもよい。また、リクエスト情報保持部２１０は、HTTPリクエストメッセージそのものを保持するようにしてもよい。具体的には、例えばリクエスト情報保持部２１０に保持されるリクエスト情報の構造例は、図５のような構成となる。リクエスト情報保持部２１０の各エントリは、プロキシサーバ２００のＩＰアドレス(proxy-ip)が格納されるフィールドと、プロキシサーバ２００のポート番号(proxy-port)が格納されるフィールドと、サーバ３００のＩＰアドレス(server-ip)が格納されるフィールドと、サーバ３００のポート番号(server-port)が格納されるフィールドと、URLが格納されるフィールドと、追加情報の有無を示す情報が格納されるフィールドと、コンテンツリクエストを示す情報が格納されるフィールドとを含む。これは、一例であり適宜変更ができる。
【００３６】
また、本実施例に係るプロキシサーバ２００は、共有キャッシュ保持部２１２を備える。共有キャッシュ保持部２１２は、サーバ３００からの応答コンテンツを保持する。また、共有キャッシュ保持部２１２は、キャッシュデータ、すなわちサーバ３００から応答されたコンテンツ（応答コンテンツ）に加えて、該コンテンツのURL、該コンテンツの有効期限、該コンテンツへのキャッシュ禁止フラグの有無を示す情報などを保持するようにしてもよい。本実施例では、一例として応答コンテンツ(HTTPレスポンス)のHTTPヘッダも含めて保存する場合について示すが、HTTPヘッダを保存しない場合においても適用できる。この場合、共有キャッシュ保持部２１２に保持されるキャッシュデータの構造例は、図６のような構成となる。共有キャッシュ保持部２１２の各エントリは、コンテンツのURLが格納されるフィールドと、キャッシュ禁止の有無を示す情報が格納されるフィールドと、有効期限を示す情報が格納されるフィールドと、コンテンツレスポンスを示す情報が格納されるフィールドとを含む。これは、一例であり適宜変更ができる。
【００３７】
また、本実施例に係るプロキシサーバ２００は、キャッシュ対象選択部２１４を備える。キャッシュ対象選択部２１４は、サーバ側送受信部２０４からHTTPレスポンスを受け取ると、該HTTPレスポンスに含まれるリクエスト情報に基づいて、リクエスト情報保持部２１０から対応するHTTPリクエスト情報を読み出す。例えば、キャッシュ対象選択部２１４は、リクエスト情報に含まれるコンテンツのURLに基づいて、リクエスト情報保持部２１０から対応するHTTPリクエスト情報を読み出す。また、キャッシュ対象選択部２１４は、該HTTPレスポンスにキャッシュ禁止の指示が付与されているか否かを判別し、該コンテンツがキャッシュ対象のコンテンツであるか否かを判断する。例えば、キャッシュ対象選択部２１４は、HTTPレスポンスのヘッダ中の例えばPragmaにノー−キャッシュ(no-cache)の情報が含まれるか否か、キャッシュ−コントロール(Cache-control)にノー−キャッシュ(no-cache)の情報が含まれるか否かにより判断する。該コンテンツがキャッシュ対象のコンテンツであると判断した場合は、キャッシュ対象選択部２１４は、キャッシュ禁止の指示の有無を示す情報及び該HTTPレスポンスをキャッシュ更新部２１６に渡す。ここでは、キャッシュ禁止の指示がないことを示す情報がキャッシュ更新部２１６に渡される。
【００３８】
また、キャッシュ対象選択部２１４は、キャッシュ対象外、すなわちキャッシュ禁止対象のコンテンツであると判断した場合、取得したHTTPレスポンスに対応するHTTPリクエストに追加情報が含まれるか否かに基づいて、該HTTPレスポンスを保持するか否かを判断する。追加情報が含まれない場合、キャッシュ対象選択部２１４は該HTTPレスポンスを保持すると判断する。また、追加情報が含まれる場合、キャッシュ対象選択部２１４は該HTTPレスポンスを保持しないと判断する。
【００３９】
また、本実施例に係るプロキシサーバ２００は、キャッシュ更新部２１６を備える。キャッシュ更新部２１６は、キャッシュ対象選択部２１４により受け取ったHTTPレスポンスに含まれるコンテンツのURL、有効期限、キャッシュ禁止の指示の有無を示す情報をキャッシュデータとして共有キャッシュ保持部２１２に渡す。また、キャッシュ更新部２１６は、該HTTPレスポンスをクライアント側送受信部２０２に渡す。
【００４０】
プロキシサーバ２００のハードウエア構成例について説明する。
【００４１】
プロキシサーバ２００は、ＣＰＵと、ＲＯＭと、ＲＡＭと、ハードディスク装置等の大容量の記憶装置とを備え、さらにフレキシブルディスク装置等の補助記憶装置を備える。
【００４２】
コンピュータをプロキシサーバ２００として機能させるためのプログラムは、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、メモリカード等の記録媒体に記録された状態で提供される。この記録媒体をコンピュータの補助記憶装置に挿入すると、媒体に記録されたプログラムが読み取られる。そして、ＣＰＵは、読み込んだプログラムをＲＡＭあるいは記憶装置に書き込み、このプログラムにしたがって実施例で説明するような処理を実行する。また、プログラムを、通信網５０を介してダウンロードするようにしてもよい。
【００４３】
次に、本実施例に係るプロキシサーバ２００の動作について、図７−図９を参照して説明する。本実施例では、（１）Cookieなしのリクエスト受信時、すなわち追加情報が含まれないコンテンツリクエストが受信された場合、（２）リクエストのレスポンスにキャッシュ禁止の指示がある場合、すなわちコンテンツリクエストに対するレスポンスにキャッシュ禁止の指示が含まれる場合、（３）同一のコンテンツに対してクッキーなしのリクエストを受信した場合、すなわちキャッシュ禁止の指示が含まれるコンテンツに対して追加情報が含まれないコンテンツリクエストが受信された場合、（４）再度差し替え用のリクエスト〜リプライ受信時に分けて説明する。
【００４４】
（１）クッキーが含まれないHTTPリクエストが受信された場合について説明する。
【００４５】
本実施例では、一例としてクライアント装置１００１及び１００２が、サーバ３００にコンテンツリクエストを送信する場合について説明する。例えば、クライアント装置１００１は、サーバ３００のドメイン名として、www.sample.comが登録されている場合、URLとしてhttp://www.sample.com/へHTTPリクエストを送信する。この場合、共有キャッシュ保持部２１２には、該URLに対応するキャッシュデータが保持されていないものとする。また、クライアント装置１００ｎとプロキシサーバ２００との間のコネクションと、プロキシサーバ２００とサーバ３００との間のコネクションは異なるTCPコネクションとする。プロキシサーバ２００とサーバ３００との間のコネクション通信では、プロキシサーバ２００のIPアドレス（10.0.0.10）、サーバ３００のIPアドレス（20.0.0.10）、ポート番号８０を利用するものとする。プロキシサーバ２００の送信時のポート番号はプロキシサーバが任意の値を設定するものとする。一例として、本実施例では、プロキシサーバ２００の送信時のポート番号として「54352」から順に付与される場合について説明する。
【００４６】
なお、本実施例では、プロキシサーバ２００が中継処理を実施するためにテーブル等を利用してサーバ３００側のコネクションとクライアント装置１００ｎ側のコネクションとのくくりつけ（対応付け）が行われる場合について説明する。
【００４７】
クライアント装置１００１上のブラウザは、HTTPリクエストを送信する。例えば、クライアント装置１００１は、宛先URLとしてhttp://www.sample.com/、Cookieなし、POST/GETパラメータなしの情報を含むHTTPリクエストを送信する。プロキシサーバ２００のクライアント側送受信部２０２は、クライアント装置１００１により送信されたHTTPリクエストを受信し、キャッシュ利用判断部２０６に、該HTTPリクエストを渡す。
【００４８】
キャッシュ利用判断部２０６は、HTTPリクエストに含まれる宛先URLに該当するキャッシュデータがないか共有キャッシュ保持部２１２を検索する。例えば、キャッシュ利用判断部２０６は、宛先URLとしてhttp://www.sample.com/のキャッシュデータがないか共有キャッシュ保持部２１２を検索する。
【００４９】
共有キャッシュ保持部２１２に該宛先URLのキャッシュデータが保持されていない場合、キャッシュ利用判断部２０６は、リクエスト情報保持部２１０に該HTTPリクエストの情報を格納する。例えば、リクエスト情報には、上述したようにプロキシサーバ２００のＩＰアドレスと、プロキシサーバ２００のポート番号と、サーバ３００のＩＰアドレスと、サーバ３００のポート番号と、URLと、追加情報の有無を示す情報と、コンテンツリクエストを示す情報が含まれる。例えば、キャッシュ利用判断部２０６は、リクエスト情報保持部２１０にproxy-ip=10.0.0.10,  proxy-port=54352,  server-IP=20.0.0.10,  server-port=80,  URL=http://www.sample.com,  追加情報なしを示す情報を格納する。また、キャッシュ利用判断部２０６は、該HTTPリクエストをサーバ側送受信部２０４に渡す。
【００５０】
サーバ側送受信部２０４は、受け取った該HTTPリクエストをhttp://www.sample.com/のURLを持つサーバ３００へ転送する。
【００５１】
（２）キャッシュ禁止の指示を含むレスポンスが受信された場合について説明する。
【００５２】
本実施例では、HTTPリクエストを受信したサーバ３００が、キャッシュ禁止の指示を付与したHTTPレスポンスメッセージを応答する場合について説明する。
【００５３】
サーバ３００は、クライアント装置１００１に対して、受信したHTTPリクエストに対応するコンテンツを含むHTTPレスポンスメッセージを送信する。例えば、サーバ３００は、キャッシュ禁止の指示を含むHTTPレスポンスを送信する。具体的には、サーバ３００は、HTTPヘッダ中にキャッシュ禁止の指示、例えばCache-controlにno-cacheの記述が含まれるHTTPレスポンスを送信する。また、サーバ３００は、HTTPヘッダではなく、HTML(HyperText  Markup  Language)ヘッダ中にキャッシュ禁止の指示、例えばCache-controlにno-cacheの記述が含まれるHTTPレスポンスを送信するようにしてもよい。
【００５４】
サーバ側送受信部２０４は、サーバ３００により送信されたHTTPレスポンスを受信し、キャッシュ対象選択部２１４に、該HTTPレスポンスに含まれるメッセージを渡す。
【００５５】
キャッシュ対象選択部２１４は、当該HTTPレスポンスの情報に基づいて、リクエスト情報保持部２１０を検索し、URL及び追加情報の有無を示す情報を取得する。例えば、HTTPレスポンスの情報としては、プロキシサーバ２００のＩＰアドレス、プロキシサーバ２００のポート番号、サーバ３００のＩＰアドレス、サーバ３００のポート番号のいずれかが含まれる。例えば、キャッシュ対象選択部２１４は、当該HTTPレスポンスの情報として、proxy-ip=10.0.0.10、  proxy-port=54352,  server-IP=20.0.0.10,  server-port=80のいずれか基づいて、リクエスト情報保持部２１０を検索し、URL及び追加情報の有無を示す情報を取得する。ここでは、URLとして、http://www.sample.com/、追加情報なしの情報が取得される。
【００５６】
キャッシュ対象選択部２１４は、取得したHTTPレスポンスに対応するHTTPリクエストに追加情報が含まれるか否かに基づいて、該HTTPレスポンスを保持するか否かを判断する。追加情報が含まれない場合、キャッシュ対象選択部２１４は該HTTPレスポンスを保持すると判断する。また、追加情報が含まれる場合、キャッシュ対象選択部２１４は該HTTPレスポンスを保持しないと判断する。ここでは、キャッシュ対象選択部２１４は、取得したHTTPレスポンス対するHTTPリクエストに追加情報が含まれないため、HTTPヘッダ中にキャッシュ禁止の指示があるが、該HTTPレスポンスを保持すると判断する。キャッシュ対象選択部２１４は、キャッシュ更新部２１６に該HTTPレスポンスを渡す。
【００５７】
キャッシュ更新部２１６は、キャッシュ対象選択部２１４からHTTPレスポンスを受け取ると、該HTTPレスポンスに含まれるリクエストURLと、キャッシュ禁止のフラグと、有効期限と、HTTPレスポンスを共有キャッシュ保持部２１２に格納する。具体的には、該HTTPレスポンスがキャッシュ禁止の情報を含むコンテンツであることから、共有キャッシュ保持部２１２に、リクエストURLとしてhttp://www.sample.com/、キャッシュ禁止のフラグ、有効期限として例えば2007/7/1  10:00:00、及び該HTTPレスポンスを格納する。また、Expires（期限切れ）ヘッダに有効期限が明記されていない場合には、有効期間がプロキシサーバ２００により決定されるようにしてもよい。例えば、プロキシサーバ２００は、キャッシュ作成後３日後などの有効期間を、既存のアルゴリズムにより決定する。また、キャッシュ更新部２１６は、HTTPレスポンスをクライアント送受信部２０２に渡す。
【００５８】
クライアント送受信部２０２は、キャッシュ更新部２１６によりHTTPレスポンスを受け取ると、該HTTPレスポンスをクライアント装置１００１に送信する。
【００５９】
クライアント装置１００１のブラウザは、プロキシサーバ２００により送信されたHTTPレスポンスのコンテンツを表示する。
【００６０】
（３）再度Cookieなしのリクエストを受信した場合について説明する。
【００６１】
上記（１）におけるクライアント装置１００１と同様に、クライアント装置１００２が宛先URLとしてのhttp://www.sample.com/へHTTPリクエストを送信する場合について説明する。
【００６２】
クライアント装置１００２上のブラウザは、HTTPリクエストを送信する。例えば、クライアント装置１００２は、宛先URLとして、http://www.sample.com/、Cookieなし、POST/GETパラメータなしの情報を含むHTTPリクエストを送信する。プロキシサーバ２００のクライアント側送受信部２０２は、該HTTPリクエストを受信し、キャッシュ利用判断部２０６に、該HTTPリクエストを渡す。
【００６３】
キャッシュ利用判断部２０６は、該HTTPリクエストに含まれる宛先URLに該当するキャッシュデータがないか共有キャッシュ保持部２１２を検索する。例えば、キャッシュ利用判断部２０６は、宛先URLとして、http://www.sample.com/のキャッシュデータがないか共有キャッシュ保持部２１２を検索する。キャッシュ利用判断部２０６は、共有キャッシュ保持部２１２を検索した結果、宛先URLのキャッシュデータが保持されているため、エントリを取得する。例えば、エントリには、キャッシュ禁止のフラグ、有効期限、例えば、2007/7/1  10:00:00、及び該HTTPレスポンスが含まれる。
【００６４】
キャッシュ利用判断部２０６は、該キャッシュデータにキャッシュ禁止フラグが付与されているため、該HTTPレスポンスを差し替え指示部２０８に渡す。なお、キャッシュ禁止のフラグがない場合でも、現在の時刻がキャッシュの有効期限以降、すなわち該コンテンツが有効期限切れであれば以下同様の動作となる。すなわち、該HTTPレスポンスを差し替え指示部２０８に渡す。
【００６５】
差し替え指示部２０８は、HTTPレスポンスを受け取ると、当該HTTPレスポンスのメッセージ中に該コンテンツの取得及び差し換え処理を行うプログラムを埋め込んで、クライアント側送受信部２０２に入力する。具体的には、HTTPヘッダ中に、当該プログラムをスクリプトタグ等により埋め込み、さらに、コンテンツが読み込まれたら、該埋め込まれただプログラムを実行する処理を行わせるコマンドを追加する。例えば、bodyタグのonload属性などを利用して、該埋め込まれたプログラムを起動するコマンドを追加する。
【００６６】
差し替え指示部２０８は、プログラムが埋め込まれ、該プログラムを実行するコマンドが追加されたHTTPレスポンスをクライアント側送受信部２０２に渡す。
【００６７】
クライアント送受信部２０２は、差し替え指示部２０８により受け取ったHTTPレスポンスをクライアント装置１００２に対して送信する。
【００６８】
クライアント装置１００２は、プロキシサーバ２００により送信されたHTTPレスポンスを受信すると、ブラウザは、該HTTPレスポンスのコンテンツを実行し、表示する。例えば、クライアント装置１００ｎは、コンテンツ取得手段としてのコンテンツ取得プログラムを有する。クライアント装置１００ｎは、ＣＰＵと、ＲＯＭと、ＲＡＭと、ハードディスク装置等の大容量の記憶装置とを備え、さらにフレキシブルディスク装置等の補助記憶装置を備える。
【００６９】
コンピュータをクライアント装置１００ｎとして機能させるためのプログラムは、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、メモリカード等の記録媒体に記録された状態で提供される。この記録媒体をコンピュータの補助記憶装置に挿入すると、媒体に記録されたプログラムが読み取られる。そして、ＣＰＵは、読み込んだプログラムをＲＡＭあるいは記憶装置に書き込み、このプログラムにしたがって実施例で説明するような処理を実行する。また、プログラムを、通信網５０を介してダウンロードするようにしてもよい。このプログラムには、コンテンツ取得プログラムが含まれる。
【００７０】
このコンテンツ取得プログラムは、コンピュータに、最初にキャッシュ（HTTPレスポンスのコンテンツ）を表示させると同時にリクエストを送信させ、該リクエストに対するレスポンスを受信させると、表示中のコンテンツを該レスポンスに差し替える処理を行わせる。また、コンテンツ取得プログラムは、コンピュータに、最初のキャッシュに保持されたコンテンツを表示させる前に、該古いキャッシュを表示させるかどうかをユーザに選択させる処理を行わせるようにしてもよい。また、コンテンツ取得プログラムは、コンピュータに、最初のキャッシュを表示させている間は、古いキャッシュを表示中であることをクライアント装置に表示する処理を行わせるようにしてもよい。また、コンテンツ取得プログラムは、コンピュータに、レスポンスを受信した場合に、該レスポンスへの差し換えを即座に行わせるのではなく、準備完了のメッセージを表示させて、差し替えタイミングをユーザに選択させる処理を行わせるようにしてもよい。具体的には、コンテンツ取得プログラムは、onload属性により呼ばれる関数内に、JavaScriptのオブジェクトとして用意されているXMLHttpRequestを利用してコンテンツを取得するような実装が可能である。
【００７１】
（４）再度差し替え用のリクエストからリプライ受信までの処理について説明する。
【００７２】
クライアント装置１００２においてスクリプトが実行され、上記（１）におけるクライアント装置１００１と同様に、クライアント装置１００２が、URLとして、http://www.sample.com/へHTTPリクエストを送信する場合について説明する。
【００７３】
また、プロキシサーバ２００とサーバ３００との間のコネクション通信では、プロキシサーバ２００のIPアドレスと、プロキシサーバ２００のポート番号と、サーバ１００１のIPアドレスと、ポート番号８０とを利用する場合について説明する。例えば、プロキシサーバ２００のIPアドレスとして（10.0.0.10）、プロキシサーバ２００のポート番号として（54353）、サーバ１００１のIPアドレスとして（20.0.0.10）、ポート番号として８０番が利用される。
【００７４】
クライアント装置１００２のブラウザは、HTTPレスポンスを表示すると、プロキシサーバ２００の差し替え指示部２０８により埋め込まれたプログラムを起動する。例えば、ブラウザは、bodyのonload属性から、スクリプトプログラムを起動する。そして、クライアント装置１００２のブラウザは、URLとして、http://www.sample.com/宛にHTTPリクエストを送信する。この際、例えば、HTTPヘッダ中にCache-controlにno-cache等のキャッシュ利用禁止の指示を記載することにより、プロキシサーバ２００上のキャッシュを受け取ることを拒否することができ、該キャッシュを表示させないようにすることができる。コンテンツ取得プログラムは、HTTPレスポンスの受信監視をする。このようにすることにより、HTTPリクエストに対する応答が受信された場合に差し替えプログラムを起動できる。
【００７５】
クライアント側送受信部２０２は、クライアント装置１００２のブラウザにより送信されたHTTPリクエストを受信すると、キャッシュ利用判断部２０６に該HTTPリクエストを渡す。
【００７６】
キャッシュ利用判断部２０６は、該HTTPリクエストにキャッシュ利用禁止の指示が含まれるため、共有キャッシュ保持部２１２の検索を行わず、リクエスト情報保持部２１０に当該HTTPリクエストの情報を格納する。例えば、キャッシュ利用判断部２０６は、proxy-ip=10.0.0.10,  proxy-port=54353,  server-IP=20.0.0.10,  server-port=80,  URL=http://www.sample.com,  追加情報なしを示す情報を、リクエスト情報保持部２１０に格納する。キャッシュ利用判断部２０６は、該HTTPリクエストをサーバ側送受信部２０４に渡す。
【００７７】
サーバ側送受信部２０４は、受け取った該HTTPリクエストをhttp://www.sample.com/のURLを持つサーバ３００へ転送する。
【００７８】
サーバ３００は、クライアント装置１００２に対して、HTTPリクエストに対応するコンテンツを含むHTTPレスポンスメッセージを送付する。この際、HTTPヘッダ中に、キャッシュ利用禁止の指定、例えばCache-control:
no-cacheの記述が含まれるものとする。
【００７９】
サーバ側送受信部２０４が、サーバ３００からHTTPレスポンスを受信すると、キャッシュ対象選択部２１４に、該HTTPレスポンスを渡す。
【００８０】
キャッシュ対象選択部２１４は、サーバ側送受信部２０４により受け取ったHTTPレスポンスに含まれる情報に基づいて、URL及び追加情報の有無を示す情報を取得する。例えば、キャッシュ対象選択部２１４は、HTTPレスポンスに含まれるプロキシサーバ２００のＩＰアドレス、プロキシサーバ２００のポート番号、サーバ３００のＩＰアドレス、サーバ３００のポート番号に基づいて、リクエスト情報保持部２１０に格納されたリクエスト情報を検索し、URL及び追加情報の有無を示す情報を取得する。例えば、該HTTPレスポンスの情報（proxy-ip=10.0.0.10,  proxy-port=54353,  server-IP=20.0.0.10,  server-port=80）に基づいて、リクエスト情報保持部２１０を検索し、リクエスト情報を取得する。ここでは、URL及び追加情報なしを取得する。
【００８１】
キャッシュ対象選択部２１４は、リクエスト情報保持部２１０により受け取ったリクエスト情報に基づいて、HTTPレスポンスをキャッシュに保持するか否かを判断する。具体的には、キャッシュ対象選択部２１４は、リクエスト情報保持部２１０により受け取ったリクエスト情報に基づいて、該リクエスト情報に追加情報が含まれるかに基づいて、共有キャッシュ保持部２１２に保持するか否かを判断する。具体的には、キャッシュ対象選択部２１４は、追加情報が含まれる場合には共有キャッシュ保持部２１２に保持しないと判断し、該HTTPレスポンスをクライアント側送受信部２０２に入力し、追加情報が含まれない場合には共有キャッシュ保持部２１２に保持すると判断し、該HTTPレスポンスをキャッシュ更新部２１６に入力する。ここでは、追加情報なしであるため、HTTPヘッダ中にキャッシュ禁止の指示があるが、キャッシュ更新部２１６に該HTTPレスポンスを渡す。
【００８２】
キャッシュ更新部２１６は、共有キャッシュ保持部２１２に、リクエストURL、キャッシュ禁止のフラグ、有効期限及び該HTTPレスポンスを格納する。例えば、リクエストURLとしてhttp://www.sample.com、有効期限として2007/7/1  10:05:00を格納する。なお、有効期限は受信時刻を元にプロキシサーバ２００のアルゴリズムで再計算されたものとしてもよい。キャッシュ更新部２１６は、HTTPレスポンスをクライアント送受信部２０２に渡す。
【００８３】
クライアント側送受信部２０２は、キャッシュ更新部２１６により受け取ったHTTPレスポンスをクライアント装置１００２に対して送信する。
【００８４】
クライアント装置１００２のブラウザは該HTTPレスポンスを受信すると、HTTPレスポンス受信イベントが発生することによりコンテンツの差し替えプログラムが起動され、ブラウザの表示内容が該HTTPレスポンスの内容に差し替えられる。なお、コンテンツに変化がない場合は、差し替えを行わないようにしてもよい。コンテンツに変化がない場合には、コンテンツ自体が同じ場合、HTTPヘッダのDate値が更新されていない場合、サーバから304  not  modifiedの応答があった場合などが含まれる。
【００８５】
ここで、コンテンツの差し替えは、例えばJavaScriptのオブジェクトとして用意されているdocument.getElementById(‘body’).innerTextを用いてHTMLのコンテンツ全体を示すbodyタグ配下全体を新しいコンテンツに置き換えるような実装が可能である。
【００８６】
次に、本実施例に係るプロキシサーバ２００におけるHTTPリクエストメッセージに対する処理について、図８を参照して説明する。
【００８７】
プロキシサーバ２００は、クライアント装置１００ｎからHTTPリクエストを受信したか否かを判断する。具体的には、クライアント側送受信部２０２は、クライアント装置１００ｎからHTTPリクエストを受信したか否かを判断する。
【００８８】
HTTPリクエストを受信した場合（ステップＳ８０２：ＹＥＳ）、プロキシサーバ２００は、該HTTPリクエストにキャッシュ利用禁止の指定が含まれているか否かを判断する（ステップＳ８０４）。具体的には、キャッシュ利用判断部２１２は、該HTTPリクエストのヘッダに、キャッシュ利用禁止の指示が含まれるか否かを判断することにより、キャッシュ禁止か否かを判断する。
【００８９】
キャッシュ利用禁止でない場合（ステップＳ８０４：ＮＯ）、キャッシュ利用判断部２０６は、共有キャッシュ保持部２１２を検索する（ステップＳ８０６）。
【００９０】
キャッシュ利用判断部２０６は、共有キャッシュ保持部２１２に、該HTTPリクエストに対応するコンテンツが格納されているか否かを判断する（ステップＳ８０８）。
【００９１】
共有キャッシュ保持部２１２に、該HTTPリクエストに対応するコンテンツが格納されている場合（ステップＳ８０８：ＹＥＳ）、キャッシュ利用判断部２０６は、該コンテンツの有効期限が切れているかを判断する（ステップＳ８１０）。
【００９２】
該コンテンツの有効期限が切れていない場合（ステップＳ８１０：ＮＯ）、キャッシュ利用判断部２０６は、該コンテンツにキャッシュ禁止フラグがあるかを判断する（ステップＳ８１２）。
【００９３】
該コンテンツにキャッシュ禁止フラグがない場合（ステップＳ８１２：ＮＯ）、キャッシュ利用判断部２０６は、該コンテンツをクライアント側送受信部２０２に渡し、クライアント側送受信部２０２は、クライアント装置にHTTPリプライを転送する（ステップＳ８１６）。
【００９４】
一方、ステップＳ８１０において該コンテンツの有効期限が切れている場合（ステップＳ８１０：ＹＥＳ）及び該コンテンツにキャッシュ禁止フラグがある場合（ステップＳ８１２：ＹＥＳ）、差し替え指示部２０８は、該コンテンツにスクリプトの埋め込みを行う（ステップＳ８１４）。そして、ステップＳ８１６に遷移し、差し替え指示部２０８は、スクリプトの埋め込みが行われたコンテンツをクライアント側送受信部２０２に渡し、クライアント側送受信部２０２は、クライアント装置１００ｎに、該スクリプトの埋め込みが行われたコンテンツをHTTPリプライとして転送する（ステップＳ８１６）。
【００９５】
また、ステップＳ８０４において、キャッシュ利用禁止である場合（ステップＳ８０４：ＹＥＳ）及びステップＳ８０８において、共有キャッシュ保持部２１２に、該HTTPリクエストに対応するコンテンツが格納されていない場合（ステップＳ８０８：ＮＯ）、キャッシュ利用判断部２０６は、リクエスト情報保持部２１０に、リクエスト情報を記録する（ステップＳ８１８）。そして、キャッシュ利用判断部２０６は、HTTPリクエストをサーバ側送受信部２０４に渡す。サーバ側送受信部２０４は、キャッシュ利用判断部２０６から取得したHTTPリクエストをサーバ３００に転送する（ステップＳ８２０）。
【００９６】
ステップＳ８０２において、HTTPリクエストを受信していない場合（ステップＳ８０２：ＮＯ）、例えば、HTTPレスポンスを受信した場合、プロキシサーバ２００は、該HTTPレスポンスにキャッシュ利用禁止の指定が含まれているか否かを判断する（ステップＳ８２２）。具体的には、キャッシュ対象選択部２１４は、該HTTPレスポンスのヘッダに、キャッシュ利用禁止の指示が含まれるか否かを判断することにより、キャッシュ禁止か否かを判断する。
【００９７】
キャッシュ利用禁止である場合（ステップＳ８２２：ＹＥＳ）、キャッシュ対象判断部２１４は、リクエスト情報保持部２１０より該HTTPレスポンスに対応するリクエスト情報を読み出す（ステップ８２４）。そして、キャッシュ対象選択部２１４は、該リクエスト情報に追加情報が含まれるかを判断する（ステップＳ８２６）。
【００９８】
該リクエスト情報に追加情報が含まれない場合（ステップＳ８２６：ＮＯ）及びステップＳ８２２においてキャッシュ利用禁止でない場合（ステップＳ８２２：ＮＯ）、キャッシュ対象選択部２１４は、キャッシュ更新部２１６に、該リクエスト情報に対応するコンテンツを入力する。キャッシュ更新部２１６は、共有キャッシュ保持部２１２に、該コンテンツを格納する（ステップ８２８）。そして、キャッシュ更新部２１６は、HTTPレスポンスをクライアント側送受信部２０２に渡す。
【００９９】
一方、ステップＳ８２６において、該リクエスト情報に追加情報が含まれている場合（ステップＳ８２６：ＹＥＳ）、キャッシュ対象選択部２１４は、HTTPレスポンスをクライアント側送受信部２０２に渡す。
【０１００】
クライアント側送受信部２０２は、キャッシュ更新部２１６又はキャッシュ対象選択部２１４により受け取ったHTTPリスポンスをHTTPリプライとして、HTTPリクエストを送信したクライアント装置に転送する（ステップＳ８３０）。
【０１０１】
なお、上述した実施例では共有キャッシュ保持部２１２にキャッシュ用の有効期限をあらかじめ計算して格納する場合について説明したが、HTTPヘッダも含めて保存しておき、保存してあるキャッシュを取り出すときに有効期限を再計算するようにしてもよい。
【０１０２】
本実施例によれば、ユーザ固有に応答されるコンテンツは他のユーザに表示させずに、ユーザ固有に応答されないコンテンツは、キャッシュ禁止もしくはキャッシュの有効期限切れであってもキャッシュに保持されたコンテンツを強制表示し、その後、コンテンツの差し換えを行うことができる。このように、キャッシュを仮表示できるため、コンテンツの表示時間を短縮することができる。
（第２の実施例）
クライアント装置１００ｎからのリクエストに追加情報が付与されている場合、その情報がユーザを識別するための情報ではない場合もある。しかし、追加情報はサーバ３００上のアプリケーションの実装に依存するため、該追加情報がユーザの識別情報かどうかを判別することは難しい。従って、実際は各ユーザに同じコンテンツを応答している場合でも上述した第１の実施例ではキャッシュに保持することができなかった。
【０１０３】
そこで、本実施例に係るコンテンツ中継システムでは、プロキシサーバ２００は、リクエストメッセージ中の追加情報を削除したリクエストメッセージを、サーバ３００に送信する。具体的には、リクエスト情報保持部２１０に追加情報が付与されていたことが記録されており、かつレスポンスメッセージがキャッシュ禁止対象のコンテンツの場合に、プロキシサーバ２００は、コンテンツを取得するための追加情報を付与しないリクエストを作成し、送信する。そして、キャッシュ更新部２１６は該レスポンスメッセージを共有キャッシュ保持部２１２に追加する。
【０１０４】
本実施例に係るプロキシサーバ２００は、図２を参照して説明したプロキシサーバに代理リクエスト生成部２１８を有するようにしたものである。
【０１０５】
代理リクエスト生成部２１８は、キャッシュ対象選択部２１４からコンテンツの取得依頼を受け取ると、当該URLへのHTTPリクエストを作成し、リクエスト情報をリクエスト情報保持部２１０に格納する。コンテンツの取得依頼には、取得先のURLが含まれる。また、代理リクエスト生成部２１８は、作成したHTTPリクエストをサーバ側送受信部２０４に渡す。
【０１０６】
また、本実施例に係るキャッシュ対象選択部２１４は、上述した第１の実施例に係るキャッシュ対象選択部の機能に加えて、リクエスト情報保持部２１０に追加情報ありと記載されているリクエストに対するHTTPレスポンスであり、かつキャッシュ禁止の指示が含まれるHTTPレスポンスを受信した場合に、代理リクエスト生成部２１８に対してコンテンツの取得依頼を行う。
【０１０７】
また、本実施例に係るキャッシュ更新部２１６は、上述した第１の実施例に係るキャッシュ更新部２１６の機能に加えて、キャッシュ更新後、該HTTPレスポンスが代理リクエストによる応答であれば、当該レスポンスを廃棄する。
【０１０８】
次に、本実施例に係るプロキシサーバ２００の動作について、（１）Cookieありのリクエスト受信時、すなわち追加情報が含まれるコンテンツリクエストが受信された場合、（２）該リクエストのレスポンスにキャッシュ禁止の指示がある場合、（３）代理リクエストへの送信〜応答時に分けて説明する。
【０１０９】
本実施例においては、コンテンツのURLとしてhttp://www.sample.com/withparam.htmlである場合について説明する。
【０１１０】
（１）Cookieありのリクエストが受信された場合について説明する。
【０１１１】
クライアント装置１００１上のブラウザは、HTTPリクエストを送信する。例えば、クライアント装置１００１は、宛先URLとしてhttp://www.sample.com/  withparam.html、Cookieあり（Cookie: sessionid=eix0y1kx）、POST/GETパラメータなしのHTTPリクエストを送信する。プロキシサーバ２００のクライアント側送受信部２０２は、該HTTPリクエストを受信し、キャッシュ利用判断部２０６に該HTTPリクエストを渡す。
【０１１２】
キャッシュ利用判断部２０６は、HTTPリクエストに含まれる宛先URLに該当するキャッシュデータがないか、共有キャッシュ保持部２１２を検索する。例えば、キャッシュ利用判断部２０６は、宛先URLとしてのhttp://www.sample.com/withparam.htmlのキャッシュデータがないか、共有キャッシュ保持部２１２を検索する。
【０１１３】
共有キャッシュ保持部２１２に該宛先URLのキャッシュデータが保持されていない場合、キャッシュ利用判断部２０６は、リクエスト情報保持部２１０に当該リクエストの情報を格納する。例えば、キャッシュ利用判断部２０６は、リクエストの情報を格納する。例えば、キャッシュ利用判断部２０６は、proxy-ip=10.0.0.10,  proxy-port=54354,  server-IP=20.0.0.10,  server-port=80,  URL=http://www.sample.com/withparam.html,  追加情報ありを格納する。そして、キャッシュ利用判断部２０６は、該HTTPリクエストをサーバ側送受信部２０４に渡す。
【０１１４】
サーバ側送受信部２０４は、http://www.sample.com/withparam.htmlのURLを持つサーバ３００へ、受け取った該HTTPリクエストを転送する。
【０１１５】
（２）上記リクエストのレスポンスにキャッシュ禁止の指示がある場合について説明する。
【０１１６】
本実施例では、HTTPリクエストを受信したサーバ３００が、キャッシュ禁止の指示が付与されたHTTPレスポンスメッセージを応答する場合について説明する。
【０１１７】
サーバ３００は、クライアント装置１００１に対して、受信したHTTPリクエストに対応するコンテンツを含むHTTPレスポンスメッセージを送信する。例えば、サーバ３００は、キャッシュ禁止の指示を含むHTTPレスポンスを送信する。具体的には、サーバ３００は、HTTPヘッダ中のCache-controlにno-cacheの記述が含まれるHTTPレスポンスを送信する。また、サーバ３００は、HTTPヘッダではなく、HTML(HyperText  Markup  Language)ヘッダ中のCache-controlにno-cacheの記述が含まれるHTTPレスポンスを送信するようにしてもよい。
【０１１８】
サーバ側送受信部２０４は、サーバ３００により送信されたHTTPレスポンスを受信し、キャッシュ対象選択部２１４に、該HTTPレスポンスに含まれるメッセージを渡す。
【０１１９】
キャッシュ対象選択部２１４は、当該HTTPレスポンスの情報に基づいて、リクエスト情報保持部２１０を検索し、URL及び追加情報の有無を示す情報を取得する。例えば、HTTPレスポンスの情報としては、プロキシサーバ２００のＩＰアドレス、プロキシサーバ２００のポート番号、サーバ３００のＩＰアドレス、サーバ３００のポート番号のいずれかが含まれる。例えば、キャッシュ対象選択部２１４は、当該HTTPレスポンスの情報として、proxy-ip=10.0.0.10、  proxy-port=54354,  server-IP=20.0.0.10,  server-port=80に基づいて、リクエスト情報保持部２１０を検索し、URL及び追加情報の有無を示す情報を取得する。ここでは、追加情報ありの情報が取得される。
【０１２０】
キャッシュ対象選択部２１４は、取得したHTTPレスポンスに追加情報が含まれるか否かに基づいて、該HTTPレスポンスを保持するか否かを判断する。追加情報が含まれない場合、キャッシュ対象選択部２１４は該HTTPレスポンスを保持すると判断する。また、追加情報が含まれる場合、キャッシュ対象選択部２１４は、該追加情報を削除したリクエストを送信すると判断する。ここでは、キャッシュ対象選択部２１４は、追加情報があるため、該追加情報を削除し、追加情報が含まれないリクエストを送信すると判断し、代理リクエスト生成部２１８にリクエスト情報保持部２１０より得たURL  http://www.sample.com/withparam.htmlの取得依頼を渡す。
【０１２１】
代理リクエスト生成部２１８は、該取得依頼にしたがって、該URLへの追加情報を削除したHTTPリクエストを作成し、サーバ側送受信部２０４に渡す。また、代理リクエスト生成部２１８は、リクエスト情報保持部２１０に当該作成したリクエストの情報を格納する。例えば、代理リクエスト生成部２１８は、リクエストの情報として、proxy-ip=10.0.0.10,  proxy-port=54355,  server-IP=20.0.0.10,  server-port=80,  URL=http://www.sample.com/withparam.html  追加情報なしを格納する。
【０１２２】
（３）代理リクエストへの送信〜応答までの処理について説明する。
【０１２３】
サーバ３００は、プロキシサーバ２００に対して、コンテンツを含むHTTPレスポンスメッセージを送付する。この際、HTTPヘッダ中にキャッシュ禁止の指示の記述、例えばCache-control:  no-cacheの記述が含まれる。
【０１２４】
サーバ側送受信部２０４は、上記HTTPレスポンスを受信すると、キャッシュ対象選択部２１４に当該メッセージを渡す。
【０１２５】
キャッシュ対象選択部２１４は、当該HTTPレスポンスの情報に基づいて、リクエスト情報保持部２１０を検索し、追加情報の有無を示す情報を取得する。例えば、キャッシュ対象選択部２１４は、当該HTTPレスポンスの情報として、proxy-ip=10.0.0.10、  proxy-port=54355,  server-IP=20.0.0.10,  server-port=80に基づいて、リクエスト情報保持部２１０を検索し、追加情報の有無を示す情報を取得する。ここでは、追加情報なしの情報が取得される。
【０１２６】
キャッシュ対象選択部２１４は、取得したHTTPレスポンスに追加情報が含まれるか否かに基づいて、該HTTPレスポンスを保持するか否かを判断する。追加情報が含まれない場合、キャッシュ対象選択部２１４は該HTTPレスポンスを保持すると判断する。また、追加情報が含まれる場合、キャッシュ対象選択部２１４は該HTTPレスポンスを保持しないと判断する。ここでは、キャッシュ対象選択部２１４は、追加情報がないため、HTTPヘッダ中にキャッシュ禁止の指示があるが、キャッシュ更新部２１６に対して該HTTPレスポンスを渡す。
【０１２７】
キャッシュ更新部２１６は、キャッシュ対象選択部２１４からHTTPレスポンスを取得すると、該HTTPレスポンスに含まれるリクエストURLと、キャッシュ禁止のフラグと、有効期限と、HTTPレスポンスを共有キャッシュ保持部２１２に格納する。具体的には、該HTTPレスポンスがキャッシュ禁止の情報を含むコンテンツであることから、共有キャッシュ保持部２１２に、リクエストURLとしてhttp://www.sample.com/withparam.html、キャッシュ禁止のフラグ、有効期限  2007/7/1 10:00:00、及び該HTTPレスポンスを格納する。また、Expiresヘッダに有効期限が明記されていない場合には、有効期間がプロキシサーバ２００により決定されるようにしてもよい。例えば、プロキシサーバ２００は、キャッシュ作成後３日後など有効期間を、既存のアルゴリズムで決定する。また、キャッシュ更新部２１６は、HTTPレスポンスをクライアント送受信部２０２に渡す。
【０１２８】
次に、本実施例に係るプロキシサーバ２００におけるHTTPリクエストメッセージに対する処理について、図１０を参照して説明する。
【０１２９】
本実施例に係るプロキシサーバ２００におけるHTTPリクエストメッセージに対する処理におけるステップＳ１００２からステップＳ１０２４の処理は、図８を参照して説明したステップＳ８０２からステップＳ８２４の処理と同様である。
【０１３０】
ステップＳ１００２において、HTTPリクエストを受信していない場合（ステップＳ１００２：ＮＯ）、例えば、HTTPレスポンスを受信した場合、プロキシサーバ２００は、該HTTPレスポンスにキャッシュ利用禁止の指定が含まれているか否かを判断する（ステップＳ１０２２）。具体的には、キャッシュ対象選択部２１４は、該HTTPレスポンスのヘッダに、キャッシュ利用禁止の指示が含まれるか否かを判断することにより、キャッシュ禁止か否かを判断する。
【０１３１】
キャッシュ利用禁止である場合（ステップＳ１０２２：ＹＥＳ）、キャッシュ対象判断部２１４は、リクエスト情報保持部２１０より該HTTPレスポンスに対応するリクエスト情報を読み出す（ステップ１０２４）。そして、キャッシュ対象選択部２１４は、該リクエスト情報に追加情報が含まれるかを判断する（ステップＳ１０２６）。
【０１３２】
該リクエスト情報に追加情報が含まれない場合（ステップＳ１０２６：ＮＯ）及びステップＳ１０２２においてキャッシュ利用禁止でない場合（ステップＳ１０２２：ＮＯ）、キャッシュ対象選択部２１４は、キャッシュ更新部２１６に、該リクエスト情報に対応するコンテンツを入力する。キャッシュ更新部２１６は、共有キャッシュ保持部２１２に、該コンテンツを格納する（ステップ１０２８）。そして、キャッシュ更新部２１６は、該コンテンツが代理リクエスト生成部２１８により受け取ったHTTPリクエストに対するHTTPレスポンスであるかを判断する（ステップＳ１０３０）。代理リクエスト生成部２１８により受け取ったHTTPリクエストに対するHTTPレスポンスであると判断された場合（ステップＳ１０３０：ＹＥＳ）、終了する。一方、代理リクエスト生成部２１８により受け取ったHTTPリクエストに対するHTTPレスポンスであると判断されない場合（ステップＳ１０３０：ＮＯ）、キャッシュ更新部２１６はクライアント側へHTTPリプライを転送する（ステップＳ１０３６）。
【０１３３】
また、該リクエスト情報に追加情報が含まれる場合（ステップＳ１０２６：ＹＥＳ）、キャッシュ対象選択部２１４は、代理リクエスト生成部２１８に、リクエスト情報保持部２１０により得たURLの取得依頼を渡す。代理リクエスト生成部２１８は、受け取った取得依頼にしたがって、該URLへ追加情報を削除したHTTPリクエストを作成し、サーバ側送受信部２０４へ渡す。また、リクエスト情報保持部２１０に該リクエストの情報を格納する（ステップＳ１０３２）。サーバ３００にHTTPリクエストが送信される（ステップＳ１０３４）。そして、ステップＳ１０２２に遷移する。
【０１３４】
本実施例によれば、リクエストに追加情報があるコンテンツについて、追加情報を削除したリクエストに対するコンテンツをキャッシュに格納でき、キャッシュ利用可能な範囲を広げることができる。
（第３の実施例）
上述した実施例において、コンテンツの差し替えを行うようにした場合、キャッシュ禁止であるコンテンツの差し替えまでの待ち時間は長くなる。このため、プロキシサーバ２００とサーバ３００との間のトラヒックが混雑していない時間帯など、キャッシュの差し替えを行うよりもサーバ３００の応答を待った方がよい場合がある。
【０１３５】
そこで、本実施例に係るプロキシサーバ２００は、サーバ３００との間の通信の応答時間を監視し通信遅延時間を計測する。そして、プロキシサーバ２００は、該通信遅延時間の計測結果に基づいて、キャッシュの応答もしくはサーバ３００へのリクエスト転送の判断を行う。
【０１３６】
なお、計測結果は、通過トラフィック全体の平均値や中間値などの統計値であってもよい。また、計測結果は、サーバ３００毎に集計した統計値でもよい。サーバ３００毎に集計した場合は、キャッシュの応答もしくはサーバ３００へのリクエスト転送の判断もサーバ毎に行う必要がある。
【０１３７】
本実施例に係るプロキシサーバ２００は、図１１に示すように、図２を参照して説明したプロキシサーバに通信状況計測部２２０を有するようにしたものである。
【０１３８】
なお、本実施例では、一例として、サイト毎の平均応答時間を保持する場合について説明するが、サイト毎の平均応答時間の代わりに複数のサイトで１つの平均応答時間を保持するようにしてもよい。例えば、全サイトで１つの平均応答時間を保持するようにしてもよい。
【０１３９】
通信状況計測部２２０は、サーバ側送受信部２０４からサーバ３００に対してHTTPリクエストが送信される際のIPアドレス、TCPポート番号、タイムスタンプを時刻情報として取得し、送信時刻を記録する。
【０１４０】
また、通信状況計測部２２０は、サーバ側送受信部２０４がサーバ３００からHTTPリプライを受信した際のIPアドレス、TCPポート番号、タイムスタンプを時刻情報として取得し、受信時刻を記録する。この場合、通信状況計測部２２０に保持される通信状況情報の構造例は、図１２のような構成となる。通信状況計測部２２０の各エントリは、プロキシサーバ２００のＩＰアドレスが格納されるフィールドと、プロキシサーバ２００のポート番号が格納されるフィールドと、サーバ３００のＩＰアドレスが格納されるフィールドと、サーバ３００のポート番号が格納されるフィールドと、送信タイムスタンプが格納されるフィールドと、受信タイムスタンプが格納されるフィールドとを含む。
【０１４１】
通信状況計測部２２０に保持された送信タイムスタンプ及び受信タイムスタンプより、サーバ単位の平均応答時刻を保持する。この場合、通信状況計測部２２０に保持されるサーバ単位の平均応答時刻の構造例は、図１３のような構成となる。通信状況計測部２２０の各エントリは、サーバ３００のＩＰアドレスが格納されるフィールドと、平均応答間隔が格納されるフィールドとを含む。
【０１４２】
また、本実施例に係るキャッシュ利用判断部２０６は、上述した第１の実施例に係るキャッシュ利用判断部の機能に加えて、以下の機能を有する。キャッシュ利用判断部２０６は、共有キャッシュ保持部２１２に保持されたHTTPリクエストに該当するコンテンツがキャッシュ禁止フラグが付与されたキャッシュデータの場合、通信状況計測部２２０より送信先サーバの平均応答間隔を取得する。そして、キャッシュ利用判断部２０６は、該送信先サーバの平均応答間隔が遅延時間として許容される許容時間以上の遅延時間の場合のみ差し替え指示部２０８にキャッシュデータをHTTPレスポンスとして渡し、該許容時間未満の場合はサーバ側送受信部２０４にHTTPリクエストを渡す。例えば、遅延時間として許容される許容時間は１秒程度であるようにしてもよい。
【０１４３】
次に、本実施例に係るプロキシサーバ２００の動作について、（１）プロキシサーバ２００からHTTPリクエスト及びHTTPリプライを送信及び受信する場合の平均応答間隔の計測手順、（２）平均応答間隔が許容時間以上のサイトに対して、キャッシュ禁止対象のコンテンツに対するHTTPリクエストを受信した場合の手順について説明する。
【０１４４】
（１）平均応答間隔の計測について説明する。
【０１４５】
本実施例においては、一例として、第１の実施例における手順（１）及び（２）のHTTPリクエスト、HTTPリプライを送受信する場合について説明する。
【０１４６】
サーバ側送受信部２０４は、HTTPリクエストをサーバ３００に対して送信する際に、送信時刻の情報を通信状況計測部２２０に渡す。通信状況計測部２２０は、サーバ側送受信部２０４により渡された送信時刻の情報を記録する。例えば、送信時刻の情報として、プロキシサーバ２００のＩＰアドレスと、プロキシサーバ２００のポート番号と、サーバ３００のＩＰアドレスと、サーバ３００のポート番号と、送信タイムスタンプとが記録される。具体的には、例えば、proxy-ip=10.0.0.10,  proxy-port=54352,  server-IP=20.0.0.10,  server-port=80,  timestamp=31961438が記録される。
【０１４７】
サーバ側送受信部２０４がHTTPリプライをサーバ３００から受信すると、受信時刻の情報を通信状況計測部２２０に渡す。通信状況計測部２２０は、サーバ側送受信部２０４により渡された受信時刻の情報を記録する。例えば、受信時刻の情報として、プロキシサーバ２００のＩＰアドレスと、プロキシサーバ２００のポート番号と、サーバ３００のＩＰアドレスと、サーバ３００のポート番号と、受信タイムスタンプとが記録される。具体的には、例えば、proxy-ip=10.0.0.10,  proxy-port=54352,  server-IP=20.0.0.10,  server-port=80,  timestamp=31961438が記録される。
【０１４８】
通信状況計測部２２０は、受信時刻内のTCPコネクションの識別子（proxy-ip=10.0.0.10,  proxy-port=54352,  server-IP=20.0.0.10,  server-port=80）より、送信時刻情報を取得し、受信時刻情報と合わせて記録を行う。そして、通信状況計測部２２０は、送信時刻情報及び受信時刻情報に基づいて、サーバ３００(20.0.0.10)に対する平均応答時刻を計算し記憶する。
【０１４９】
本実施例では、この平均応答時刻の計算結果が許容時間未満、例えば１秒未満（100 ms）になった場合について説明する。
【０１５０】
（２）HTTPリクエストが受信された場合について説明する。
【０１５１】
クライアント装置１００１上のブラウザは、HTTPリクエストを送信する。例えば、クライアント装置１００１は、宛先URLとして、http://www.sample.com/、Cookieなし、POST/GETパラメータなしのHTTPリクエストを送信する。プロキシサーバ２００のクライアント側送受信部２０２は、該HTTPリクエストを受信し、キャッシュ利用判断部２０６に該HTTPリクエストを渡す。
【０１５２】
キャッシュ利用判断部２０６は、HTTPリクエストに含まれる宛先URLに該当するキャッシュデータがないか共有キャッシュ保持部２１２を検索する。例えば、キャッシュ利用判断部２０６は、宛先URLとしてのhttp://www.sample.com/のキャッシュデータがないか共有キャッシュ保持部２１２を検索する。
【０１５３】
キャッシュ利用判断部２０６は、URL  http://www.sample.com/のキャッシュデータがないか共有キャッシュ保持部２１２を検索し、キャッシュ禁止のフラグ、有効期限  2007/7/1 10:00:00、及び該HTTPレスポンスを含むエントリを取得する。
【０１５４】
キャッシュ利用判断部２０６は、キャッシュ禁止フラグが付与されているため、サーバ３００(20.0.0.10)の平均応答時間を通信状況計測部２２０より取得し、１秒未満(100ms)であるため、当該HTTPリクエストをサーバ側送受信部２０４に渡す。
【０１５５】
次に、本実施例に係るプロキシサーバ２００におけるHTTPリクエストメッセージに対する処理について、図１４を参照して説明する。
【０１５６】
プロキシサーバ２００は、クライアント装置１００ｎからHTTPリクエストを受信したか否かを判断する。具体的には、クライアント側送受信部２０２は、クライアント装置１００ｎからHTTPリクエストを受信したか否かを判断する。
【０１５７】
HTTPリクエストを受信した場合（ステップＳ１４０２：ＹＥＳ）、プロキシサーバ２００は、該HTTPリクエストにキャッシュ利用禁止の指定が含まれているか否かを判断する（ステップＳ１４０４）。具体的には、キャッシュ利用判断部２１２は、該HTTPリクエストのヘッダに、キャッシュ利用禁止の指示が含まれるか否かを判断することにより、キャッシュ禁止か否かを判断する。
【０１５８】
キャッシュ利用禁止でない場合（ステップＳ１４０４：ＮＯ）、キャッシュ利用判断部２０６は、共有キャッシュ保持部２１２を検索する（ステップＳ１４０６）。
【０１５９】
キャッシュ利用判断部２０６は、共有キャッシュ保持部２１２に、該HTTPリクエストに対応するコンテンツが格納されているか否かを判断する（ステップＳ１４０８）。
【０１６０】
共有キャッシュ保持部２１２に、該HTTPリクエストに対応するコンテンツが格納されている場合（ステップＳ１４０８：ＹＥＳ）、キャッシュ利用判断部２０６は、該コンテンツの有効期限が切れているかを判断する（ステップＳ１４１０）。
【０１６１】
該コンテンツの有効期限が切れていない場合（ステップＳ１４１０：ＮＯ）、キャッシュ利用判断部２０６は、該コンテンツにキャッシュ禁止フラグがあるかを判断する（ステップＳ１４１２）。
【０１６２】
該コンテンツにキャッシュ禁止フラグがない場合（ステップＳ１４１２：ＮＯ）、キャッシュ利用判断部２０６は、該コンテンツをクライアント側送受信部２０２に渡し、クライアント側送受信部２０２は、クライアント装置にHTTPリプライを転送する（ステップＳ１４１８）。
【０１６３】
一方、ステップＳ１４１０において該コンテンツの有効期限が切れている場合（ステップＳ１４１０：ＹＥＳ）及び該コンテンツにキャッシュ禁止フラグがある場合（ステップＳ１４１２：ＹＥＳ）、キャッシュ利用判断部２０６は、平均応答時間が許容時間、例えば１秒以上であるかを判断する（ステップＳ１４１４）。平均応答時間が許容時間以上であると判断した場合（ステップＳ１４１４：ＹＥＳ）、差し替え指示部２０８は、該コンテンツにスクリプトの埋め込みを行う（ステップＳ１４１６）。そして、ステップＳ１４１８に遷移し、差し替え指示部２０８は、該コンテンツをクライアント側送受信部２０２に渡し、クライアント側送受信部２０２は、クライアント装置にHTTPリプライを転送する（ステップＳ１４１８）。
【０１６４】
また、ステップＳ１４０４において、キャッシュ利用禁止である場合（ステップＳ１４０４：ＹＥＳ）、ステップＳ１４０８において、共有キャッシュ保持部２１２に、該HTTPリクエストに対応するコンテンツが格納されていない場合（ステップＳ１４０８：ＮＯ）及びステップ１４１４において、平均応答時間が許容時間未満であると判断した場合（ステップＳ１４１４：ＮＯ）、キャッシュ利用判断部２０６は、リクエスト情報保持部２１０に、リクエスト情報を記録する（ステップＳ１４２０）。そして、キャッシュ利用判断部２０６は、HTTPリクエストをサーバ側送受信部２０４に渡す。サーバ側送受信部２０４は、通信状況計測部２２０に送信タイムスタンプを記録する（ステップＳ１４２２）。そして、サーバ側送受信部２０４は、キャッシュ利用判断部２０６から取得したHTTPリクエストをサーバ３００に転送する（ステップＳ１４２４）。
【０１６５】
ステップＳ１４０２において、HTTPリクエストを受信していない場合（ステップＳ１４０２：ＮＯ）、例えば、HTTPレスポンスを受信した場合、サーバ側送受信部２０４は、通信状況計測部２２０に受信タイムスタンプを記録する（ステップＳ１４２６）。通信状況計測部２２０は、平均応答時間を算出し、記録する（ステップＳ１４２８）。
【０１６６】
プロキシサーバ２００は、該HTTPレスポンスにキャッシュ利用禁止の指定が含まれているか否かを判断する（ステップＳ１４３０）。具体的には、キャッシュ対象選択部２１４は、該HTTPレスポンスのヘッダに、キャッシュ利用禁止の指示が含まれるか否かを判断することにより、キャッシュ禁止か否かを判断する。
【０１６７】
キャッシュ利用禁止である場合（ステップＳ１４３０：ＹＥＳ）、キャッシュ対象判断部２１４は、リクエスト情報保持部２１０より該HTTPレスポンスに対応するリクエスト情報を読み出す（ステップ１４３２）。そして、キャッシュ対象選択部２１４は、該リクエスト情報に追加情報が含まれるかを判断する（ステップＳ１４３４）。
【０１６８】
該リクエスト情報に追加情報が含まれない場合（ステップＳ１４３４：ＮＯ）及びステップＳ１４３０においてキャッシュ利用禁止でない場合（ステップＳ１４３０：ＮＯ）、キャッシュ対象選択部２１４は、キャッシュ更新部２１６に、該リクエスト情報に対応するコンテンツを入力する。キャッシュ更新部２１６は、共有キャッシュ保持部２１２に、該コンテンツを格納する（ステップ１４３６）。そして、キャッシュ更新部２１６は、HTTPレスポンスをクライアント側送受信部２０２に渡す。
【０１６９】
一方、ステップＳ１４３４において、該リクエスト情報に追加情報が含まれている場合（ステップＳ１４３４：ＹＥＳ）、キャッシュ対象選択部２１４は、HTTPレスポンスをクライアント側送受信部２０２に渡す。
【０１７０】
クライアント側送受信部２０２は、キャッシュ更新部２１６又はキャッシュ対象選択部２１４により獲得したHTTPリスポンスをHTTPリプライとして、クライアント装置に転送する（ステップＳ１４３８）。
【０１７１】
本実施例によれば、一定以上の遅延が発生している場合のみキャッシュの仮表示・差し替えを行うことが可能となり、低遅延の時間帯における差し替えによる遅延発生を防ぐことができる。また、混雑している時間帯もしくは混雑しているサーバのみキャッシュの差し替えを行うことができる。
（第４の実施例）
上述した第１の実施例におけるコンテンツの差し替え機能はプロキシサーバ２００上にクライアント装置１００ｎ共有にキャッシュに保持する共有キャッシュを対象にしている。本実施例に係るプロキシサーバ２００は、HTTPリクエストがある場合にユーザ固有のキャッシュを導入する。このようにすることで、セキュリティの問題を回避する。
【０１７２】
プロキシサーバ２００は、クライアント装置１００ｎごとにコンテンツをキャッシュに保持する個別キャッシュ保持部を有する。HTTPリクエストに追加情報が付与されていた場合のリプライメッセージについて、個別キャッシュ保持部にキャッシュを追加し、リクエスト受信時に個別キャッシュ保持部に該当するキャッシュがあれば差し替え指示部にレスポンスとして該キャッシュを渡す。
【０１７３】
なお、プロキシサーバ上の機能をクライアント装置内部のブラウザに持たせることで、個別キャッシュに対する機能をクライアント側で実現することも可能である。
【０１７４】
本実施例に係るプロキシサーバ２００は、図２を参照して説明したプロキシサーバに個別キャッシュ保持部２２２を有するようにしたものである。
【０１７５】
個別キャッシュ保持部２２２は、サーバ側から応答されたコンテンツを保持する。個別キャッシュ保持部２２２は、キャッシュデータ（サーバからのコンテンツ）に加えて、クライアント装置のIPアドレス、コンテンツのURL、キャッシュの有効期限、キャッシュ禁止フラグの有無などを保持する。本実施例では、応答時のHTTPヘッダも含めて保存する場合について説明する。具体的には、個別キャッシュ保持部２２２に保持される応答コンテンツに関する情報の構造例は、図１６のような構成となる。個別キャッシュ保持部２２２の各エントリは、クライアント装置１００ｎのＩＰアドレス(client-ip)が格納されるフィールドと、URLが格納されるフィールドと、キャッシュ禁止が格納されるフィールドと、有効期限が格納されるフィールドと、コンテンツが格納されるフィールドとを含む。
【０１７６】
本実施例に係るキャッシュ対象選択部２１４は、上述した第１の実施例において、共有キャッシュ保持部２１２へのキャッシュ対象外であるコンテンツの場合は、受信したHTTPレスポンスを個別キャッシュ対象であるものとしてキャッシュ更新部２１６に渡す。ここで、キャッシュ対象外であるコンテンツとは、HTTPリクエストに追加情報ありの情報が含まれるコンテンツである。
【０１７７】
本実施例に係るキャッシュ更新部２１６は、上述した第１の実施例の機能に加えて、個別キャッシュ対象のHTTPレスポンスについて、送信先のクライアント装置のIPアドレス、コンテンツ、有効期限、キャッシュ禁止指示の有無をキャッシュデータとして個別キャッシュ保持部２２２に記録する。
【０１７８】
本実施例に係るキャッシュ利用判断部２０６は、上述した第１の実施例の機能に加えて、個別キャッシュ保持部２２２を検索し、該当するキャッシュが見つかった場合は、共有キャッシュ保持部２１２を検索した結果、該当するキャッシュが見つかった場合と同様の動作を行う。具体的には、キャッシュ利用判断部２０６は、コンテンツが格納されているが該コンテンツの有効期限が切れていた場合又はキャッシュ禁止フラグが付与されていた場合は当該キャッシュデータを差し換え指示部２０８に渡す。また、キャッシュ利用判断部２０６は、コンテンツが格納されており、有効期限内でかつキャッシュ禁止ではないコンテンツは、当該キャッシュデータをHTTPレスポンスとしてクライアント側送受信部２０２に渡す。
【０１７９】
共有キャッシュ保持部２１２及び個別キャッシュ保持部２２２にコンテンツが格納されていない場合に、追加情報が付与されたHTTPリクエストを受信した場合の動作は、上述した第２の実施例の（１）の処理と同様である。
【０１８０】
ここでは、上述した第２の実施例の（２）の処理において、HTTPレスポンスを受信した場合の動作について説明する。なお、クライアント装置のIPアドレスは30.0.0.10とする。
【０１８１】
サーバ３００はクライアント装置１００ｎに対して、コンテンツを含むHTTPレスポンスメッセージを送信する。この際、HTTPヘッダ中にキャッシュ禁止指示、例えばCache-control: no-cacheの記述が含まれるものとする。
【０１８２】
サーバ側送受信部２０４が上記HTTPレスポンスを受信し、キャッシュ対象選択部２１４に当該メッセージを渡す。
【０１８３】
キャッシュ対象選択部２１４は、受け取ったHTTPレスポンスに追加情報が含まれるか否かに基づいて、該HTTPレスポンスを個別キャッシュ保持部２２２に保持するか共有キャッシュ保持部２１２に保持するかを判断する。追加情報が含まれない場合、キャッシュ対象選択部２１４は該HTTPレスポンスを共有キャッシュ保持部２１２に保持すると判断する。また、追加情報が含まれる場合、キャッシュ対象選択部２１４は該HTTPレスポンスを個別キャッシュ保持部２２２に保持すると判断する。
【０１８４】
ここでは、キャッシュ対象選択部２１４は、HTTPレスポンスに追加情報が含まれるため、個別キャッシュ保持部２２２への格納対象として当該HTTPレスポンスをキャッシュ更新部２１６に渡す。ここでは、HTTPレスポンスの情報としては、proxy-ip=10.0.0.10,  proxy-port=54354,  server-IP=20.0.0.10,  server-port=80である。
【０１８５】
キャッシュ更新部２１６は、個別キャッシュ保持部２２２に対して、クライアントIP、リクエストURL、キャッシュ禁止のフラグ、有効期限、及び該HTTPレスポンスを格納する。例えば、キャッシュ更新部２１６は、クライアントIPとして30.0.0.10、リクエストURLとしてhttp://www.sample.com/withparam.html、有効期限として2007/7/1  10:00:00を格納する。
【０１８６】
また、キャッシュ更新部２１６は該HTTPレスポンスをクライアント送受信部２０２に渡す。
【０１８７】
クライアント送受信部２２２は該HTTPレスポンスを、HTTPリクエストを送信したクライアント装置に対して送信する。
【０１８８】
クライアント装置のブラウザは該HTTPレスポンスのコンテンツを表示する。
【０１８９】
さらに、同一コンテンツに対して、クライアント装置１００１からリクエストがあった場合について説明する。
【０１９０】
クライアント装置１００１上のブラウザは、HTTPリクエストを送信する。例えば、クライアント装置１００１は、宛先URLとして、http://www.sample.com/ withparam.html、Cookieあり（Cookie:  sessionid=eix0y1kx）、POST/GETパラメータなしのHTTPリクエストを送信する。プロキシサーバ２００のクライアント側送受信部２０２は、該HTTPリクエストを受信し、キャッシュ利用判断部２０６に該HTTPリクエストを渡す。
【０１９１】
キャッシュ利用判断部２０６は、クライアント装置のIPアドレス、HTTPリクエストに含まれる宛先URLに該当するキャッシュデータがないか共有キャッシュ保持部２１２及び個別キャッシュ保持部２２２を検索する。例えば、キャッシュ利用判断部２０６は、クライアント装置のIPアドレスとしての（30.0.0.10）、宛先URLとしてのhttp://www.sample.com/ withparam.htmlのキャッシュデータがないか共有キャッシュ保持部２１２及び個別キャッシュ保持部２２２を検索する。
【０１９２】
ここでは、キャッシュ利用判断部２０６は、個別キャッシュ保持部２２２のエントリからキャッシュ禁止のフラグ、有効期限  2007/7/1  10:00:00、及び該HTTPレスポンスを含むエントリを取得する。
【０１９３】
キャッシュ利用判断部２０６は、キャッシュ禁止フラグが付与されているため、該HTTPレスポンスを差し替え指示部２０８に渡す。
【０１９４】
差し替え指示部２０８は受け取ったHTTPレスポンスに対して、コンテンツの取得と差し替えプログラムを埋め込む。そして、差し替え指示部２０８は差し替えプログラムが埋め込まれたHTTPレスポンスをクライアント側送受信部２０２に渡す。
【０１９５】
クライアント送受信部２０２は差し替え指示部２０８により受け取ったHTTPレスポンスを、リクエストを送信したクライアント装置１００１に対して送信する。
【０１９６】
クライアント装置１００１のブラウザは受信したHTTPレスポンスのコンテンツを表示する。
【０１９７】
次に、本実施例に係るプロキシサーバ２００におけるHTTPリクエストメッセージに対する処理について、図１７を参照して説明する。
【０１９８】
プロキシサーバ２００は、クライアント装置１００ｎからHTTPリクエストを受信したか否かを判断する。具体的には、クライアント側送受信部２０２は、クライアント装置１００ｎからHTTPリクエストを受信したか否かを判断する。
【０１９９】
HTTPリクエストを受信した場合（ステップＳ１７０２：ＹＥＳ）、プロキシサーバ２００は、該HTTPリクエストにキャッシュ利用禁止の指定が含まれているか否かを判断する（ステップＳ１７０４）。具体的には、キャッシュ利用判断部２１２は、該HTTPリクエストのヘッダに、キャッシュ利用禁止の指示が含まれるか否かを判断することにより、キャッシュ禁止か否かを判断する。
【０２００】
キャッシュ利用禁止でない場合（ステップＳ１７０４：ＮＯ）、キャッシュ利用判断部２０６は、共有キャッシュ保持部２１２及び個別キャッシュ保持部２２２を検索する（ステップＳ１７０６）。
【０２０１】
キャッシュ利用判定部２０６は、個別キャッシュ保持部２２２に、該HTTPリクエストに対応するコンテンツが保持されているかを判断する（ステップＳ１７０８）。
【０２０２】
個別キャッシュ保持部２２２に保持されている場合（ステップＳ１７０８：ＹＥＳ）、キャッシュ利用判断部２０６は、共有キャッシュ保持部２１２に、該HTTPリクエストに対応するコンテンツが格納されているか否かを判断する（ステップＳ１７１０）。
【０２０３】
個別キャッシュ保持部２２２に、該HTTPリクエストに対応するコンテンツが保持されていない場合（ステップＳ１７０８：ＮＯ）及び共有キャッシュ保持部２１２に、該HTTPリクエストに対応するコンテンツが格納されている場合（ステップＳ１７１０：ＹＥＳ）、キャッシュ利用判断部２０６は、該コンテンツの有効期限が切れているかを判断する（ステップＳ１７１２）。
【０２０４】
該コンテンツの有効期限が切れていない場合（ステップＳ１７１０：ＮＯ）、キャッシュ利用判断部２０６は、該コンテンツにキャッシュ禁止フラグがあるかを判断する（ステップＳ１７１４）。
【０２０５】
該コンテンツにキャッシュ禁止フラグがない場合（ステップＳ１７１４：ＮＯ）、キャッシュ利用判断部２０６は、該コンテンツをクライアント側送受信部２０２に渡し、クライアント側送受信部２０２は、クライアント装置にHTTPリプライを転送する（ステップＳ１７１８）。
【０２０６】
一方、ステップＳ１７１２において該コンテンツの有効期限が切れている場合（ステップＳ１７１２：ＹＥＳ）及び該コンテンツにキャッシュ禁止フラグがある場合（ステップＳ１７１４：ＹＥＳ）、差し替え指示部２０８は、該コンテンツにスクリプトの埋め込みを行う（ステップＳ１７１６）。そして、ステップＳ１７１８に遷移し、差し替え指示部２０８は、該コンテンツをクライアント側送受信部２０２に渡し、クライアント側送受信部２０２は、HTTPリクエストを送信したクライアント装置にHTTPリプライを転送する（ステップＳ１７１８）。
【０２０７】
また、ステップＳ１７０４において、キャッシュ利用禁止である場合（ステップＳ１７０４：ＹＥＳ）及びステップＳ１７１０において、共有キャッシュ保持部２１２に、該HTTPリクエストに対応するコンテンツが格納されていない場合（ステップＳ１７１０：ＮＯ）、キャッシュ利用判断部２０６は、リクエスト情報保持部２１０に、リクエスト情報を記録する（ステップＳ１７２０）。そして、キャッシュ利用判断部２０６は、HTTPリクエストをサーバ側送受信部２０４に渡す。サーバ側送受信部２０４は、キャッシュ利用判断部２０６から取得したHTTPリクエストをサーバ３００に転送する（ステップＳ１７２２）。
【０２０８】
ステップＳ１７０２において、HTTPリクエストを受信していない場合（ステップＳ１７０２：ＮＯ）、例えば、HTTPレスポンスを受信した場合の動作（ステップＳ１７２４−ステップＳ１７３２）は、図８を参照して説明したステップＳ８２２−ステップＳ８３０の動作と同様である。
【０２０９】
本実施例によれば、ユーザごとに内容が変わるコンテンツも含めてコンテンツの仮表示・差し替えが可能となる。
（第５の実施例）
上述した第１の実施例に係るプロキシサーバ２００における差し替え方法は、ブラウザ側の変更は不要である。しかし、ブラウザ側では、プログラムを埋め込めるコンテンツ（HTMLファイル等）に限定され、画像ファイル等のコンテンツに適用できない。
【０２１０】
そこで、本実施例に係るプロキシサーバ２００は、差し替え指示をレスポンスメッセージに追加する。そして、本実施例に係るクライアント装置１００ｎは、コンテンツ取得用のリクエストを送信する。クライアント装置１００ｎは、表示中のコンテンツを新しいコンテンツと差し替える。すなわち、クライアント装置１００ｎは、レスポンスメッセージに差し替え指示が含まれる場合に、コンテンツ取得用のリクエストを送信する。差し替えプログラムは、該リクエストに対するレスポンスに含まれるコンテンツを表示する。
【０２１１】
差し替えの指示方法は、例えばHTTPレスポンスヘッダ中に特定のCookieを埋め込む等のやり方を用いるようにしてもよい。
【０２１２】
本実施例に係るプロキシサーバ２００は、図１８に示すように、図２を参照して説明したプロキシサーバと同様である。
【０２１３】
本実施例に係る差し換え指示部２０８は、キャッシュ利用判断部２０６からHTTPレスポンスを受け取ると、当該レスポンスメッセージのHTTPヘッダ中にコンテンツの取得及び差し換え処理を依頼するための追加情報、例えばCookieを埋め込んで、クライアント側送受信部２０２に該レスポンスを渡す。
【０２１４】
また、本実施例に係るクライアント装置１００ｎのブラウザ内にプラグインとして以下の機能を搭載する。
【０２１５】
本実施例に係るクライアント装置１００ｎは、コンテンツ取得手段としてのコンテンツ取得プログラムを有する。コンテンツ取得プログラムは、クライアント装置１００ｎが受信するHTTPレスポンスメッセージを監視し、該HTTPレスポンスメッセージに差し替え依頼用の追加情報、例えばCookieが含まれていた場合、受信したHTTPレスポンスのコンテンツのブラウザ表示と同時にプロキシサーバ２００にHTTPリクエストを送信する。なお、このHTTPリクエストにはキャッシュを利用しない指示、例えば、Cache-control: no-cacheを付与する。
【０２１６】
本実施例に係るクライアント装置１００ｎは、差し替え手段としての差し替えプログラムを有する。差し替えプログラムは、コンテンツ取得プログラムにより送られたHTTPリクエストの応答メッセージを受信すると、ブラウザに現在表示中のコンテンツを差し替えて表示する。
【０２１７】
ブラウザプログラム、コンテンツ取得プログラム及び差し替えプログラムは、ＣＰＵにより読み込まれ、該ＣＰＵは、読み込んだプログラムをＲＡＭあるいは記憶装置に書き込み、このプログラムにしたがって処理を実行する。また、プログラムを、通信網５０を介してダウンロードするようにしてもよい。
【０２１８】
次に、本実施例に係るプロキシサーバ２００の動作について説明する。本実施例では、上述した第１の実施例の手順（３）、差し替え指示部の動作について説明する。
【０２１９】
差し替え指示部２０８は、受け取ったHTTPレスポンスに対して、差し替え指示を示す追加情報、例えばCookieを追加する。具体的には、HTTPヘッダ中にSet-cookie:usecache=1;のような記述を追加することにより、差し替えの指示を行う。
【０２２０】
差し替え指示部２０８は、該HTTPレスポンスをクライアント側送受信部２０２に渡す。
【０２２１】
クライアント送受信部２０２は、該HTTPレスポンスをクライアント装置１００ｎに対して送信する。
【０２２２】
クライアント装置１００ｎのブラウザは、受信したHTTPレスポンスのコンテンツを表示する。
【０２２３】
クライアント装置１００ｎのコンテンツ取得プログラムは、HTTPレスポンスに差し替え依頼用のCookieが付与されているため、キャッシュを利用しない指示（Cache-control: no-cache）を付与したhttp://www.sample.com/宛のHTTPリクエストを再度送信する。
【０２２４】
該リクエストに対するプロキシサーバ２００の動作及びレスポンスを受信した場合のクライアント装置の動作は、上述した第１の実施例の手順（４）と同様である。
【０２２５】
次に、本実施例に係るプロキシサーバ２００及びクライアント装置１００ｎにおけるHTTPリクエストメッセージに対する処理について、図１９及び図２０を参照して説明する。
【０２２６】
本実施例に係るプロキシサーバ２００におけるHTTPメッセージに対する処理ステップＳ１９０２−ステップＳ１９３０は、図８を参照して説明したステップＳ８０２−ステップＳ８３０と、ステップＳ１９１４における処理が異なる。ステップＳ１９１４では、差し替え指示部２０８は、差し替え指示のクッキーの埋め込みを行う。
【０２２７】
本実施例に係るクライアント装置１００ｎにおけるコンテンツ取得依頼処理について、図２０を参照して説明する。
【０２２８】
クライアント装置１００ｎは、HTTPレスポンスメッセージを受信すると、該HTTPレスポンスメッセージに差し替え依頼用の追加情報、例えばCookieが含まれていた場合、受信したHTTPレスポンスのコンテンツのブラウザ表示と同時にプロキシサーバ２００にコンテンツ取得用のリクエストを送信する（ステップＳ２００２）。
【０２２９】
本実施例に係るクライアント装置１００ｎにおけるレスポンス受信処理について、図２１を参照して説明する。
【０２３０】
コンテンツ取得プログラム１０４は、HTTPレスポンスに差し替え指示が含まれるかを判断する（ステップＳ２１０２）。
【０２３１】
差し替え指示が含まれる場合（ステップＳ２１０２：ＹＥＳ）、ブラウザプログラム１０２は、受信コンテンツの仮表示を行う（ステップＳ２１０４）。そして、コンテンツ取得プログラム１０４は、HTTPリクエストの送信を行う（ステップＳ２１０６）。このHTTPリクエストには、キャッシュ禁止のフラグが含まれる。
【０２３２】
一方、差し替え指示が含まれない場合（ステップＳ２１０２：ＮＯ）、ブラウザプログラム１０２は、受信コンテンツの仮表示中であるかを判断する（ステップＳ２１０８）。
【０２３３】
受信コンテンツの仮表示中である場合（ステップＳ２１０８：ＹＥＳ）、差し替えプログラム１０６は、受信コンテンツの差し替えを行う（ステップＳ２１１０）。一方、受信コンテンツの仮表示中でない場合（ステップＳ２１０８：ＮＯ）、ブラウザプログラム１０２は、受信コンテンツの表示を行う（ステップＳ２１１２）。
【０２３４】
本実施例によれば、プログラムを埋め込めないコンテンツに対しても、コンテンツの仮表示・差し替えが可能となり、コンテンツ表示までの時間を短縮することができるようになる。
（付記１）
クライアント装置とサーバとの間でコンテンツを中継するコンテンツ中継装置であって、
前記サーバから送信されたコンテンツを保持するキャッシュ保持手段と、
前記クライアント装置により送信されたコンテンツのリクエストに対応するコンテンツが前記キャッシュ保持手段に保持されているかを判断し、該キャッシュ保持手段に保持されたデータをレスポンスとして前記クライアント装置に送信するか否かを判断するキャッシュ利用判断手段と、
前記キャッシュ利用判断手段により、前記リクエストに対応するコンテンツが前記キャッシュ保持手段に保持されていないと判断された場合に、前記リクエストに追加情報が含まれるか否かを示す情報を格納するリクエスト情報保持手段と、
前記リクエスト情報保持手段に格納された追加情報が含まれるか否かを示す情報に基づいて、前記リクエストに対して前記サーバから送信されたレスポンスに対応するリクエストに追加情報が含まれるか否かを判断するキャッシュ対象選択手段と、
前記キャッシュ対象選択手段により、前記リスポンスに対応するリクエストに追加情報が含まれないと判断された場合に、該サーバから送信されたレスポンスを前記キャッシュ保持手段に格納するキャッシュ更新手段と
を有することを特徴とするコンテンツ中継装置。
（付記２）
付記１に記載のコンテンツ中継装置において：
前記キャッシュ利用判断手段は、前記クライアント装置により送信されたコンテンツのリクエストに対応するコンテンツが前記キャッシュ保持手段に保持されている場合に、該コンテンツに含まれるキャッシュ禁止の有無及び／又は有効期限に基づいて、該キャッシュ保持手段に保持されたデータをレスポンスとして前記クライアント装置に送信するか否かを判断し、
該コンテンツがキャッシュ禁止及び／又は有効期限切れである場合に、該コンテンツに前記クライアント装置に表示させるコンテンツを差し替えるためのプログラムを埋め込む差し替え指示手段
を有することを特徴とするコンテンツ中継装置。
（付記３）
付記１に記載のコンテンツ中継装置において、
前記追加情報には、ユーザＩＤ及び／又はセッションＩＤが含まれることを特徴とするコンテンツ中継装置。
（付記４）
付記１に記載のコンテンツ中継装置において、
前記キャッシュ対象選択手段により、前記サーバから送信されたレスポンスに対応するリクエストに追加情報が含まれると判断された場合に、該追加情報が含まれないリクエストを、前記サーバに送信する代理リクエスト生成手段
を有することを特徴とするコンテンツ中継装置。
（付記５）
付記１に記載のコンテンツ中継装置において、
自中継装置と前記サーバとの間の応答時間に基づいて、通信遅延時間を計測する通信時間計測手段
を有し、
前記キャッシュ利用判断手段は、前記通信遅延時間に基づいて、前記キャッシュ保持手段に保持されたデータをレスポンスとして前記クライアント装置に送信するか否かを判断することを特徴とするコンテンツ中継装置。
（付記６）
付記５に記載のコンテンツ中継装置において、
前記通信遅延時間は、自中継装置を通過するトラヒック全体の通信遅延時間又はリクエスト先毎の通信遅延時間であることを特徴とするコンテンツ中継装置。
（付記７）
付記１に記載のコンテンツ中継装置において、
前記サーバから送信されたコンテンツを、該コンテンツのリクエストを送信したクライアント装置毎に保持する個別キャッシュ保持手段と
を有し、
前記キャッシュ更新手段は、前記キャッシュ対象選択手段により、前記リクエストに対する応答に対応するリクエストに追加情報が含まれると判断された場合に、該レスポンスを前記個別キャッシュ保持手段に格納することを特徴とするコンテンツ中継装置。
（付記８）
クライアント装置とサーバとの間でコンテンツを中継するコンテンツ中継装置を有するコンテンツ中継システムであって、
前記中継装置は、
前記サーバから送信されたコンテンツを保持するキャッシュ保持手段と、
前記クライアントにより送信されたコンテンツのリクエストに対応するコンテンツが前記キャッシュ保持手段に保持されているかを判断し、該キャッシュ保持手段に保持されたデータをレスポンスとして前記クライアント装置に送信するか否かを判断するキャッシュ利用判断手段と、
前記キャッシュ利用判断手段により、前記リクエストに対応するコンテンツが前記キャッシュ保持手段に保持されていないと判断された場合に、前記リクエストに追加情報が含まれるか否かを示す情報を格納するリクエスト情報保持手段と、
前記リクエスト情報保持手段に格納された追加情報が含まれるか否かを示す情報に基づいて、前記リクエストに対して前記サーバから送信されたレスポンスに対応するリクエストに追加情報が含まれるか否かを判断するキャッシュ対象選択手段と、
前記キャッシュ対象選択手段により、前記リスポンスに対応するリクエストに追加情報が含まれないと判断された場合に、該サーバから送信されたレスポンスを前記キャッシュ保持手段に格納するキャッシュ更新手段と
を有し、
前記キャッシュ利用判断手段は、前記クライアント装置により送信されたコンテンツのリクエストに対応するコンテンツが前記キャッシュ保持手段に保持されている場合に、該コンテンツに含まれるキャッシュ禁止の有無及び／又は有効期限に基づいて、該キャッシュ保持手段に保持されたデータをレスポンスとして前記クライアント装置に送信するか否かを判断し、
該コンテンツがキャッシュ禁止及び／又は有効期限切れである場合に、該コンテンツに前記クライアント装置に表示させるコンテンツを差し替えるためのプログラムを埋め込み、
前記クライアント装置は、
受信したコンテンツに埋め込まれたコンテンツを取得するリクエストを送信し、表示中のコンテンツを前記リクエストに対するレスポンスに差し替えるコンテンツ取得手段
を有することを特徴とするコンテンツ中継システム。
（付記９）
クライアント装置とサーバとの間でコンテンツを中継するコンテンツ中継装置におけるコンテンツ中継方法であって、
前記クライアント装置により送信されたコンテンツのリクエストに対応するコンテンツが前記サーバから送信されたコンテンツを保持するキャッシュ保持手段に保持されているかを判断する保持判断ステップと、
前記保持判断ステップにおいて、前記キャッシュ保持手段に保持されていると判断された場合に、前記キャッシュ保持手段に保持されたデータをレスポンスとして前記クライアント装置に送信するか否かを判断するキャッシュ利用判断ステップと、
前記キャッシュ利用判断ステップにおいて、前記リクエストに対応するコンテンツが前記キャッシュ保持手段に保持されていないと判断された場合に、前記リクエストに追加情報が含まれるか否かを示す情報を格納するリクエスト情報保持ステップと、
前記リクエスト情報保持ステップにおいて格納された追加情報が含まれるか否かを示す情報に基づいて、前記リクエストに対して前記サーバから送信されたレスポンスに対応するリクエストに追加情報が含まれるか否かを判断するキャッシュ対象選択ステップと、
前記キャッシュ対象選択ステップにより、前記リスポンスに対応するリクエストに追加情報が含まれないと判断された場合に、該サーバから送信されたレスポンスを前記キャッシュ保持手段に格納するキャッシュ更新ステップと
を有することを特徴とするコンテンツ中継方法。
（付記１０）
コンピュータを、
クライアント装置により送信されたコンテンツのリクエストに対応するコンテンツがサーバから送信されたコンテンツを保持するキャッシュ保持手段に保持されているかを判断し、該キャッシュ保持手段に保持されたデータをレスポンスとして前記クライアント装置に送信するか否かを判断するキャッシュ利用判断手段と、
前記キャッシュ利用判断手段により、前記リクエストに対応するコンテンツが前記キャッシュ保持手段に保持されていないと判断された場合に、前記リクエストに追加情報が含まれるか否かを示す情報を格納するリクエスト情報保持手段と、
前記リクエスト情報保持手段に格納された追加情報が含まれるか否かを示す情報に基づいて、前記リクエストに対して前記サーバから送信されたレスポンスに対応するリクエストに追加情報が含まれるか否かを判断するキャッシュ対象選択手段と、
前記キャッシュ対象選択手段により、前記リスポンスに対応するリクエストに追加情報が含まれないと判断された場合に、該サーバから送信されたレスポンスを前記キャッシュ保持手段に格納するキャッシュ更新手段と
して機能させるためのプログラム。
【図面の簡単な説明】
【０２３５】
【図１】本発明の一実施例に係るコンテンツ中継システムの一例を示す構成図である。
【図２】本発明の一実施例に係るプロキシサーバの一例を示す部分ブロック図である。
【図３】リクエストメッセージの一例を示す説明図である。
【図４】レスポンスメッセージの一例を示す説明図である。
【図５】リクエスト情報保持部により保持されるリクエスト情報の一例を示す説明図である。
【図６】共有キャッシュ保持部により保持される情報の一例を示す説明図である。
【図７】本発明の一実施例に係るコンテンツ中継方法を示すフロー図である。
【図８】本発明の一実施例に係るプロキシサーバの動作を示すフロー図である。
【図９】本発明の一実施例に係るプロキシサーバの一例を示す部分ブロック図である。
【図１０】本発明の一実施例に係るプロキシサーバの動作を示すフロー図である。
【図１１】本発明の一実施例に係るプロキシサーバの一例を示す部分ブロック図である。
【図１２】通信状況計測部により保持される計測データの一例を示す説明図である。
【図１３】通信状況計測部により保持される平均応答時間の一例を示す説明図である。
【図１４】本発明の一実施例に係るプロキシサーバの動作を示すフロー図である。
【図１５】本発明の一実施例に係るプロキシサーバの一例を示す部分ブロック図である。
【図１６】個別キャッシュ保持部により保持される情報の一例を示す説明図である。
【図１７】本発明の一実施例に係るプロキシサーバの動作を示すフロー図である。
【図１８】本発明の一実施例に係るプロキシサーバ及びクライアント装置の一例を示す部分ブロック図である。
【図１９】本発明の一実施例に係るプロキシサーバの動作を示すフロー図である。
【図２０】本発明の一実施例に係るクライアント装置の動作を示すフロー図である。
【図２１】本発明の一実施例に係るクライアント装置の動作を示すフロー図である。
【符号の説明】
【０２３６】
５０  通信網
１００ｎ（１００１、１００２、・・・、１００ｎ）  クライアント装置
１０２  ブラウザプログラム
１０４  コンテンツ取得プログラム
１０６  差し替えプログラム
２００  プロキシサーバ
２０２  クライアント側送受信部
２０４  サーバ側送受信部
２０６  キャッシュ利用判断部
２０８  差し替え指示部
２１０  リクエスト情報保持部
２１２  共有キャッシュ保持部
２１４  キャッシュ対象選択部
２１６  キャッシュ更新部
２１８  代理リクエスト生成部
２２０  通信状況計測部
２２２  個別キャッシュ保持部
３００  サーバ
【図１】
2009140290.tif 000003
【図２】
2009140290.tif 000004
【図３】
2009140290.tif 000005
【図４】
2009140290.tif 000006
【図５】
2009140290.tif 000007
【図６】
2009140290.tif 000008
【図７】
2009140290.tif 000009
【図８】
2009140290.tif 000010
【図９】
2009140290.tif 000011
【図１０】
2009140290.tif 000012
【図１１】
2009140290.tif 000013
【図１２】
2009140290.tif 000014
【図１３】
2009140290.tif 000015
【図１４】
2009140290.tif 000016
【図１５】
2009140290.tif 000017
【図１６】
2009140290.tif 000018
【図１７】
2009140290.tif 000019
【図１８】
2009140290.tif 000020
【図１９】
2009140290.tif 000021
【図２０】
2009140290.tif 000022
【図２１】
2009140290.tif 000023