(57)【要約】【課題】  ウェブシステムなどのサーバクライアントシステムにおいて、クライアントがサーバに問い合わせをすることなく、レスポンスのキャッシュヒット判定を実現することが課題である。【解決手段】  ウェブシステムなどのサーバクライアントシステムにおいて、クライアントが受信したレスポンスが、サーバで生成されたレスポンスか、システム内のキャッシュから返信されたレスポンスかを区別するキャッシュヒット判定方法であり、サーバがレスポンスを生成する際に、レスポンスに対してキャッシュヒット判定用のプログラム及びデータを追加し、クライアントがレスポンスに含まれるプログラムを実行することでキャッシュヒット判定を実現する。【選択図】  図３
2010067016.tif 000002
【特許請求の範囲】
【請求項１】
第1の計算機と、前記第1の計算機にネットワークを介して接続される第２の計算機とを含むコンピュータシステムにおいて提供されるアプリケーションの実行状況の管理方法であって、
前記第１の計算機は、前記第２の計算機からの前記アプリケーションに関するリクエストを受け、
前記リクエストに対応するレスポンスに含まれるウェブページに、ユニークな識別子と、前記識別子をクッキーの名前とするクッキーが存在するかを判断する第1の検査および前記第1の検査後に前記クッキーの削除を前記第２の計算機で実行するプログラムコードとを、前記レスポンスのウェブページに挿入し、
前記レスポンスのヘッダに、前記識別子をクッキーの名前とするクッキーを前記第２の計算機に設定させる命令を挿入し、
前記ウェブページと、前記ヘッダを含むレスポンスを前記第２の計算機に返信することを特徴とする、アプリケーションの実行状況管理方法。
【請求項２】
請求項１に記載の実行状況管理方法であって、第１の計算機は、前記レスポンスに、前記第1の検査の結果を第２の計算機のローカルディスクに記録するプログラムコードを挿入し、前記レスポンスを前記第２の計算機に返信することを特徴とする、アプリケーションの実行状況管理方法。
。
【請求項３】
請求項１に記載の実行状況管理方法であって、第１の計算機は、第２の計算機からのリクエストに対して返信するレスポンスのウェブページを生成もしくは転送する際に挿入するプログラムコードに、前記第1の検査の結果を第２の計算機から第１の計算機に送信するプログラムコードを挿入し、前記レスポンスを前記第２の計算機に返信することを特徴とする、アプリケーションの実行状況管理方法。
【請求項４】
請求項１に記載の実行状況管理方法であって、第１の計算機は、第２の計算機からのリクエストに対して返信するレスポンスのウェブページを生成もしくは転送する際に挿入するプログラムコードに、前記第1の検査において前記クッキーが存在しない結果の場合に前記第２の計算機が前記ウェブページにユニークな識別子を再生成するプログラムコードを挿入し、前記レスポンスを前記第２の計算機に返信することを特徴とする、アプリケーションの実行状況管理方法。
【請求項５】
請求項１に記載の実行状況管理方法であって、第１の計算機は、第２の計算機からのリクエストに対して返信するレスポンスのウェブページを生成もしくは転送する際に挿入するプログラムコードに、前記第1の検査において前記クッキーが存在しない結果の場合に前記第２の計算機が前記ウェブページにユニークな識別子を再生成するプログラムコードを挿入し、前記レスポンスを前記第２の計算機に返信することを特徴とする、アプリケーションの実行状況管理方法。
【請求項６】
請求項２に記載の実行状況管理方法であって、さらに、第１の計算機は、第２の計算機からのリクエストに対して、前記第２の計算機のローカルディスクに記録された前記第1の検査の結果を読み出して、前記第1の検査の結果、前記クッキーが存在しない場合と、存在する場合の比率を表示するプログラムコードが挿入された前記ウェブページを前記第２の計算機に返信することを特徴とする、アプリケーションの実行状況管理方法。
【請求項７】
請求項３に記載の実行状況管理方法であって、さらに、第１の計算機は、第２の計算機から送信された前記第1の検査の結果を第１の計算機のローカルディスクもしくは外部ディスクに記録し、前記記録された第1の検査の結果を読み出して、前記第1の検査の結果、前記クッキーが存在しない場合と、存在する場合の比率を表示するプログラムコードが挿入された前記ウェブページを前記第１の計算機が提供することを特徴とする、アプリケーションの実行状況管理方法。
【請求項８】
請求項１に記載の実行状況管理方法であって、第１の計算機は、第２の計算機からのリクエストに対して返信するレスポンスのウェブページを生成もしくは転送する際に挿入するプログラムコードに、前記第1の検査において前記クッキーが存在しない結果の場合に前記第２の計算機が、前記ウェブページの全部もしくは一部を前記第１の計算機から再読み込みするリクエストを前記第１の計算機に対して送信するプログラムコードを挿入し、前記レスポンスを前記第２の計算機に返信することを特徴とする、アプリケーションの実行状況管理方法。
【請求項９】
請求項２に記載の実行状況管理方法であって、第１の計算機は、第２の計算機からのリクエストに対して返信するレスポンスのウェブページを生成もしくは転送する際に挿入するプログラムコードに、前記第２の計算機のローカルディスクに記録されている第1の検査の結果に、前記識別子と一致する結果が記録されているか第２の検査を行い、前記第1の検査の結果と、第２の検査の結果と、前記識別子とを一緒に前記第２の計算機のローカルディスクに記録するプログラムコードを挿入し、前記レスポンスを前記第２の計算機に返信することを特徴とする、アプリケーションの実行状況管理方法。
【請求項１０】
請求項１に記載の実行状況管理方法であって、第１の計算機は、第２の計算機からのリクエストに対して返信するレスポンスのウェブページを生成もしくは転送する際に挿入するプログラムコードに、第1の検査後に行う前記クッキーの削除に加えて、他のウェブページの識別子を含むクッキーに対して、一定時間経過後に削除されるフラグを設定するプログラムコードを挿入し、前記レスポンスを前記第２の計算機に返信することを特徴とする、アプリケーションの実行状況管理方法。
【請求項１１】
第１の計算機と第２の計算機、およびそれらを接続するネットワークから構成されるキャッシュを含むコンピュータシステムで、前記第１の計算機は、前記第２の計算機からのリクエストに対して返信するレスポンスを生成もしくは転送する際に、前記第１の計算機がレスポンスを生成する際にレスポンス毎に与える前記レスポンスにユニークな識別子と、前記第１の計算機がレスポンスを生成する際に前記第２の計算機に設定させるレスポンスの属性値に前記識別子を含む値が設定されているかを判断する第1検査および第1の検査後に前記レスポンスの属性値の削除を前記第２の計算機で実行するプログラムコードを、前記レスポンスに挿入し、さらに前記第１の計算機は、レスポンスを生成する際に前記レスポンスのヘッダに、前記第２の計算機に前記識別子をレスポンスの属性値として設定する命令を挿入して、前記レスポンスを前記第２の計算機に返信することを特徴とする、キャッシュヒット判定方法。
【請求項１２】
第１の計算機と第２の計算機とに接続される中継装置であって、
前記第１の計算機と前記第２の計算機の間に設けられ、
前記第２の計算機からのリクエストに対して前記第１の計算機から返信されるレスポンスのボディに含まれるウェブページにユニークな識別子と、前記識別子をクッキーの名前とするクッキーが存在するかを判断する第1検査および第1の検査後に前記クッキーの削除を前記第２の計算機で実行するプログラムコードを、前記レスポンスのウェブページに挿入するレスポンスボディ挿入部と、
前記レスポンスのヘッダに、前記第２の計算機に前記識別子をクッキーの名前とするとクッキーを設定する命令を挿入するレスポンスヘッダ挿入部と、、
前記レスポンスを前記第２の計算機に送信するレスポンス送信部と、を有することを特徴とする、中継装置。
【請求項１３】
クライアント計算機にネットワークを介して接続されるサーバ計算機であって、
前記クライアント計算機からの前記サーバ計算機で実行されるアプリケーションに関するリクエストを受信するリクエスト受信部と、
前記リクエストに対してレスポンス毎に与えるユニークな識別子と、前記クライアント計算機に設定させるレスポンスの属性値に前記識別子を含む値が設定されているかを判断する第1検査および第1の検査後に前記レスポンスの属性値の削除を前記クライアント計算機で実行させるプログラムコードを、前記レスポンスに挿入するレスポンス挿入部と、
前記レスポンスのヘッダに、前記クライアント計算機に前記識別子をレスポンスの属性値として設定する命令を挿入するレスポンスヘッダ挿入部と、
前記リクエストに対する前記レスポンスを前記第２の計算機に送信するレスポンス処理部と、有することを特徴とする、サーバ計算機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムにおいて、アプリケーションの実行状況を管理するシステムに関する。特に、アプリケーションに対してリクエストを行う計算機と、アプリケーションを実行する計算機と、の間にキャッシュを経由するシステムにおけるレスポンスの生成元を管理するシステムに関する。
【背景技術】
【０００２】
ウェブアプリケーションは、スクリプトコードを利用したリッチクライアント技術などの技術進歩と、クライアント装置にウェブブラウザがインストールされていれば簡単に実行できる簡便さから、ビジネス用途を含め、さまざまな分野で利用されるようになってきた。用途によっては、高い可用性や、早い応答速度、使いやすさに対する強いニーズがある。特に、応答速度に関しては、ウェブアプリケーションの体感性能に大きく影響するため、様々な工夫によって応答速度の向上が図られてきた。
【０００３】
様々な工夫の中で、効果が高く、広く利用されている方法として、キャッシュを利用した高速化方法が挙げられる。ウェブアプリケーションの実行基盤であるウェブシステムにおけるキャッシュとは、ウェブサーバや、プロキシサーバなどのネットワーク上、ウェブブラウザなどに実装されるウェブページの一時保存機構である。キャッシュは、ウェブページへのリクエストに対して、ウェブサーバがレスポンスを生成して返信する代わりに、キャッシュからレスポンスを返信する。キャッシュは、通常クライアント装置とサーバ装置の間に設けられるので、キャッシュからレスポンスが返信されると、通信にかかる時間と、レスポンスの生成にかかる時間が短縮され、応答速度が向上できる。
【０００４】
キャッシュの利用可否の判断は、ウェブアプリケーションや、ウェブページ毎に異なるが、利用可否の判断を行うために、ウェブページのアクセス毎にキャッシュにヒットしたかを検出することが必要である。  キャッシュヒットの検出方法としては、サーバ装置にウェブページのタイムスタンプを問い合わせて、読み込んだウェブページのタイムスタンプと比較して更新されている場合にキャッシュヒットと判定する方法（特許文献１）や、キャッシュされない画像データをウェブページに挿入し、サーバ装置において、ウェブページと画像データへのアクセス履歴から、画像データのみにアクセスされた場合にキャッシュヒットと判定する方法（特許文献２）などが知られている。
【０００５】
【特許文献１】特開２００３−８５０８２ 公報
【特許文献２】特表２００４−５０７８１６ 公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
最近では、JavaScriptや非同期通信技術などを使い、ウェブページの遷移を伴わずにウェブページを更新したり、操作に応じて表示内容を変化させたりするようなリッチなウェブページが増えてきている。このようなリッチなウェブページでは、ウェブページへのアクセス毎に唯一な（ユニークな）識別子（ＩＤ）を与えることで、ダイナミックに変化するアプリケーションの正しい動作を実現したり、一貫性のある正しい動作や操作の履歴を記録したりしている。
【０００７】
しかし、ウェブシステムにおけるキャッシュにウェブページが保持され(キャッシュヒットした）場合に、これらの動作が正しく行われない場合がある。そのため、キャッシュを無効化したり、アクセス毎にサーバ装置からレスポンスを得られるようにリクエストを出したりするなど、キャッシュによる応答速度の向上を図ることができない。
そこで、キャッシュの利用可否を判断し、できるだけキャッシュを利用して応答速度の向上を図ることが求められている。キャッシュの利用可否の判断は、ウェブアプリケーションや、ウェブページ毎に異なるが、利用可否の判断を行うために、ウェブページのアクセス毎にキャッシュにヒットしたかを検出することが必要である。例えば、ウェブページのアクセス毎に、そのウェブページ上で行われた操作の記録を行う場合、同一のウェブページに対する別のアクセスを認識して、アクセス毎に別のユニークなＩＤを与えて記録していくことが望まれる。  しかし、この方法では、キャッシュヒットした場合、ユニークなＩＤが得られない。
【課題を解決するための手段】
【０００８】
上記課題の少なくとも一を解決するために、本発明の一態様では、第1の計算機と、第２の計算機とを含むコンピュータシステムにおいて提供されるアプリケーションの実行状況の管理方法であって、第１の計算機は、第２の計算機からのアプリケーションに関するリクエストを受け、リクエストに対応するレスポンスに含まれるウェブページに、ユニークな識別子と、識別子をクッキーの名前とするクッキーが存在するかを判断する第1の検査および第1の検査後にクッキーの削除を第２の計算機で実行するプログラムコードとを、レスポンスのウェブページに挿入し、レスポンスのヘッダに、識別子をクッキーの名前とするクッキーを第２の計算機に設定させる命令を挿入し、ウェブページと、ヘッダを含むレスポンスを第２の計算機に返信することを特徴とする。
【発明の効果】
【０００９】
本発明の一態様によれば、第二の計算機で、第1の実行結果におけるレスポンスなのか、キャッシュからのレスポンスなのかを判別することができる。
【実施例１】
【００１０】
本実施例によるウェブアプリケーションのキャッシュヒット判定方法を図１から図７を使って説明する。
【００１１】
図１は、本実施例が対象とするウェブアプリケーションを実行するシステムのハードウェア構成と、ソフトウェア構成の例を示すシステム構成図である。
【００１２】
ハードウェアは、クライアント装置１０１、ウェブサーバ装置１２１、プロキシサーバ装置１５１と、これらの装置を接続するネットワーク１６１から構成される。クライアント装置１０１、ウェブサーバ装置１２１、プロキシサーバ装置１５１は、プロセッサ（１０３、１２３、１４３）、メモリ（１１３、１３５、１５５）、入出力装置（１０２、１２２、１４２）、ローカルディスク（１０４、１２４、１４４）、ネットワークインタフェース（１０６、１２６、１４６）をもち、相互に接続されている。
【００１３】
入出力装置１０２には、たとえば、キーボードやマウス、モニタである。入力装置は、プログラムの実行や停止の指示を行い、出力装置は、プログラムの実行結果を表示するモニタである。。プロセッサ１０３は、メモリ１１３からプログラムを読み込んで処理を実行する。ローカルディスク１０４は、プログラムの実行結果をプロセッサ１０３から受信して保存したり、ネットワークインタフェース１０６を介して外部から受信したデータを保存したりする。ローカルディスク１０４には、判定結果保存領域１０５が設けられ、スクリプトエンジンプログラム１０９がプロセッサ１０３に読み込まれて実行された結果がこの領域に保存される。ネットワークインタフェース１０６は、クライアント装置１０１の外部の装置とネットワーク１６１を介してデータの送受信を行う。
【００１４】
クライアント装置１０１のメモリ１１３には、ウェブブラウザプログラム１０８、スクリプトエンジンプログラム１０９、キャッシュプログラム１１０が格納される。、、プロセッサ１０３は、これらのプログラムを実行する。メモリ１１３の一部の領域は、キャッシュデータ領域１１１、クッキーデータ領域１１２に割り当てられている。なお、クライアント装置１０１は、メモリ１１３とは別の領域に、キャッシュデータ領域１１１やクッキーデータ領域１１２を有していてもよい。
【００１５】
ウェブブラウザプログラム１０８は、ウェブページをリクエストしたり、リクエストしたウェブページのレスポンスを受信し、解釈して表示画面を生成するプログラムである。スクリプトエンジンプログラム１０９は、ウェブページのレスポンスに含まれるスクリプトコードを解釈してスクリプトコードに書かれている処理をプロセッサ１０３で実行するプログラムである。キャッシュプログラム１１０は、クライアント装置１０１がネットワーク１６１から受信したウェブページのレスポンスをキャッシュデータ領域１１１に保存し、ウェブブラウザプログラム１０８がリクエストしたウェブページのレスポンスがキャッシュデータ領域１１１に存在するかを判定し、存在する場合にキャッシュデータ領域１１１から読み出してウェブブラウザプログラムに受け渡すプログラムである。クッキーデータ領域１１２は、クッキーデータと呼ばれるデータを保存する領域で、クッキーデータはウェブブラウザプログラム１０８やスクリプトエンジンプログラム１０９から受け取って保存したり、逆にクッキーデータを読み出して受け渡す。
【００１６】
ウェブサーバ装置１２１のメモリ１３５には、ウェブサーバプログラム１２７、フィルタプログラム１２８、キャッシュプログラム１３１、識別子生成プログラム１３２が格納されている。フィルタプログラム１２８には、レスポンスボディ挿入部１２９とレスポンスヘッダ挿入部１３０が含まれる。また、メモリ１３５の一部の領域がキャッシュデータ領域１３３、スクリプトコード領域１３４に割り当てられている。プロセッサ１２３は、これらのプログラムを読み込み実行する。
【００１７】
ウェブサーバプログラム１２７は、リクエストに応じてウェブページのレスポンスを生成して返信するプログラムである。フィルタプログラム１２８はウェブページのリクエストやレスポンスに対して、内容の追加や修正を行うプログラムである。フィルタプログラム１２８のうち、レスポンスボディ挿入部１２９は、ボディとヘッダから構成されるレスポンスのボディ部分に対してプログラムコードやデータを挿入する。フィルタプログラム１２８のうち、レスポンスヘッダ挿入部１３０では、レスポンスのヘッダ部分に対してプログラムコードやデータを挿入する。
【００１８】
キャッシュプログラム１３１は、ウェブサーバプログラム１２７が生成したウェブページのレスポンスをキャッシュデータ領域１３３に保存したり、リクエストされたウェブページのレスポンスがキャッシュデータ領域１３３に存在するかを判定し、存在する場合にキャッシュデータ領域１３３から読み出して返信するプログラムである。
【００１９】
識別子生成プログラム１３２は、識別子生成の要求を受けてユニークな値を生成するプログラムである。ユニークな値の生成方法は、プロセッサ１２３の動作クロック毎にカウントアップするプログラムカウンタを読み出して利用する方法や、システム時刻を利用する方法、がある。ほかには、それらの方法とネットワークインタフェースのＭＡＣアドレスを組み合わせた方法などが挙げられるが、これに限定するわけではない。なお、ＭＡＣアドレスとは、ネットワークインタフェースに固有の値である。識別子生成の要求は、例えば、ウェブサーバ装置１２１がリクエストを受信して、ウェブサーバプログラム１２７がプロセッサ１２３で実行されてレスポンスが生成される際に、ウェブサーバプログラム１２７から要求されたり、外部から識別子生成の要求を受けたりする。スクリプトコード領域１３４は、スクリプトコードと呼ばれるプログラムを保存する領域で、スクリプトコードはフィルタプログラム１２８でレスポンスに挿入される。
【００２０】
入出力装置１２６、プロセッサ１２３、ローカルディスク１２４、ネットワークインタフェース１２６は、クライアント装置１０１にある同名の装置と同じ機能を持つ。ローカルディスク１２４に設けられている判定結果保存領域１２５には、ネットワークインタフェース１２２を介して外部から送信されてきたデータが保存される。
【００２１】
プロキシサーバ装置１４１のメモリ１５５には、プロキシサーバプログラム１４７、フィルタプログラム１４８、キャッシュプログラム１５１、識別子生成プログラム１５２が格納されている。フィルタプログラム１４８には、レスポンスボディ挿入部１４９とレスポンスヘッダ挿入部１５０が含まれる。また、メモリ１５５の一部の領域がキャッシュデータ領域１５３、スクリプトコード領域１５４に割り当てられている。これらのプログラムは、プロセッサ１４３に読み込まれて実行される。
【００２２】
プロキシサーバプログラム１４７は、リクエストをクライアント装置１０１からウェブサーバ装置１２１に転送し、レスポンスをウェブサーバ装置１２１からクライアント装置１０１に転送するプログラムである。フィルタプログラム１４８、レスポンスボディ挿入部１４９、レスポンスヘッダ挿入部１５０は、サーバ装置１２１にある同名のプログラムと同じ処理を行うのを持つ。
【００２３】
キャッシュプログラム１５１は、プロキシ装置１４１がネットワーク１６１から受信したウェブページのレスポンスをキャッシュデータ領域１５３に保存したり、プロキシ装置１４１の外部からネットワークインタフェース１４２を介して受信したリクエストが要求するウェブページのレスポンスがキャッシュデータ領域１５３に存在するかを検査し、存在する場合にキャッシュデータ領域１５３から読み出して返信するプログラムである。
【００２４】
識別子生成プログラム１５２は、識別子生成の要求を受けてユニークな値を生成するプログラムである。スクリプトコード領域１５４は、スクリプトコードと呼ばれるプログラムを保存する領域で、スクリプトコードはフィルタプログラム１４８でレスポンスに挿入される。
【００２５】
入出力装置１４６、プロセッサ１４３、ローカルディスク１４４、ネットワークインタフェース１４６は、サーバ装置１２１にある同名の装置と同じ機能を持つ。ローカルディスク１４４に設けられている判定結果保存領域１４５もサーバ装置１２１にある判定結果保存領域１２５と同様である。
【００２６】
図２は、サーバ装置１２１とプロキシ装置１４１にあるスクリプトコード領域（１３４、１５４）に保存されているスクリプトコード（プログラム）の例である。これらのスクリプトコード２０１〜２１０は、ウェブサーバ装置１３５とプロキシ装置１４１のプロセッサ（１２３，１４３）で実行されるフィルタプログラム（１２８、１４８）によってレスポンスに挿入され、そのレスポンスがクライアント装置１０１に送信され、プロセッサ１０３で実行されるスクリプトエンジンプログラム１０９がこれらのスクリプトコードを解釈して処理を行う。
【００２７】
図２に示したスクリプトコード２０１〜２１０の内、実施例１において利用するスクリプトコードは、キャッシュヒット判定用スクリプトコード２０１および判定結果記録用スクリプトコード２０２の２つである。他のスクリプトコード２０２〜２１０は、他の変形例で利用するスクリプトコードであり、本実施例ではスクリプトコード領域（１３４、１５４）に保存されていなくてよい。
【００２８】
本実施例における、ウェブアプリケーションの処理フローを図３、図４により説明する。
【００２９】
図４は、本実施例ウェブシステムにおけるリクエストとレスポンスの構成を示す図である。図４に示すように、リクエスト４０１は、少なくともウェブページの存在する場所を指定するＵＲＩ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒｓ）４０１０と、クライアント装置１０１で設定可能なデータ領域（クッキー）４０２０とを含む。  レスポンスは、図４に示すように、レスポンスＡ４１１〜レスポンスＣ４３１の形式がある。
【００３０】
各レスポンスは、レスポンスヘッダ（４１２、４２２、４３２）とレスポンスボディ（４１３、４２３、４３３）とを有する。レスポンスＡ４１１〜レスポンスＣ４３１の違いは、レスポンスヘッダとレスポンスボディに含まれる内容の違いである。レスポンスヘッダに含まれる内容は、レスポンスの状態を示すステータスコード４５２０、レスポンスボディに含まれるコンテンツの種類を示すコンテンツタイプ４５３０、クライアント装置１０１とウェブサーバ装置１２１間でデータの受け渡しを行うのに利用できるクッキー４５４０、クッキーをクライアント装置に設定するセットクッキー命令４５５０などである。一方、レスポンスボディに含まれる内容は、クライアント装置１０１のウェブブラウザモジュール３０８で解釈され表示画面などを作るＨＴＭＬドキュメント４５６０、スクリプトエンジンモジュール３０９で解釈され処理が実行されるスクリプトコード４５７０などである。また、識別子生成プログラムの実行により生成された、ウェブページを一意に特定する識別子４５８０も含まれる。スクリプトコード４５７０の例は、図２に示されるスクリプトコードでさる。ＨＴＭＬドキュメントは、画像データなどの場合もある。
【００３１】
図３は、ウェブアプリケーションの処理フローの例を示す。クライアント装置１０１、ウェブサーバ装置１２１、プロキシサーバ装置１４１がネットワーク１６１で接続されたシステムで、クライアント装置１０１からウェブページのリクエストを送信し、ウェブサーバ装置１２１がリクエストされたウェブページのレスポンスを生成して返信し、クライアント装置１０１でウェブページの表示や、スクリプトコードの実行が行われるまでの一連の処理を順に説明する。なお、図３以降の図においては、プログラムがプロセッサ上で実行されている状態をモジュールと呼び、例えば、ウェブブラウザプログラムがプロセッサ上で実行されている場合、ウェブブラウザモジュールと呼ぶ。  ウェブサーバモジュール３２１で生成されるレスポンスは、レスポンスＡ４１１、レスポンスＢ４２１、レスポンスＣ４３１のいずれの場合もある。  まず最初に、クライアント装置１０１のウェブブラウザモジュール３０８がウェブページのリクエスト３０１をネットワーク１６１を経由して、プロキシサーバ装置１４１に送信する（３０１）。  プロキシサーバ装置１４１では、プロキシサーバモジュール３３１がリクエストを受信し、キャッシュモジュール３３２がキャッシュデータ領域１５４にリクエストに対応するレスポンスが存在するかを検査する（３０２）。
【００３２】
キャッシュデータ領域１５４にレスポンスが存在しなければ、プロキシサーバモジュール３３１はリクエストをウェブサーバ装置１２１に転送する（３０３）。ウェブサーバ装置１２１では、ウェブサーバモジュール３２１がリクエストを解釈し、レスポンスを生成する。
【００３３】
フィルタモジュール３２２は、ウェブサーバモジュール３２１から受け取ったレスポンス（３０４）に対して、レスポンスヘッダとレスポンスボディに、識別子とスクリプトコードを挿入する。識別子は、ウェブサーバモジュール３２１がレスポンスを生成する際に、識別子生成モジュール３２５で生成されるユニークな値で、レスポンスヘッダ挿入モジュール３２３は、この識別子をクッキーの名前とするセットクッキー命令をレスポンスヘッダに挿入する。クッキーとセットクッキー命令については、図５を用いて後で説明する。
【００３４】
フィルタモジュール３２２に含まれるレスポンスボディ挿入モジュール３２４は、識別子生成モジュール３２５で生成された識別子と、スクリプトコード領域１３４から読み込んだスクリプトコードをレスポンスのボディに挿入する。その結果、レスポンスは、図４に示すレスポンスＢ４３２である。レスポンスＢ４３２のレスポンスヘッダには、クッキー及びセットクッキー命令を含む。レスポンスＢ４３２は、プロキシサーバ装置１４１に送られる。
【００３５】
プロキシサーバ装置１４１は、プロキシサーバモジュール３３１でウェブサーバ装置１２１からのレスポンスを受信し、これをクライアント装置１０１に転送する。この際に、キャッシュモジュール３３２が、レスポンスをキャッシュデータ領域１５４に保存する。キャッシュモジュール３３２は、セキュリティ上の問題から、キャッシュデータ領域１５４にレスポンスを保存する場合、レスポンスＢ４２１のレスポンスヘッダに含まれるセットクッキー命令を削除してから保存する。よって、キャッシュデータ領域１５４に保存されるレスポンスは、  図４に示すレスポンスＣ４３１である。レスポンスＣ４３２のレスポンスヘッダには、クッキーを含むが、レスポンスＢ４２１に含まれるようなセットクッキー命令は含まれない。
【００３６】
次に、キャッシュデータ領域１５４にレスポンスＣが存在した場合について説明する。この場合、キャッシュモジュール３３２はキャッシュデータ領域１５４からレスポンスをＣ読み出し、プロキシサーバ装置１４１からクライアント装置１０１に転送する。プロキシサーバモジュール３３１は、リクエストをウェブサーバ装置１２１には送信しない。通常、ウェブサーバ装置１２１でレスポンスを生成する場合に比べて、プロキシサーバ装置１４１のキャッシュデータ領域１５４からレスポンスを読み出す方が、クライアント装置１０１に早くレスポンスを返信することができる。
【００３７】
なお、図３には示していないが、ウェブサーバ装置１２１のキャッシュプログラム１３１、キャッシュデータ領域１３３も、ウェブページのレスポンスを生成する処理のフローにおいて、プロキシサーバ装置１４１のキャッシュモジュール３３２とキャッシュデータ領域１５４が実現する機能と同じ機能をウェブサーバ装置で実現する。つまり、ウェブサーバ装置１２１がリクエストを受信し、レスポンスをキャッシュモジュールから読み出して、プロキシサーバ装置１４１に返信する。この場合、ウェブサーバモジュール３２１でウェブページのレスポンスを生成しなくてもよい。
【００３８】
さらに、図３には示していないが、プロキシサーバ装置１４１のフィルタプログラム１４８、識別子生成プログラム１５２、スクリプトコード領域１５４が、ウェブページのレスポンスをクライアント装置１０１に転送する処理のフローにおいて、ウェブサーバ装置１２１のフィルタモジュール３２２、識別子生成モジュール３２５、スクリプトコード領域１３４が実現する機能と同じ機能をプロキシサーバ装置で実現しても良い。つまり、ウェブサーバ装置１２１からレスポンスを受信し、このレスポンスのヘッダとボディに、識別子やスクリプトコードを挿入したり、セットクッキー命令を挿入したりする。
【００３９】
図５は、ウェブシステムにおけるクッキーおよびセットクッキー命令の動作を示す図である。クッキー５０１は、クッキーの内容を示す。クッキーの内容５０１は、クッキーの名前と、クッキーの値、有効期限の日付などから構成される。
【００４０】
クッキーの内容５０１で構成されるクッキーは、図５に示すように、クライアント装置１０１とウェブサーバ装置１２１の間でデータをやりとりする際に利用される。例えば、ウェブサーバ装置１２１が、クライアント装置１０１に対して、Ａ＝１というデータを記憶させたい場合、ウェブサーバ装置１２１はレスポンスヘッダに、クッキーの名前をＡ、クッキーの値を１に設定するセットクッキー命令を挿入し（５５０）、プロキシサーバ装置を介してクライアント装置１０１に送信する（５６０）。クライアント装置１０１は、レスポンスを受信すると、まずレスポンスヘッダに挿入されているセットクッキー命令を実行し、クライアント装置１０１のクッキーデータ領域１１２に、セットクッキー命令に記載の内容に従ってクッキーの内容を保存する（５０１）。図５に示すようなクッキーの内容５０１である場合は、Ａ＝１がクッキーデータ領域１１２に保存される。
【００４１】
クライアント装置１０１は、クライアント装置１０１のクッキーデータ領域１１２に保存されているクッキーの内容を、同じウェブサーバ装置１２１に別のリクエストを送信する際に、リクエストにクッキーの内容をコピーする（５０２）。先ほどの例では、クライアント装置１０１０は、クッキーの名前がＡ、クッキーの値が１という内容をリクエストに設定し、ウェブサーバ装置に１２１送信する（５０３）。ウェブサーバ装置１２１は、クッキー（Ａ＝１）を含むこのリクエストを受け取ることで、クライアント装置１０１のクッキーデータ領域１１２にＡ＝１が保存されていることを知ることができる。
【００４２】
ウェブサーバ装置１２１が、スクリプトコードをレスポンスボディに挿入されたレスポンスをクライアント装置に送信する（５５１）場合は、クライアント装置１０１が、受信したレスポンスに含まれるスクリプトコードによってクッキーデータ領域１１２に保存されているクッキーの内容を設定、変更、削除することができる（５０５）。
【００４３】
一方、プロキシサーバ装置１４１は、キャッシュデータ領域１５３にレスポンスが保存し（５１１）、そのレスポンスをクライアント装置１０１に返信する（５１２）。この場合、プロキシサーバー１４１は、別のリクエストで、すでに生成され、キャッシュデータ領域１５に保持されているレスポンス５１３を取得し（５０３）クライアント装置１０１に返信する（５１４）ことになる。先に述べたように、セキュリティ上の問題から、レスポンスヘッダに含まれるセットクッキー命令はキャッシュデータ領域１５３に保存される際に削除される（５１１）。よって、ウェブサーバ装置１２１で生成されたレスポンスと、プロキシサーバ装置１４１で生成されたレスポンスでは、形式が異なる場合がある。
【００４４】
以上から、本実施例におけるキャッシュヒット判定方法について、クライアント装置１０１、ウェブサーバ装置１２１、プロキシサーバ装置１４１の処理フローを示して説明する。
【００４５】
図６は、プロキシサーバ装置１４１の処理フローである。まず、プロキシサーバモジュールは、クライアント装置からリクエストを受信する（ステップ６０２）。次にキャッシュモジュールがキャッシュデータ領域１５３にリクエストに対するレスポンスが存在するか検査を行う（ステップ６０３）。検査の結果、レスポンスが存在しない場合、プロキシサーバモジュールはリクエストをウェブサーバ装置に送信する（ステップ６０４）。そして、サーバ装置からレスポンスを受信する（ステップ６０５）。続いて、図５の５１１及び５１２で示すように、キャッシュモジュールがレスポンスヘッダからセットクッキー命令を除いたレスポンスをキャッシュデータ領域に保存する（ステップ６０６）。一方、検査の結果、レスポンスが存在する場合、図５の５１３が示すように、キャッシュモジュールがキャッシュデータ領域からレスポンスを読み出す（ステップ６０７）。最後に、図５の５１４のように、プロキシサーバモジュールがレスポンスをクライアント装置に送信する（ステップ６０８）。
【００４６】
図７は、クライアント装置１０１、ウェブサーバ装置１２１、プロキシサーバ装置１４２を含む、システム全体の処理フローである。ここでは、装置毎に処理フローを説明する。
【００４７】
まず、ウェブサーバ装置１２１では、ウェブサーバモジュールがプロキシサーバ装置からリクエストを受信し、リクエストに対するレスポンスを生成する（ステップ７２２）。また、識別子生成モジュールが、レスポンスの生成に対して識別子を生成する（ステップ７２３）。ステップ７２２とステップ７２３の実行順序は逆でもよく、また同時に実行してもよい。
【００４８】
続いて、フィルタモジュールのレスポンスヘッダ挿入モジュールが、レスポンスヘッダにステップ７２３で生成した識別子を含む値をクッキーの名前として設定するセットクッキー命令を挿入する（ステップ７２４）。さらに、ステップ７２３で生成した識別子を、レスポンスボディ挿入モジュールがレスポンスボディに挿入する（ステップ７２５）。ステップ７２４とステップ７２５の実行順序は逆でもよく、また同時に実行してもよい。ステップ７２２からステップ７２５までの処理をまとめて、以降では処理７３０と呼ぶ。
【００４９】
次に、フィルタモジュールは、スクリプトコード領域１３４から、キャッシュヒット判定用スクリプトコード２０７と、判定結果記録用スクリプトコード２０２を読み出す（ステップ７２６）。両スクリプトコードは、レスポンスボディ挿入モジュールがレスポンスボディに挿入する（ステップ７２７）。この際に、キャッシュヒット判定用スクリプトコード２０７が判定結果記録用スクリプトコード２０２より先に実行されるように、レスポンスボディの中で判定結果記録用スクリプトコード２０２より早く解釈される部分にキャッシュヒット判定用スクリプトコード２０７の挿入を行う。最後にフィルタモジュールはレスポンスをプロキシサーバ装置に送信する（ステップ７２８）。
【００５０】
次にクライアント装置１０１の処理フローを説明する。クライアント装置１０１では、最初にウェブブラウザモジュールがリクエストをプロキシサーバ装置に送信する（ステップ７０２）。そして、プロキシサーバ装置からレスポンスを受信する（ステップ７０３）。続いて、ウェブブラウザモジュールは、受信したレスポンスヘッダにセットクッキー命令があるかを検査する（ステップ７０４）。セットクッキー命令がある場合は、その命令を実行してクッキーデータ領域にクッキーデータを保存する（ステップ７０５）。セットクッキー命令がない場合は、何もしない。ステップ７０２からステップ７０５までの処理をまとめて、以降では処理７１０と呼ぶ。
【００５１】
ウェブブラウザモジュールは、レスポンスボディにスクリプトコードが含まれるか検査を行う（ステップ７０６）。スクリプトコードが含まれる場合、そのスクリプトコードをスクリプトエンジンモジュールで実行する。本実施例では、ウェブサーバ装置のステップ７２６にて、キャッシュヒット判定用スクリプトコードと、判定結果記録用スクリプトコードがレスポンスボディに挿入されており、キャッシュヒット判定用スクリプトコードが先に実行される。
【００５２】
キャッシュヒット判定用スクリプトコードの処理フローは、図７の処理７１１である。処理７１１では、キャッシュヒット判定モジュールは、最初にレスポンスボディから識別子を読み込む（ステップ７０８）。次に、キャッシュヒット判定モジュールは、クライアント装置のクッキーデータ領域に識別子をクッキーの名前に含むクッキーデータが存在するかを検査する（ステップ７０９）。該当するクッキーデータが存在した場合は、ステップ７０５が実行されていた、つまりステップ７０３で受信したレスポンスが、ウェブサーバ装置で生成されたレスポンスであることが分かるので、判定結果はミスヒットとする。一方、該当するクッキーデータが存在しない場合は、ステップ７０４でセットクッキー命令が無いと判定され、検査対象のクッキーデータがクッキーデータ領域に保存されていないことが分かる。つまり、このレスポンスは、サーバ装置で生成されたレスポンスではなく、プロキシサーバ装置のキャッシュデータ領域などから読み出されたことが分かる。つまり、キャッシュヒットした、判定結果はヒットとなる。判定結果が出ると、識別子をクッキーの名前に含むクッキーデータは不要となるので、削除を行う（ステップ７１０）。次に、判定結果記録用モジュールが実行される。このモジュールはキャッシュヒット判定用モジュールの判定結果を、ローカルディスクに保存する（ステップ７１２）なお、保存の際には、判定結果だけでなく、識別子と組にして保存する。以降では、判定結果記録用モジュールの処理全体を処理７１３と呼ぶ。
【００５３】
以上の処理フローによって、クライアント装置は、レスポンスがウェブサーバ装置で生成されたか、キャッシュデータ領域から読み出されたか判定することができ、さらにその結果をローカルディスクに保存しておくことができる。
【００５４】
なお、以上に述べたハードウェア、ソフトウェア構成要素は一部が存在しなくてもよく、接続関係も図１に示した関係に限らない。例えば、クライアント装置１０１やウェブサーバ装置１２１、プロキシサーバ装置１４１は1台に限らず、各装置が備えるプロセッサやローカルディスク、入出力装置、ネットワークインタフェースも1つとは限らない。逆に、例えばプロキシサーバ装置１４１とウェブサーバ装置１２１が同一のハードウェアで実現されている場合など、各装置のハードウェアが、実際には同一のハードウェアで構成されている場合も含む。
【００５５】
また、上記では、プロキシサーバ装置１４１は、キャッシュデータ領域１５３にレスポンスを保存し、クライアント装置１０１がそのレスポンスを受信した場合に、キャッシュヒットを検出できると説明したが、ウェブサーバ装置１２１のキャッシュデータ領域１３３や、クライアント装置１０１のキャッシュデータ領域１１１に保存されたレスポンスの場合にも、同様にキャッシュヒットを検出できる。本実施例では、キャッシュヒットを検出する方法として説明したが、説明した方法を実現する装置としてもよい。
【００５６】
実施例１の変形例１を、図８を用いて説明する。ここでは、実施例１との差分についてのみ示し、実施例１で説明した部分については省略する。
【００５７】
図８は、クライアント装置１０１、ウェブサーバ装置１２１、プロキシサーバ装置１４２を含む、システム全体の処理フローである。ここでは、装置毎に処理フローを説明する。プロキシサーバ装置の処理は実施例１と同じである。
【００５８】
本実施例では、実施例１と異なりスクリプトコード領域（１３４、１５４）に、キャッシュヒット判定用スクリプトコード２０１と、判定結果送信用スクリプトコード２０３が保存されている。また、ウェブサーバ装置１２１のメモリ１３５には、判定結果収集プログラムが格納されており、プロセッサ１２３で実行される。
【００５９】
まず、ウェブサーバ装置１２１の処理フローを説明する。処理７３０では、ウェブサーバ装置は、プロキシサーバ装置からのリクエストに対して、レスポンスと識別子を生成しレスポンスに挿入する。次に、フィルタモジュールが、スクリプトコード領域からキャッシュヒット判定用スクリプトコード２０１と、判定結果送信用スクリプトコード２０３を読み出す（ステップ８２６）。さらに、フィルタモジュールのレスポンスボディ挿入モジュールが、ステップ８２６で読み出したスクリプトコードを、フィルタモジュールは、レスポンスボディに挿入する（ステップ８２７）。最後にフィルタモジュールはレスポンスをプロキシサーバ装置に送信する（ステップ８２８）。さらに、ウェブサーバ装置１２１は、判定結果収集モジュール８３０が、クライアント装置１０１からキャッシュヒット判定結果を受信し（ステップ８３１）、受信した判定結果と識別子の組をローカルディスク１２４の判定結果保存領域１２５に保存する（ステップ８３２）。なお、保存先は入出力装置１２６に接続された外部ディスクでもよい。
【００６０】
次にクライアント装置１０１の処理フローを説明する。クライアント装置１０１では、最初に処理７１０でリクエストの送信とレスポンスの受信を行い、レスポンスB４２１のように、レスポンスヘッダにセットクッキー命令が含まれる場合にクッキーデータ領域にクッキーデータを設定する。続いて、レスポンスボディにスクリプトコードが含まれているかを検査し、スクリプトコードがある場合に処理７１１でキャッシュヒット判定用モジュールが実行され、キャッシュヒットの判定結果がメモリ１３５上に設定される。実施例２では、処理７１１に続いて、レスポンスボディに挿入されている判定結果送信用スクリプトコード２０３がプロセッサ１２３で実行されて処理８１３に示す処理が行われる。この処理は、処理７１１で設定されたキャッシュヒット判定結果を、レスポンスボディに含まれる識別子と組にしてウェブサーバ装置１２１に送信する（ステップ８１２）。
【００６１】
以上の処理フローによって、ウェブサーバ装置は、クライアント装置が受信したレスポンスがウェブサーバ装置で生成されたか、キャッシュデータ領域から読み出されたかの判定結果を知ることができ、さらにその結果をローカルディスクに保存しておくことができる。
【００６２】
なお、判定結果収集モジュール８３０は、レスポンスの生成を行っているウェブサーバ装置１２１で実行されていなくてもよく、プロキシサーバ装置１４１や、別のウェブサーバ装置上で実行されていてもよい。その場合、ステップ８１２の送信先も、判定結果収集モジュール８３０が実行されている装置になる。
【００６３】
本変形例も、実施例１と同様に方法として説明したが、説明した方法を実現する装置としてもよい。また、ハードウェア構成やソフトウェア構成も、実施例１と同様にここで説明した例に限らない。
【００６４】
変形例２を、図９を用いて説明する。ここでは、実施例１との差分についてのみ示し、実施例１で説明した部分については省略する。
【００６５】
図９は、クライアント装置１０１、ウェブサーバ装置１２１、プロキシサーバ装置１４２を含む、システム全体の処理フローである。ここでは、装置毎に処理フローを説明する。
プロキシサーバ装置の処理は実施例１と同じである。本変形例では、実施例１と異なりスクリプトコード領域（１３４、１５４）に、キャッシュヒット判定用スクリプトコード２０１と、識別子再生成用スクリプトコード２０４が保存されている。
【００６６】
まず、ウェブサーバ装置１２１の処理フローを説明する。処理７３０では、プロキシサーバ装置からのリクエストに対してレスポンスと識別子を生成しレスポンスに挿入する。次に、フィルタモジュールがスクリプトコード領域からキャッシュヒット判定用スクリプトコード２０１と、識別子再生成用スクリプトコード２０４を読み出す（ステップ９２６）。さらに、フィルタモジュールのレスポンスボディ挿入モジュールが、ステップ９２６で読み出したスクリプトコードをレスポンスボディに挿入する（ステップ９２７）。最後にフィルタモジュールはレスポンスをプロキシサーバ装置に送信する（ステップ９２８）。
【００６７】
次にクライアント装置１０１の処理フローを説明する。クライアント装置１０１では、最初に処理７１０でリクエストの送信とレスポンスの受信を行い、レスポンスヘッダにセットクッキー命令が含まれる場合にクッキーデータ領域にクッキーデータを設定する。続いて、レスポンスボディにスクリプトコードが含まれているかを検査し、スクリプトコードがある場合に処理７１１でキャッシュヒット判定用モジュールが実行され、キャッシュヒットの判定結果がメモリ１３５上に設定される。
【００６８】
変形例２では、処理７１１に続いて、レスポンスボディに挿入されている識別子再生成用スクリプトコード２０４を、プロセッサ１２３が読み出し実行し、処理９１７に示す処理が行われる。この処理では、プロセッサ１２３は、処理７０９で設定されたキャッシュヒット判定結果がヒットの場合に、レスポンスボディに含まれる識別子を再生成して別の値とする（ステップ９１６）。識別子の再生成の方法は、例えば、クライアント装置１０１のローカルディスク１０４に、この識別子が処理７１１によってキャッシュヒットと判定された回数のカウントを保存しておき、この値とクライアント装置１０１のネットワークインタフェース１０６のＭＡＣアドレスを識別子に加える方法が挙げられるが、この方法に限定するわけではない。
【００６９】
以上の処理フローによって、クライアント装置１０１は、受信したレスポンスがキャッシュデータ領域から読み出された場合に、識別子を、そのレスポンスがウェブサーバ装置１２１で生成されたときの古い値と異なる値にすることができる。これにより、レスポンス毎に異なる識別子が与えられるので、各レスポンスを区別する値として識別子を利用することが可能となる。
【００７０】
本変形例も、実施例１と同様に方法として説明したが、説明した方法を実現する装置としてもよい。また、ハードウェア構成やソフトウェア構成も、実施例１と同様にここで説明した例に限らない。
【００７１】
変形例３を、図１０を用いて説明する。ここでは、実施例１との差分についてのみ示し、実施例１で説明した部分については省略する。図１０は、クライアント装置１０１、ウェブサーバ装置１２１、プロキシサーバ装置１４２を含む、システム全体の処理フローである。
【００７２】
ここでは、装置毎に処理フローを説明する。プロキシサーバ装置の処理は実施例１と同じである。本実施例では、実施例１と異なりスクリプトコード領域（１３４、１５４）に、キャッシュヒット判定用スクリプトコード２０１と、識別子更新用スクリプトコード２０５が保存されている。
【００７３】
まず、ウェブサーバ装置１２１の処理フローを説明する。処理７３０では、プロキシサーバ装置からのリクエストに対してレスポンスと識別子を生成しレスポンスに挿入する。次に、フィルタモジュールがスクリプトコード領域１３４からキャッシュヒット判定用スクリプトコード２０１と、識別子更新用スクリプトコード２０５を読み出す（ステップ１０２６）。さらに、フィルタモジュールのレスポンスボディ挿入モジュールが、ステップ１０２６で読み出したスクリプトコードをレスポンスボディに挿入する（ステップ１０２７）。
【００７４】
最後にフィルタモジュールはレスポンスをプロキシサーバ装置に送信する（ステップ１０２８）。さらに、ウェブサーバ装置１２１では、識別子生成モジュール１０３０にて、クライアント装置１０１から識別子再生成リクエストを受信する（ステップ１０３１）。そしてステップ７２３と同様にして識別子を生成し、クライアント装置１０１に返信する（ステップ１０３２）。
【００７５】
次にクライアント装置１０１の処理フローを説明する。クライアント装置１０１では、最初に処理７１０でリクエストの送信とレスポンスの受信を行い、レスポンスヘッダにセットクッキー命令が含まれる場合にクッキーデータ領域にクッキーデータを設定する。続いて、レスポンスボディにスクリプトコードが含まれているかを検査し、スクリプトコードがある場合に処理７１１でキャッシュヒット判定用モジュールが実行され、キャッシュヒットの判定結果がメモリ１３５上に設定される。
【００７６】
変形例３では、処理７１１に続いて、レスポンスボディに挿入されている識別子更新用スクリプトコード２０５がプロセッサ１２３で実行されて処理１０１８に示す処理が行われる。この処理では、処理７１１で設定されたキャッシュヒット判定結果がヒットの場合に、レスポンスボディに含まれる識別子の更新をウェブサーバ装置１２１に識別子再生成リクエストを送信することで行う（ステップ１０１６）。続いて、ウェブサーバ装置１２１から再生成後の識別子を受信する（ステップ１０１７）。
【００７７】
以上の処理フローによって、クライアント装置１０１は、受信したレスポンスがキャッシュデータ領域から読み出された場合に、識別子を、そのレスポンスがウェブサーバ装置１２１で生成されたときの古いと異なる値にすることができる。これにより、レスポンス毎に異なる識別子が与えられるので、各レスポンスを区別する値として識別子を利用することが可能となる。
【００７８】
なお、識別子生成モジュール１０３０は、レスポンスの生成を行っているウェブサーバ装置１２１で実行されていなくてもよく、プロキシサーバ装置１４１や、別のウェブサーバ装置上で実行されていてもよい。その場合、ステップ１０１６のリクエストの送信先も、識別子生成モジュール１０３０が実行されている装置になる。
本変形例も、実施例１と同様に方法として説明したが、説明した方法を実現する装置としてもよい。また、ハードウェア構成やソフトウェア構成も、実施例１と同様にここで説明した例に限らない。
【００７９】
変形例４を、図１１を用いて説明する。ここでは、実施例１との差分についてのみ示し、実施例１で説明した部分については省略する。図１１は、クライアント装置１０１、ウェブサーバ装置１２１、プロキシサーバ装置１４２を含む、システム全体の処理フローである。
【００８０】
ここでは、装置毎に処理フローを説明する。プロキシサーバ装置は、クライアント装置１０１から再送信リクエストを受けた場合に、図６のステップ６０３の判定結果を無条件に「Ｎｏ（無）」とし、ステップ６０４以下を実行する以外は実施例１と同じ処理を実行する。本変形例では、図２に示すとおり、実施例１と異なりスクリプトコード領域（１３４、１５４）に、キャッシュヒット判定用スクリプトコード２０１と、ページ更新用スクリプトコード２０６が保存されている。
【００８１】
まず、ウェブサーバ装置１２１の処理フローを説明する。処理７３０では、プロキシサーバ装置からのリクエストに対してレスポンスと識別子を生成しレスポンスに挿入する。次に、フィルタモジュールがスクリプトコード領域からキャッシュヒット判定用スクリプトコード２０１と、ページ更新用スクリプトコード２０６を読み出す（ステップ１１２６）。さらに、フィルタモジュールのレスポンスボディ挿入モジュールが、ステップ１１２６で読み出したスクリプトコードをレスポンスボディに挿入する（ステップ１１２７）。最後にフィルタモジュールはレスポンスをプロキシサーバ装置に送信する（ステップ１１２８）。
【００８２】
次にクライアント装置１０１の処理フローを説明する。クライアント装置１０１では、最初に処理７１０でリクエストの送信とレスポンスの受信を行い、レスポンスヘッダにセットクッキー命令が含まれる場合にクッキーデータ領域にクッキーデータを設定する。続いて、レスポンスボディにスクリプトコードが含まれているかを検査し、スクリプトコードがある場合に処理７１１でキャッシュヒット判定用モジュールが実行され、キャッシュヒットの判定結果がメモリ１３５上に設定される。
【００８３】
変形例４では、処理７１１に続いて、レスポンスボディに挿入されているページ更新用スクリプトコード２０６をプロセッサ１２３が実行し、処理１１０６に示す処理が行われる。この処理では、処理７０９で設定されたキャッシュヒット判定結果がヒットの場合に、プロキシサーバ装置１４１にウェブページの全部もしくは一部の再送信リクエストを送信する（ステップ１１０４）。続いて、プロキシサーバ装置１４１からウェブページの全部もしくは一部を受信する（ステップ１１０５）。再送信リクエストにおいて、ページの一部のみの再送信をリクエストする方法は、ウェブページのＨＴＭＬドキュメント内の再送信が必要な部分に特定の印を付けておき、その印を再送信リクエスト内に指定する方法が挙げられるが、これに限定するわけではない。
【００８４】
以上の処理フローによって、クライアント装置１０１は、受信したレスポンスがキャッシュデータ領域から読み出された場合に、そのウェブページの全部もしくは一部を更新することができる。これにより、ウェブページの表示を最新の状態に更新しつつ、ネットワークやサーバ装置への負荷を低減することができる。本変形例も、実施例１と同様に方法として説明したが、説明した方法を実現する装置としてもよい。また、ハードウェア構成やソフトウェア構成も、実施例１と同様にここで説明した例に限らない。
【００８５】
変形例５を、図１２を用いて説明する。ここでは、実施例１との差分についてのみ示し、実施例１で説明した部分については省略する。
【００８６】
図１２は、クライアント装置１０１、ウェブサーバ装置１２１、プロキシサーバ装置１４２を含む、システム全体の処理フローである。ここでは、装置毎に処理フローを説明する。プロキシサーバ装置の処理は実施例１と同じである。
【００８７】
本実施例では、実施例１と異なりスクリプトコード領域（１３４、１５４）に、キャッシュヒット判定用スクリプトコード２０１と、キャッシュ判別用スクリプトコード２０７がスクリプトコード領域１３４に、保存されている。まず、ウェブサーバ装置１２１の処理フローを説明する。処理７３０では、プロキシサーバ装置からのリクエストに対してレスポンスと識別子を生成しレスポンスに挿入する。次に、フィルタモジュールがスクリプトコード領域からキャッシュヒット判定用スクリプトコード２０１と、キャッシュ判別用スクリプトコード２０７を読み出す（ステップ１２２６）。さらに、フィルタモジュールのレスポンスボディ挿入モジュールが、ステップ１２２６で読み出したスクリプトコードをレスポンスボディに挿入する（ステップ１２２７）。最後にフィルタモジュールはレスポンスをプロキシサーバ装置に送信する（ステップ１２２８）。
【００８８】
次にクライアント装置１０１の処理フローを説明する。クライアント装置１０１では、最初に処理７１０でリクエストの送信とレスポンスの受信を行い、レスポンスヘッダにセットクッキー命令が含まれる場合にクッキーデータ領域にクッキーデータを設定する。続いて、レスポンスボディにスクリプトコードが含まれているかを検査し、スクリプトコードがある場合に処理７１１でキャッシュヒット判定用モジュールが実行され、キャッシュヒットの判定結果がメモリ１３５上に設定される。
【００８９】
変形例５では、処理７１１に続いて、レスポンスボディに挿入されているキャッシュ判別用スクリプトコード２０７を、プロセッサ１２３が読み出し、処理１２０６に示す処理が行われる。この処理では、処理７０９で設定されたキャッシュヒット判定結果がヒットの場合に、キャッシュ判別用モジュールは、判定結果保存領域１０５に保存されている記録の中に、レスポンスボディに挿入されている識別子と同じ識別子の記録があるかを検査する（ステップ１２０４）。同じ識別子があった場合には、キャッシュ判別結果をクライアント内キャッシュに設定し、なかった場合にはキャッシュ判別結果を通信経路上キャッシュに設定する。キャッシュ判別結果は、メモリ１１３上に設定される。次に、ローカルディスク１０４の判定結果保存領域１０５に、キャッシュ判別結果と識別子の組を保存する（ステップ１２０５）。クライアント内キャッシュと、通信経路上キャッシュについては、図１５、図１６を用いて、後で説明する。処理１２０６に続いて、処理７１３を行い、キャッシュヒット判定結果と識別子の組を判定結果保存領域１０５に保存する。
【００９０】
以上の処理フローによって、クライアント装置１０１は、受信したレスポンスがキャッシュデータ領域から読み出されたかどうか、さらにそのキャッシュがクライアント内キャッシュか、通信経路上キャッシュであったかの判別が可能となる。すなわち、本変形例により、リクエストに対するレスポンスが、クライアント・サーバ間のネットワークで、どのキャッシュで保持されていたレスポンスなのか特定することができる。本変形例も、実施例１と同様に方法として説明したが、説明した方法を実現する装置としてもよい。また、ハードウェア構成やソフトウェア構成も、実施例１と同様にここで説明した例に限らない。
【００９１】
変形例６を、図１３を用いて説明する。ここでは、実施例１との差分についてのみ示し、実施例１で説明した部分については省略する。図１３は、クライアント装置１０１、ウェブサーバ装置１２１、プロキシサーバ装置１４２を含む、システム全体の処理フローである。
ここでは、装置毎に処理フローを説明する。プロキシサーバ装置の処理は実施例１と同じである。本変形例では、実施例１と異なりスクリプトコード領域（１３４、１５４）に、キャッシュヒット判定用スクリプトコード２０１と、余剰クッキー削除用スクリプトコード２０８が保存されている。
【００９２】
まず、ウェブサーバ装置１２１の処理フローを説明する。処理７３０では、ウェブサーバ装置は、プロキシサーバ装置からのリクエストに対してレスポンスと識別子を生成しレスポンスに挿入する。次に、フィルタモジュールがスクリプトコード領域１３４からキャッシュヒット判定用スクリプトコード２０１と、余剰クッキー削除用スクリプトコード２０８を読み出す（ステップ１３２６）。さらに、フィルタモジュールのレスポンスボディ挿入モジュールが、ステップ１３２６で読み出したスクリプトコードをレスポンスボディに挿入する（ステップ１３２７）。最後にフィルタモジュールはレスポンスをプロキシサーバ装置に送信する（ステップ１３２８）。
【００９３】
次にクライアント装置１０１の処理フローを説明する。クライアント装置１０１では、最初に処理７１０でリクエストの送信とレスポンスの受信を行い、レスポンスヘッダにセットクッキー命令が含まれる場合にクッキーデータ領域にクッキーデータを設定する。続いて、レスポンスボディにスクリプトコードが含まれているかを検査し、スクリプトコードがある場合に処理７１１で、キャッシュヒット判定用モジュールが実行し、キャッシュヒットの判定結果をメモリ１３５上に保持する。
【００９４】
変形例６では、処理７１１に続いて、レスポンスボディに挿入されている余剰クッキー削除用スクリプトコード２０８を、プロセッサ１２３が読み出し、処理１３０８に示す処理を実行する。処理１３０８では、クッキーデータ領域１０５に、余剰クッキー削除用モジュールが、クッキーの名前が識別子と同一の書式であるクッキーがあるか検査する（ステップ１３０６）。そのようなクッキーがあった場合、そのクッキーの有効期限を設定する（ステップ１３０７）。識別子と同一の書式とは、例えば、識別子が“ＡＡＡ００００００１”のような１０文字の文字列で、先頭３文字が必ず“ＡＡＡ”である場合、“ＡＡＡ００００００２”や、“ＡＡＡ９９９９９９９”などが該当する。
【００９５】
以上の処理フローによって、クライアント装置１０１は、ウェブサーバ１２１がウェブページのレスポンスを生成し、クライアント装置１０１がそのレスポンスを受信したものの、その受信までに時間がかかったためにキャッシュデータ領域１１１から古いレスポンスを読み出して処理を行った場合などに生じる、キャッシュヒット判定のためにレスポンスヘッダに挿入されたセットクッキー命令により余剰なクッキーがクッキーデータ領域に保存されて残ってしまう現象を防ぐことができる。
【００９６】
本変形例も、実施例１と同様に方法として説明したが、説明した方法を実現する装置としてもよい。また、ハードウェア構成やソフトウェア構成も、実施例１と同様にここで説明した例に限らない。
【００９７】
変形例７を、図１４を用いて説明する。
【００９８】
図１４は、変形例５の処理フローに、いくつかの変更・追加を行うことで実現するキャッシュヒット率の表示画面である。ここでは、変形例５６との差分について述べ、変形例５で説明した部分については省略する。まず、処理１２０５において、識別子とキャッシュ判別結果を判定結果保存領域１０５に保存する際に、ウェブページのＵＲＬ（Ｕｎｉｆｏｒｍ Ｒｅｓｏｕｒｃｅ Ｌｏｃａｔｏｒ）をさらに保存する。ＵＲＬは、クライアント装置１０１が送信するリクエストに含まれるＵＲＩの一部である。さらに、判定結果保存領域１０５に、同じ識別子の記録がすでに存在する場合にも、上書きをせずに追記して保存を行う。処理７１３においても、同様に保存を行う。
【００９９】
次に、クライアント装置１０１のローカルディスク１０４もしくは、ウェブサーバ装置１２１にキャッシュヒット率ページ１４０５を格納する。キャッシュヒット率ページ１４０５は、ウェブブラウザモジュール３０８に読み込まれ、判定結果保存領域１０５から、キャッシュヒット判定結果とキャッシュ判別結果を読み込み、クライアント装置１０１の入出力装置１０２に接続した画面１４０１にキャッシュヒット率一覧１４０２を表示する。キャッシュヒット率一覧１４０２には、キャッシュヒット率表１４０３が含まれ、ウェブページ毎にＵＲＬ、アクセス数、キャッシュヒット率を表示する。これらの表示は、判定結果保存領域１０５から読み込んだキャッシュヒット判定結果とキャッシュ判別結果から生成する。アクセス数は、同じＵＲＬの記録の数である。キャッシュヒット率は、キャッシュヒット判定結果から、キャッシュヒットと判定された記録の数と、アクセス数の比を、ＵＲＬ毎に計算することで求める。クライアント内キャッシュと通信経路上キャッシュはキャッシュ判別結果から分けることができる。
【０１００】
なお、本変形例は、実施例１や実施例２に対して同様の変更・追加を行い、判定結果保存領域（１０５、１２５、１４５）に保存された記録を読み出す方法でもよい。この場合、キャッシュヒット率表１４０３では、クライアント内キャッシュと通信経路上キャッシュを合計した、キャッシュヒット率が表示される。
【０１０１】
変形例８を、図１７を用いて説明する。ここでは、実施例１との差分についてのみ示し、実施例１で説明した部分については省略する。図１７は、クライアント装置１０１、ウェブサーバ装置１２１、プロキシサーバ装置１４２を含む、システム全体の処理フローである。ここでは、装置毎に処理フローを説明する。プロキシサーバ装置の処理は実施例１と同じである。
【０１０２】
本実施例では、実施例１と異なりスクリプトコード領域（１３４、１５４）に、キャッシュヒット判定用スクリプトコード２０１と、判定結果記録用スクリプトコード２０２、キャッシュ判別用スクリプトコード２０７、識別子再生成用スクリプトコード２０４、イベント取得用スクリプトコード２０９、イベント記録用スクリプトコード２１０が保存されている。まず、ウェブサーバ装置１２１の処理フローを説明する。処理７３０では、ウェブサーバ装置１２１は、プロキシサーバ装置からのリクエストに対してレスポンスと識別子を生成しレスポンスに挿入する。次に、フィルタモジュールがスクリプトコード領域からキャッシュヒット判定用スクリプトコード２０１と、判定結果記録用スクリプトコード２０２、キャッシュ判別用スクリプトコード２０７、識別子再生成用スクリプトコード２０４、イベント取得用スクリプトコード２０９、イベント記録用スクリプトコード２１０を読み出す（ステップ１７２６）。さらに、フィルタモジュールのレスポンスボディ挿入モジュールが、ステップ１７２６で読み出したスクリプトコードをレスポンスボディに挿入する（ステップ１７２７）。最後にフィルタモジュールはレスポンスをプロキシサーバ装置に送信する（ステップ１７２８）。
【０１０３】
次にクライアント装置１０１の処理フローを説明する。クライアント装置１０１では、最初に処理７１０でリクエストの送信とレスポンスの受信を行い、レスポンスヘッダにセットクッキー命令が含まれる場合にクッキーデータ領域にクッキーデータを設定する。続いて、レスポンスボディにスクリプトコードが含まれているかを検査し、スクリプトコードがある場合に処理７１１でキャッシュヒット判定用モジュールが実行され、キャッシュヒットの判定結果がメモリ１３５上に設定される。続いて、処理１２０６、処理７１３、処理９１７が実行され、キャッシュ判別結果とキャッシュヒット判定結果の判定結果保存領域への保存、キャッシュヒットの場合の識別子の再生成が行われる。
【０１０４】
変形例８では、処理９１７に続いて、レスポンスボディに挿入されているイベント取得用スクリプトコード２０９がプロセッサ１２３で実行されて処理１７０５に示す処理が行われる。ウェブブラウザモジュール３０８は、ウェブブラウザ上での表示の変化や、マウス操作などが起こった場合に、イベントを発生させる。イベントには、表示の変化の内容や、マウス操作の内容など、起こった事象がイベント内容として含まれる。処理１７０５では、イベント取得用モジュールは、このイベントの発生を検出する（ステップ１７０３）。イベントが発生した場合、イベント内容を含めて、イベント発生履歴としてメモリ上に記録する（ステップ１７０４）。
【０１０５】
処理１７０５に続いて、レスポンスボディに挿入されているイベント記録用スクリプトコード２１０がプロセッサ１２３で実行されて処理１７０９に示す処理が行われる。まず、処理１７０５によって、イベント記録用モジュールは、メモリ上に新しいイベント発生履歴が記録されたことを検出する（ステップ１７０６）。新しいイベント発生履歴が記録されたことを検出すると、識別子とイベント発生履歴を組にしてローカルディスク１０５に保存する（ステップ１７０７）。ウェブブラウザが終了しなければ、これらの処理が繰り返し実行される。以上の処理フローによって、クライアント装置１０１は、ウェブブラウザ上でのイベントをウェブページのレスポンス毎にローカルディスクに保存することができる。本変形例も、実施例１と同様に方法として説明したが、説明した方法を実現する装置としてもよい。また、ハードウェア構成やソフトウェア構成も、実施例１と同様にここで説明した例に限らない。
以上の実施例１および変形例１〜８の組合せも本発明に含まれる。
【０１０６】
また、実施例１および変形例１〜８では、プロキシサーバ装置１４１のキャッシュデータ領域１５３からレスポンスが読み出された場合を例に説明を行ったが、本発明は、クライアント装置のリクエストに対し、他の装置に含まれるキャッシュデータ領域からレスポンスが読み出された場合も含まれる。例えば、図１５に示すように、クライアント装置１０１上のブラウザキャッシュデータ領域１５０９、キャッシュアプリケーションデータ領域１５１１や、ウェブサーバ装置１２１上のウェブサーバページキャッシュデータ領域１５２９、プロキシサーバ装置１４１上のプロキシサーバページキャッシュデータ領域１５４９などが挙げられる。ブラウザキャッシュデータ領域１５０９には、ウェブブラウザプログラム１０８と連動して動作するブラウザキャッシュプログラム１５０８により、ウェブブラウザプログラム１０８が受信したレスポンスを保存し、ウェブブラウザプログラム１０８がリクエストを出す際に、ブラウザキャッシュデータ領域１５０９にレスポンスがあるかが検査され、レスポンスがある場合には、読み出される。他のキャッシュデータ領域も同様に、クライアント装置１０１とプロキシサーバ装置１４１、ウェブサーバ装置１２１の間でリクエストとレスポンスが伝達される経路上にあり、レスポンスの保存と、リクエストに対応したレスポンスの有無の検査、レスポンスがある場合に読み出して返信するのに利用される。
図１６は、各キャッシュデータ領域からレスポンスが読み出されてウェブブラウザモジュールに返信されるタイムチャートを示した図である。これらの中で、ブラウザキャッシュデータ領域とキャッシュアプリケーションデータ領域は、クライアント内キャッシュであり、それ以外のキャッシュデータ領域は、通信経路上のキャッシュと呼ぶ。
さらに、実施例１および変形例１〜８では、ウェブページのリクエスト、レスポンスの場合について説明したが、本発明の対象はウェブページに限らない。またクッキーに関しても、図５に示す機能が含まれるデータの送受信方法であればよく、クッキーに限らない。つまり、クライアント装置からのリクエストでサーバ装置から返信されるデータであって、返信されるデータを含むレスポンスに、ヘッダとボディがあり、ヘッダにはキャッシュされず、クライアント装置で読み取ることができるデータを含み、ボディには、クライアント装置で実行可能なプログラムを挿入してもよい。
【０１０７】
実施例１および変形例１〜８で説明した一形態では、サーバ装置と、クライアント装置と、サーバ装置とクライアント装置を接続するネットワークから構成されるキャッシュを含むコンピュータシステムでウェブアプリケーションを実行する際に、キャッシュを有効利用しつつ、ウェブアプリケーションを正しく実行するために、クライアント装置でキャッシュヒットを検出する技術において、クライアント装置から発したウェブページへのリクエストに対して、クライアント装置内のキャッシュや、サーバ装置との間にあるキャッシュからウェブページのレスポンスが返信された場合に、クライアント装置において、キャッシュから返信されたレスポンスであることをサーバ装置に問い合わせることなく判定する。さらに、キャッシュから返信されたレスポンスに対して、クライアント装置内のキャッシュから返信されたか、それ以外のサーバ装置とクライアント装置の間にあるキャッシュから返信されたかを判定する。キャッシュから返信されたレスポンスである場合に、ウェブページの識別子や、ウェブページのコンテンツを更新する。
【０１０８】
サーバ装置がウェブページを生成する際に、クライアント装置で実行されるキャッシュヒット判定を行うプログラムコードと、ウェブページの生成時に与えるアクセス毎にユニークなウェブページの識別子をウェブページのレスポンスのボディに挿入する。そして、サーバ装置は、ウェブページのレスポンスのヘッダに、の識別子を含むクッキーを設定する命令を挿入する。
【０１０９】
この形態によると、クライアント装置からのウェブページのリクエストに対するレスポンスに対して、クライアント装置がウェブページに含まれるプログラムをウェブブラウザ上で実行することにより、クライアント装置やサーバ装置との通信経路上にあるキャッシュから返信されたレスポンスか、サーバ装置で生成されたレスポンスかの判定を、クライアント装置へのツールのインストールや、サーバ装置でのウェブアプリケーションの改変が不要となる。
【０１１０】
また、他の形態では、キャッシュにヒットせず、サーバ装置で生成されたウェブページをクライアント装置が受け取ると、クライアント装置ではウェブページのレスポンスのヘッダに挿入されたウェブページの識別子を含むクッキーを設定する命令により、ウェブブラウザに受け取った識別子を含むクッキーが設定される。次にウェブページのレスポンスに挿入されているキャッシュヒット判定を行うプログラムコードが実行される。このプログラムは、ウェブページのレスポンスに挿入されているウェブページの識別子を読み込み、ウェブブラウザに設定されているクッキーにその識別子を含むクッキーがあるかを判定する。のようにレスポンスのヘッダに挿入された命令によってウェブブラウザには、識別子を含むクッキーが設定されているので、この判定は、クッキーがあると判定される。このプログラムでは、判定結果が出た後に、のクッキーを削除する。
【０１１１】
一方、ブラウザやサーバ装置との通信経路上にあるキャッシュから返信されたレスポンスの場合には、これらのキャッシュにおいては、ウェブページのレスポンスをキャッシュに保存する際に、レスポンスのヘッダに含まれるクッキーを設定する命令を除いてからレスポンスを保存するため、得られたレスポンスのヘッダには、サーバ装置で生成されたウェブページのレスポンスを受け取った場合と異なり、ウェブページの識別子を含むクッキーを設定する命令が含まれていない。よって、このレスポンスのボディに含まれている、キャッシュヒット判定を行うプログラムコードの実行結果としては、クッキーが無いと判定される。
【０１１２】
以上の通り、キャッシュヒット判定を行うプログラムコードの実行結果から、ウェブページのレスポンスがサーバ装置で生成されたか、キャッシュから返信されたかを判定できる。この判定結果に基づき、ウェブページの識別子や、ウェブページのコンテンツの全部もしくは一部を更新する機能を、のプログラムコードに加えることにより、キャッシュヒット時に、ウェブページの識別子を更新したり、ウェブページのコンテンツの更新を行う。
【０１１３】
さらに、他の形態では、プログラムコードに、判定結果と識別子をクライアント装置のローカルディスクに記録する機能を設け、キャッシュヒット判定を行う機能に対して、識別子を含むクッキーが無い場合、つまりキャッシュヒットの場合に、クライアント装置のローカルディスクに記録されている判定結果と識別子を検索し、その中にウェブページのレスポンスのボディに含まれている識別子と同じ識別子が含まれているかを判定する機能を追加することで、クライアント装置に設けられたキャッシュから返信されたレスポンスか、それ以外のサーバ装置との間に設けられたキャッシュから返信されたレスポンスかを判定する。これは、以前にクライアント装置で受信したレスポンスの場合、のプログラムコードにより、ローカルディスクにそのレスポンスのボディに含まれている識別子が記録されており、一方、以前にクライアント装置で受信したことの無いレスポンスの場合には、該当する識別子が記録されていないことから、ウェブページのレスポンスのボディに含まれている識別子と同じ識別子がローカルディスクにある記録に含まれている場合は、クライアント装置のキャッシュから、そうでない場合にはサーバ装置と間に設けられたキャッシュから返信されたレスポンスと判定する。
【０１１４】
また、レスポンスに対するプログラムコードやクッキーの設定命令などの挿入は、サーバ装置のウェブアプリケーションに改変を加えずに、ウェブアプリケーションのレスポンス生成後にの挿入を行う。この挿入は、サーバ装置内だけでなく、サーバ装置とクライアント装置の間に設けたプロキシ装置でも行ってもよい。また、クライアント装置でのプログラムの実行や、クッキーの設定などは、これらの機能を持ったウェブブラウザで実現でき、クライアント装置にツールのインストールを行う必要はない。
【０１１５】
本発明の他の形態では、サーバ装置やプロキシ装置の内部に上述の本発明の一形態の構成を設けたが、その構成を有する装置をサーバ装置内や、サーバ装置とクライアント装置の間に設置してもよい。
【０１１６】
つまり、実施例１および変形例１〜８により、第一の計算機において、レスポンスが第一の計算機内や、第一の計算機と第二の計算機との間に設けられたキャッシュから返信されたレスポンスであるか、第二の計算機で生成されたレスポンスであるかを特定できる。
【０１１７】
また、  実施例１および変形例１〜８により、第一の計算機で、キャッシュヒットの判定をすることにより、第二の計算機で実行されるアプリケーションのキャッシュ利用を管理することができる。
【０１１８】
また、  実施例１および変形例１〜８により、第一の計算機から第二の計算機へのウェブページのリクエスト毎に、ユニークな識別子を生成するので、ウェブページの処理の記録をリクエスト毎に分けて行うことができ、システムの運用管理を容易にすることができる。
【図面の簡単な説明】
【０１１９】
【図１】ウェブアプリケーションを実行するシステム構成図である。
【図２】サーバ装置においてレスポンスに挿入されるスクリプトコードの例である。
【図３】ウェブアプリケーションの処理フローの例である。
【図４】ウェブシステムにおけるリクエストとレスポンスの構成を示す図である。
【図５】ウェブシステムにおけるクッキーおよびセットクッキー命令の動作を説明する図である。
【図６】プロキシサーバ装置の処理フロー図である。
【図７】第１の実施例におけるクライアント装置と、プロキシサーバ装置、ウェブサーバ装置の処理フロー図である。
【図８】変形例１におけるクライアント装置と、プロキシサーバ装置、ウェブサーバ装置の処理フロー図である。
【図９】変形例２におけるクライアント装置と、プロキシサーバ装置、ウェブサーバ装置の処理フロー図である。
【図１０】変形例３におけるクライアント装置と、プロキシサーバ装置、ウェブサーバ装置の処理フロー図である。
【図１１】変形例４におけるクライアント装置と、プロキシサーバ装置、ウェブサーバ装置の処理フロー図である。
【図１２】変形例５におけるクライアント装置と、プロキシサーバ装置、ウェブサーバ装置の処理フロー図である。
【図１３】変形例６におけるクライアント装置と、プロキシサーバ装置、ウェブサーバ装置の処理フロー図である。
【図１４】キャッシュヒット率測定結果を表示する画面の例を示した図である。
【図１５】システムのキャッシュ配置を示した図である。
【図１６】システムのキャッシュ配置の違いによる、処理の違いを示した図である。
【図１７】変形例７におけるクライアント装置と、プロキシサーバ装置、ウェブサーバ装置の処理フロー図である。
【符号の説明】
【０１２０】
１０１  クライアント装置
１０２、１２６、１４６  入出力装置
１０３、１２３、１４３  プロセッサ
１０４、１２４、１４４  ローカルディスク
１０５、１２５、１４５  判定結果保存領域
１０６、１２２、１４２  ネットワークインタフェース
１０８  ウェブブラウザプログラム
１０９  スクリプトエンジンプログラム
１１０、１３１、１５１  キャッシュプログラム
１１１、１３３、１５３  キャッシュデータ領域
１１２  クッキーデータ領域
１１３、１３５、１５５ メモリ
１２７  ウェブサーバプログラム
１２８、１４８  フィルタプログラム
１２９、１４９  レスポンスボディ挿入部
１３０、１５０  レスポンスヘッダ挿入部
１３２、１５２  識別子生成プログラム
１４７  プロキシサーバプログラム
１３４、１５４  スクリプトコード領域
１６１  ネットワーク
【図１】
2010067016.tif 000003
【図２】
2010067016.tif 000004
【図３】
2010067016.tif 000005
【図４】
2010067016.tif 000006
【図５】
2010067016.tif 000007
【図６】
2010067016.tif 000008
【図７】
2010067016.tif 000009
【図８】
2010067016.tif 000010
【図９】
2010067016.tif 000011
【図１０】
2010067016.tif 000012
【図１１】
2010067016.tif 000013
【図１２】
2010067016.tif 000014
【図１３】
2010067016.tif 000015
【図１４】
2010067016.tif 000016
【図１５】
2010067016.tif 000017
【図１６】
2010067016.tif 000018
【図１７】
2010067016.tif 000019