(57)【特許請求の範囲】
【請求項１】
コンピュータ・システムのためのデータ・キャッシュを管理する方法であって、
クライアント・プロセスによって要求された１つまたは複数のデータ・リソースのためのキャッシュを維持するステップと、
前記クライアント・プロセスからの、キャッシュ済みデータ・リソースを求める要求に応答して、
前記データ・リソースを求める第１の要求をサーバ・プロセスに送り、
前記データ・リソースが一番最近にキャッシュされてから前記データ・リソースが修正されたか否かの指示を求める第２の要求を前記サーバ・プロセスに送るステップと、
前記第１または第２の要求に対する前記サーバ・プロセスからの応答を、前記キャッシュ済みデータ・リソースと比較して、前記第２の要求に対する前記応答が不正確かどうかを識別するステップであって、
前記第２の要求に対する前記応答が、前記データ・リソースが変化していないことの指示を含むのに応答して、前記データ・リソースの前記キャッシュ済みコピーを、前記第１の要求に応答して返された前記データ・リソースのコピーと比較して、前記第２の要求に対する前記応答が不正確かどうか判定し、
前記第２の要求に対する前記応答が前記データ・リソースのコピーを含むのに応答して、次いで、前記データ・リソースの前記キャッシュ済みコピーを、前記第２の要求に応答して返された前記データ・リソースの前記コピーと比較して、前記第２の要求に対する前記応答が不正確かどうか判定することを含む前記識別するステップと、
前記データ・リソースに関連する不正確な応答が所定数識別された場合に、前記データ・リソースのキャッシングをディセーブルにするステップとを含む方法。
【請求項２】
第１および第２の要求が、前記キャッシュ済みデータ・リソースに関連する所定の初期化段階にわたり、前記キャッシュ済みデータ・リソースを求める要求に応答して前記サーバ・プロセスに送られ、
前記初期化段階の後、前記データ・リソースに関連する不正確な応答が前記所定数よりも少なく識別された場合は、前記データ・リソースのキャッシングがイネーブルにされる、請求項１に記載の方法。
【請求項３】
前記データ・リソースのキャッシングがディセーブルにされた場合は、前記初期化段階の後、前記キャッシュ済みデータ・リソースを求める後続の要求に応答して第１の要求だけが前記サーバ・プロセスに送られ、
前記データ・リソースのキャッシングがイネーブルにされた場合は、前記初期化段階の後、前記キャッシュ済みデータ・リソースを求める後続の要求に応答して第２の要求だけが前記サーバ・プロセスに送られる、請求項２に記載の方法。
【請求項４】
前記初期化段階の継続時間が、所定の時間期間に依存する、請求項２または３に記載の方法。
【請求項５】
前記初期化段階の継続時間が、前記関連するデータ・リソースを求める要求の所定数に依存する、請求項２ないし４のいずれか１項に記載の方法。
【請求項６】
前記初期化段階が、前記データ・リソースに関連する不正確な応答が前記所定数識別されるのに応答して終了する、請求項２ないし５のいずれか１項に記載の方法。
【請求項７】
前記第２の要求がＨＴＴＰ  ｉｆ−ｍｏｄｉｆｉｅｄ−ｓｉｎｃｅ（ＩＭＳ）要求を含む、請求項１ないし６のいずれか１項に記載の方法。
【請求項８】
コンピュータ・システムのためのデータ・キャッシュを管理するための装置であって、
クライアント・プロセスによって要求された１つまたは複数のデータ・リソースのためのキャッシュを維持すること、
前記クライアント・プロセスからの、キャッシュ済みデータ・リソースを求める要求に応答して、
前記データ・リソースを求める第１の要求をサーバ・プロセスに送り、
前記データ・リソースが一番最近にキャッシュされてから前記データ・リソースが修正されたか否かの指示を求める第２の要求を前記サーバ・プロセスに送ること、
前記第１または第２の要求に対する前記サーバ・プロセスからの応答を、前記キャッシュ済みデータ・リソースと比較して、前記第２の要求に対する前記応答が不正確かどうかを識別することであって、
前記第２の要求に対する前記応答が、前記データ・リソースが変化していないことの指示を含むのに応答して、前記データ・リソースの前記キャッシュ済みコピーを、前記第１の要求に応答して返された前記データ・リソースのコピーと比較して、前記第２の要求に対する前記応答が不正確かどうか判定し、
前記第２の要求に対する前記応答が前記データ・リソースのコピーを含むのに応答して、次いで、前記データ・リソースの前記キャッシュ済みコピーを、前記第２の要求に応答して返された前記データ・リソースの前記コピーと比較して、前記第２の要求に対する前記応答が不正確かどうか判定する、前記識別すること、および、
前記データ・リソースに関連する不正確な応答が所定数識別された場合に、前記データ・リソースのキャッシングをディセーブルにすることを行うように動作可能である装置。
【請求項９】
前記キャッシュ済みデータ・リソースに関連する所定の初期化段階にわたり、前記キャッシュ済みデータ・リソースを求める要求に応答して第１および第２の要求を前記サーバ・プロセスに送り、
前記初期化段階の後、前記データ・リソースに関連する不正確な応答が前記所定数よりも少なく識別されるのに応答して、前記データ・リソースのキャッシングをイネーブルにするようにさらに動作可能である、請求項８に記載の装置。
【請求項１０】
前記データ・リソースのキャッシングがディセーブルにされるのに応答して、前記初期化段階の後、前記キャッシュ済みデータ・リソースを求める後続の要求に応答して第１の要求だけを前記サーバ・プロセスに送り、
前記データ・リソースのキャッシングがイネーブルにされるのに応答して、前記初期化段階の後、前記キャッシュ済みデータ・リソースを求める後続の要求に応答して第２の要求だけを前記サーバ・プロセスに送るようにさらに動作可能である、請求項９に記載の装置。
【請求項１１】
前記初期化段階の継続時間が、所定の時間期間に依存する、請求項９または１０に記載の装置。
【請求項１２】
前記初期化段階の継続時間が、前記関連するデータ・リソースを求める要求の所定数に依存する、請求項９ないし１１のいずれか１項に記載の装置。
【請求項１３】
前記データ・リソースに関連する不正確な応答が前記所定数識別されるのに応答して前記初期化段階を終了するようにさらに動作可能である、請求項１０ないし１２のいずれか１項に記載の装置。
【請求項１４】
前記第２の要求がＨＴＴＰ  ｉｆ−ｍｏｄｉｆｉｅｄ−ｓｉｎｃｅ（ＩＭＳ）要求を含む、請求項８ないし１３のいずれか１項に記載の装置。
【請求項１５】
請求項１ないし７のいずれか１項に記載の方法の各ステップを、コンピュータに実行させる、コンピュータ・プログラム。
【請求項１６】
請求項１５に記載のコンピュータ・プログラムを、コンピュータ可読記憶媒体に記録した記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・システムのためのデータ・キャッシュの管理に関する。
【背景技術】
【０００２】
コンピュータ・システムは一般に、システム全体にわたるデータのプロビジョンを加速させるように構成された１つまたは複数のキャッシュを備える。キャッシュには、元のデータ・ソースからのデータのコピーが記憶される。データを求める要求に応答して、元のデータ・ソースからのデータの代わりに、要求されたデータがキャッシュから提供される。したがって、データ・ソースがデータ要求元に対してローカルでない場合、要求元に対してローカルに設けられたキャッシュが、当該データのプロビジョンを加速させることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ウェブ・ページなど、いくらかのデータには、データがキャッシュされるのを防ぐように構成されたメカニズム（ディレクティブと一般に呼ばれる）を設けることができる。データをウェブ・ページの形でネットワークにまたがって通信するのに使用されるハイパーテキスト転送プロトコル（ＨＴＴＰ）は、予想されるまたは要求される挙動を設定するようなディレクティブを指定するのに使用できるヘッダ・フィールドを含む。このようなヘッダの１つは、所与のページがキャッシュされるべきか否かを指定するためにウェブ・ページ・プロバイダによって使用できるキャッシュ制御ヘッダである。しかし、このようなキャッシュ制御は一般に、そうしたキャッシュ制御にもかかわらずキャッシングから利益を得る可能性があるデータもあるという点で、過度に指定される。
【０００４】
したがって、前述の問題に対処することが、当技術分野で必要とされている。
【課題を解決するための手段】
【０００５】
第１の態様から見ると、本発明は、コンピュータ・システムのためのデータ・キャッシュを管理する方法を提供する。前記方法は、クライアント・プロセスによって要求された１つまたは複数のデータ・リソースのためのキャッシュを維持するステップと、前記クライアント・プロセスからの、キャッシュ済みデータ・リソースを求める要求に応答して、前記データ・リソースを求める第１の要求をサーバ・プロセスに送り、前記データ・リソースが一番最近にキャッシュされてから前記データ・リソースが修正されたか否かの指示を求める第２の要求を前記サーバ・プロセスに送るステップと、前記第１または第２の要求に対する前記サーバ・プロセスからの応答を、キャッシュ済みデータ・リソースと比較して、前記第２の要求に対する前記応答が不正確かどうかを識別するステップであって、前記第２の要求に対する前記応答が、前記データ・リソースが変化していないことの指示を含むのに応答して、前記データ・リソースの前記キャッシュ済みコピーを、前記第１の要求に応答して返された前記データ・リソースのコピーと比較して、前記第２の要求に対する前記応答が不正確かどうか判定し、前記第２の要求に対する前記応答が前記データ・リソースのコピーを含むのに応答して、次いで、前記データ・リソースの前記キャッシュ済みコピーを、前記第２の要求に応答して返された前記データ・リソースのコピーと比較して、前記第２の要求に対する前記応答が不正確かどうか判定することを含む前記識別するステップと、前記データ・リソースに関連する不正確な応答が所定数識別された場合に、前記データ・リソースのキャッシングをディセーブルにするステップとを含む。
【０００６】
第１および第２の要求は、キャッシュ済みデータ・リソースに関連する所定の初期化段階にわたり、キャッシュ済みデータ・リソースを求める要求に応答してサーバ・プロセスに送られてよい。そして、初期化段階の後、データ・リソースに関連する不正確な応答が所定数よりも少なく識別された場合は、データ・リソースのキャッシングがイネーブルにされてよい。データ・リソースのキャッシングがディセーブルにされた場合は、初期化段階の後、キャッシュ済みデータ・リソースを求める後続の要求に応答して第１の要求だけがサーバ・プロセスに送られてよく、データ・リソースのキャッシングがイネーブルにされた場合は、初期化段階の後、キャッシュ済みデータ・リソースを求める後続の要求に応答して第２の要求だけがサーバ・プロセスに送られてよい。
【０００７】
初期化段階の継続時間は、所定の時間期間に依存してよい。初期化段階の継続時間は、関連するデータ・リソースを求める要求の所定数に依存してよい。初期化段階は、データ・リソースに関連する不正確な応答が所定数識別されるのに応答して終了してよい。第２の要求は、ＨＴＴＰ  ｉｆ−ｍｏｄｉｆｉｅｄ−ｓｉｎｃｅ（ＩＭＳ）要求を含んでよい。
【０００８】
さらに他の態様から見ると、本発明は、コンピュータ・システムのためのデータ・キャッシュを管理するための装置を提供する。前記装置は、クライアント・プロセスによって要求された１つまたは複数のデータ・リソースのためのキャッシュを維持すること、前記クライアント・プロセスからの、キャッシュ済みデータ・リソースを求める要求に応答して、前記データ・リソースを求める第１の要求をサーバ・プロセスに送り、前記データ・リソースが一番最近にキャッシュされてから前記データ・リソースが修正されたか否かの指示を求める第２の要求を前記サーバ・プロセスに送ること、前記第１または第２の要求に対する前記サーバ・プロセスからの応答を、キャッシュ済みデータ・リソースと比較して、前記第２の要求に対する前記応答が不正確かどうかを識別することであって、前記第２の要求に対する前記応答が、前記データ・リソースが変化していないことの指示を含むのに応答して、前記データ・リソースの前記キャッシュ済みコピーを、前記第１の要求に応答して返された前記データ・リソースのコピーと比較して、前記第２の要求に対する前記応答が不正確かどうか判定し、前記第２の要求に対する前記応答が前記データ・リソースのコピーを含むのに応答して、次いで、前記データ・リソースの前記キャッシュ済みコピーを、前記第２の要求に応答して返された前記データ・リソースのコピーと比較して、前記第２の要求に対する前記応答が不正確かどうか判定する、前記識別すること、および、前記データ・リソースに関連する不正確な応答が所定数識別された場合に、前記データ・リソースのキャッシングをディセーブルにすることを行うように動作可能である。
【０００９】
さらに他の実施形態は、コンピュータ・システムのためのデータ・キャッシュを管理するためのコンピュータ・プログラム製品を提供する。コンピュータ・プログラム製品は、コンピュータ可読プログラム・コードが組み入れられたコンピュータ可読記憶媒体を含み、コンピュータ可読プログラム・コードは、クライアント・プロセスによって要求された１つまたは複数のデータ・リソースのためのキャッシュを維持すること、キャッシュ済みデータ・リソースを求めるクライアント・プロセスからの要求に応答して、データ・リソースを求める第１の要求をサーバ・プロセスに送り、データ・リソースが一番最近にキャッシュされてからデータ・リソースが修正されたか否かの指示を求める第２の要求をサーバ・プロセスに送ること、第１または第２の要求に対するサーバ・プロセスからの応答を、キャッシュ済みデータ・リソースと比較して、第２の要求に対する応答が不正確かどうかを識別すること、および、データ・リソースに関連する不正確な応答が所定数識別された場合に、データ・リソースのキャッシングをディセーブルにすることを行うように構成される。
【００１０】
さらに他の態様から見ると、本発明は、コンピュータ・システムのためのデータ・キャッシュを管理するためのコンピュータ・プログラム製品を提供する。コンピュータ・プログラム製品は、処理回路によって読取可能なコンピュータ可読記憶媒体であって、本発明のステップを実施する方法を実施するために処理回路によって実行される命令を記憶したコンピュータ可読記憶媒体を含む。
【００１１】
さらに他の態様から見ると、本発明は、コンピュータ可読媒体に記憶されディジタル・コンピュータの内蔵メモリにロード可能なコンピュータ・プログラムを提供し、コンピュータ・プログラムは、前記プログラムがコンピュータ上で実行されたときに本発明のステップを実施するためのソフトウェア・コード部分を含む。
【発明の効果】
【００１２】
本発明の実施形態は、所与のデータ・ソースのキャッシングが有益となるかどうかを自動的に決定することを可能にする。本発明の実施形態は、非キャッシュ・ディレクティブに逆らって、通常ならキャッシュされないデータ・ソースを有益にキャッシュするように構成されてよい。本発明の実施形態は、データ・ソースの１つまたは複数が動的な内容を含む場合であって、ｉｆ−ｍｏｄｉｆｉｅｄ−ｓｉｎｃｅ（ＩＭＳ）応答が不正確である可能性がある場合に、適用されてよい。
【００１３】
次に、以下の図面を参照しながら、本発明の好ましい実施形態について単なる例として述べる。
【図面の簡単な説明】
【００１４】
【図１】従来技術による、かつ本発明の好ましい一実施形態をその中で実施できる、データ・キャッシュを提供するプロキシ・サーバを含むコンピュータ・システムの概略図である。
【図２】本発明の好ましい一実施形態による、図１のプロキシ・サーバによるキャッシュ管理のためのデータを含むテーブルである。
【図３】本発明の好ましい一実施形態による、図１のコンピュータ・システム中でデータのキャッシュを開始するときに図１のプロキシ・サーバ中で実施される処理を示すフローチャートである。
【図４】本発明の好ましい一実施形態による、図１のコンピュータ・システム中でデータに対する要求を管理するときに図１のプロキシ・サーバ中で実施される処理を示すフローチャートである。
【発明を実施するための形態】
【００１５】
図１を参照すると、コンピュータ・システム１００は、第１、第２、および第３のコンピュータ１０１、１０２、１０３を含み、各コンピュータには、１つまたは複数のアプリケーション・プログラムを実行するための処理プラットフォームまたは環境を提供するように構成されたそれぞれのオペレーティング・システム１０４がロードされている。第１のコンピュータ１０１は、ユーザがウェブ・ページをロードおよび閲覧するのを可能にするように構成されたウェブ・ブラウザ・アプリケーション・プログラム１０５の形のクライアント・アプリケーション・プログラムを実行している。第２のコンピュータ１０２は、プロキシ・サーバ・アプリケーション・プログラム１０６の形のサーバ・アプリケーション・プログラムを実行している。第３のコンピュータ１０３は、ウェブ・サーバ・アプリケーション・プログラム１０７の形のサーバ・アプリケーション・プログラムを実行している。第２のコンピュータ１０２と第３のコンピュータ１０３とは、ネットワーク１０８を介して接続される。第１のコンピュータ１０１には、第２のコンピュータ１０２によって提供されるプロキシ・サーバ１０６を介して、ネットワーク１０８への接続が提供される。第３のコンピュータ１０３は、ウェブ・ページ１１０もしくは他のデータ・ファイルの形の、またはこれらの組合せの形のデータを記憶した記憶デバイス１０９に接続される。本発明の好ましい一実施形態では、クライアント、プロキシ・サーバ、およびウェブ・サーバ・アプリケーション１０５、１０６、１０７は、ハイパーテキスト転送プロトコル（ＨＴＴＰ）を使用してデータを通信する。
【００１６】
本発明の好ましい一実施形態では、プロキシ・サーバ１０６は、ウェブ・ページ１１０などの要求されたデータのキャッシュ１１２を自動的に構築および維持するように構成されたキャッシュ・マネージャ・モジュール１１１を備える。所与のウェブ・ページ１１０を閲覧する要求がウェブ・ブラウザ・アプリケーション・プログラム１０５からあれば、この要求は、プロキシ・サーバ１０６を介して、ネットワーク１０８を経由してウェブ・サーバ１０７に渡される。プロキシ・サーバ１０６は、それに応答して提供されたウェブ・ページ１１０のコピーをキャッシュするように構成される。次いで、所与のウェブ・ページ１１０を求めるウェブ・ブラウザ１０５からの後続の要求に応えるために、所与のウェブ・ページ１１０のキャッシュ済みコピーが所定の条件下で使用される。
【００１７】
図２を参照すると、キャッシュ・マネージャ・モジュール１１１は、キャッシュ候補レコード２０１、キャッシュ初期化データ２０２、およびキャッシュ性能基準（performance measure）２０３を備える。キャッシュ候補レコードは、キャッシュされうるデータのセット（ウェブ・ページ１１０の形の）ごとのエントリ２０４を含む。各エントリ２０４は、当該ウェブ・ページ１１０のユニフォーム・リソース・ロケータ（ＵＲＬ）２０５と、ウェブ・ページ１１０の現キャッシュ・コピーが作成された時刻を示すタイムスタンプ２０６とを含む。各エントリ２０４はさらに、当該ウェブ・ページのキャッシングが初期化（Ｉ）されているかイネーブル（Ｙ）にされているかディセーブル（Ｎ）にされているかを示すように構成されたキャッシング・ステータス２０７を含む。
【００１８】
キャッシュ初期化データ２０２は、キャッシュ候補２０１ごとの初期化段階を司る所定のデータを含み、この初期化段階の間に、キャッシュ候補２０１のキャッシングをイネーブルにするか否かを決定するための１つまたは複数のチェックが実施される。したがって、初期化段階の間、そのエントリのキャッシング・ステータス２０７は「Ｉ」に設定される。キャッシュ初期化データ２０２は、初期化段階に関する２つの制限を定義する。第１の制限は、所定の時間期間を含む。第２の制限は、所定の要求数、すなわち、エントリによって識別されるデータ・リソースを求める要求の数を含む。初期化段階は、第１の制限と第２の制限のいずれかが満たされたときに終了する。
【００１９】
所与のエントリ２０４の初期化段階の間、キャッシュ・マネージャ１１１は、ウェブ・サーバ１０７への、所与のウェブ・ページ１１０を求めるその要求を、重複させるように構成される。これは、ウェブ・ページ１１０がキャッシュされていないかのようにウェブ・ページ１１０を要求すること、また、ウェブ・ページ１１０がキャッシュされているかのように、ウェブ・ページ１１０が一番最近にキャッシュ・マネージャ１１１によって受け取られてからウェブ・ページ１１０が変化したか否かの指示をウェブ・サーバ１０７に要求することによって行われる。キャッシュされているかのように行われた要求の結果と、キャッシュされていないかのように行われた要求の結果とが比較されて、ウェブ・ページ１１０のキャッシングが有益となるかどうかが判定される。本発明の好ましい一実施形態では、キャッシングの利益は、ウェブ・ページ１１０が変化したか否かの指示をウェブ・サーバ１０７に求める要求に対する、ウェブ・サーバ１０７の応答の正確さによって決定される。ＨＴＴＰでは、ウェブ・サーバ１０７へのこのような要求は、ウェブ・ページ１１０についてのｉｆ−ｍｏｄｉｆｉｅｄ−ｓｉｎｃｅ（ＩＭＳ）要求によって提供される。このようなＩＭＳ要求に応答して、ウェブ・サーバ１０７は、ウェブ・ページ１１０が変化していないことを示すコード「３０４」の形の否定応答を返すか、または、ウェブ・ページ１１０の更新済みバージョンの形の肯定応答を返すことになる。
【００２０】
上述のように、キャッシュ・マネージャ１１１は、ウェブ・ページ１１０についての並行したＩＭＳ（キャッシュされているかのような）要求と標準（キャッシュされていないかのような）要求の応答を比較して、所与のＩＭＳ応答が正確か否かを判定するように構成される。キャッシュ・マネージャ１１１がＩＭＳ要求に対して「３０４」応答を受け取った場合は、並行した標準要求に応答して受け取られたウェブ・ページ１１０のバージョンが、ウェブ・ページ１１０のキャッシュ済みコピーと比較される。それぞれのコピーが同一ならば、ＩＭＳ応答は正確であると見なされる。それぞれのコピーが同一でないならば、ＩＭＳ応答は不正確であると見なされる。キャッシュ・マネージャ１１１が、ＩＭＳ要求に応答してウェブ・ページ１１０の更新済みバージョンを受け取った場合は、この更新済みバージョンが、ウェブ・ページ１１０のキャッシュ済みコピーと比較される。この場合、それぞれのコピーが同一ならば、ＩＭＳ応答は不正確であると見なされる。それぞれのコピーが同一でないならば、ＩＭＳ応答は正確であると見なされる。
【００２１】
キャッシュ初期化データ２０２はさらに、初期化段階内で所与のウェブ・ページ１１０について受け取られた不正確なＩＭＳ応答の発生率についてのしきい値を定義する。しきい値が満たされる場合は、所与のウェブ・ページ１１０についてＩＭＳ応答メカニズムは不正確であると見なされ、したがって、キャッシングがディセーブルにされて、キャッシング・ステータス２０７が「Ｉ」から「Ｎ」に更新される。不正確なＩＭＳの発生率がしきい値を満たさない場合は、所与のウェブ・ページのキャッシングがイネーブルにされて、キャッシング・ステータス２０７が「Ｉ」から「Ｙ」に更新される。本発明の好ましい一実施形態では、初期化段階は、５０回のページ要求と、最初のページ要求から５００秒とのうちの、いずれか早く発生した方によって定義される。初期化段階についての他の定義を行うこともできることを、当業者なら理解するであろう。本発明の好ましい一実施形態では、不正確なＩＭＳ応答のしきい値発生率は０である。言い換えれば、不正確なＩＭＳ応答があれば、それは初期化期間中にログされ、次いで、当該キャッシュ候補のキャッシングがディセーブルにされる。
【００２２】
所与のキャッシュ候補についての初期化段階の後、キャッシュ・マネージャ１１１は、初期化段階で決定されたキャッシング・ステータスに従ってその処理を継続するように構成される。本発明の好ましい一実施形態では、キャッシュ・マネージャ１１１には、キャッシングがイネーブルにされたウェブ・ページ１１０と共に使用される性能基準２０３が提供される。性能基準２０３は、キャッシングが性能基準２０３を満たさない場合にウェブ・ページ１１０などの所与のデータ・セットのキャッシングをディセーブルにするかどうかを決定するように構成される。言い換えれば、キャッシュ・マネージャ１１１は、キャッシュからの当該データのプロビジョンを測定し、そのようなキャッシングが、データをそのソースから直接取り出すことに勝る性能利益をもたらさない場合には、当該データのキャッシングをディセーブルにするように構成される。
【００２３】
本発明の好ましい一実施形態では、性能基準２０３は、ソース・データの変化についての所定のしきい値頻度を含む。言い換えれば、ウェブ・サーバ１０７によって提供された元のウェブ・ページ１１０が、所与の時間期間にしきい値よりも多くの回数にわたって変化した場合は、このウェブ・ページのキャッシングはディセーブルにされる。本発明の好ましい一実施形態では、変化の頻度は、１分の時間期間内に１回である。性能基準２０３はまた、ウェブ・サーバ１０７によって提供されたウェブ・ページ１１０が変化した結果として、キャッシュ済みコピーの代わりにウェブ・ページ１１０がウェブ・サーバ１０７から所定期間内にプロビジョンされた頻度と言うこともできる。したがって、キャッシュ・マネージャ・モジュール１１１は、所与の初期化されたキャッシュ済みエントリ２０４についての各要求に応答して、最初に、サーバ１０７へのＩＭＳ要求を介して、ソース・ウェブ・ページ１１０が変化したか否かを決定するように構成される。いずれかの時点で非３０４応答の頻度がしきい値を超えた場合は、このキャッシュ・エントリ２０４についてのキャッシングがディセーブルにされ、したがってそのキャッシング・ステータスが「Ｎ」に更新される。
【００２４】
次に、ウェブ・ブラウザ１０５からのデータ要求に応答してキャッシュ・マネージャ・モジュール１１１によって実施される処理について、図３のフローチャートを参照しながらさらに述べる。処理は、ステップ３０１で、クライアント・アプリケーション１０５などの要求元からページ要求がＵＲＬの形で受け取られるのに応答して開始され、ステップ３０２に進む。ステップ３０２で、要求されたＵＲＬが現在のキャッシュ候補２０１に対してチェックされ、存在しない場合は、処理はステップ３０３に進む。新たに要求されたＵＲＬはキャッシュ候補に追加され、処理はステップ３０４に進む。ステップ３０４で、新しいエントリのキャッシング・ステータスが「Ｉ」に設定され、処理はステップ３０５に進む。ステップ３０５で、ページ要求はサーバ１０７に渡され、返された要求ページがキャッシュされて要求元クライアント・アプリケーション１０５に渡される。次いで、処理はステップ３０６に進んで終了する。
【００２５】
ステップ３０２で、要求されたＵＲＬが現在のキャッシュ候補２０１である場合は、処理はステップ３０７に進む。ステップ３０７で、当該エントリのキャッシング・ステータスがチェックされ、「Ｉ」に設定されている場合は、処理はステップ３０８に進む。ステップ３０８で、このＵＲＬに対する標準要求と並行して、最後のアクセス時刻２０６に基づくＩＭＳ要求がサーバ１０７に送られ、処理はステップ３０９に進む。ステップ３０９で、標準要求に応答して受け取られたページが要求元クライアント・アプリケーション１０５に転送され、処理はステップ３１０に進む。
【００２６】
ステップ３１０で、ＩＭＳ要求に応答して、要求されたページに最後のアクセス時刻２０６から変化がないことを示す「３０４」応答が受け取られた場合は、処理はステップ３１１に進む。ステップ３１１で、標準的なページ要求に応答して受け取られたページがキャッシュ済みコピーと比較され、処理はステップ３１２に進む。ステップ３１２で、受け取られたページとキャッシュ済みページとが同じである場合は、処理はステップ３１３に進む。ステップ３１２で、受け取られたページとキャッシュ済みページとが同じでない場合は、処理はステップ３１４に進む。ステップ３１４で、不正確なＩＭＳ応答がログされ、次いで処理はステップ３１３に進む。
【００２７】
ステップ３１０で、ＩＭＳ要求に対する応答が更新済みページを含む場合は、処理はステップ３１５に進む。ステップ３１５で、ＩＭＳ要求に応答して受け取られたページがキャッシュ済みコピーと比較され、処理はステップ３１６に進む。ステップ３１６で、受け取られたページとキャッシュ済みページとが同じである場合は、処理はステップ３１４に進み、前述のように進行する。ステップ３１６で、受け取られたページとキャッシュ済みページとが同じでない場合は、処理はステップ３１７に進む。ステップ３１７で、更新済みページがキャッシュされ、キャッシュ・レコードが相応に更新される。次いで処理はステップ３１３に進む。
【００２８】
ステップ３１３で、当該ページが最初にキャッシングされてからの制限時間が経過したかまたはページ要求制限が満たされたせいで、初期化期間が満了した場合は、処理はステップ３１８に進む。ステップ３１８で、初期化期間にわたってログされた不正確なＩＭＳ応答の数がしきい値と比較され、処理はステップ３１９に進む。ステップ３１９で、しきい値が満たされていない場合は、処理はステップ３２０に進む。ステップ３２０で、キャッシング・ステータス２０７が「Ｙ」に設定されて、当該エントリ２０４についてキャッシングがイネーブルにされ、処理はステップ３０６に進んで終了する。ステップ３１９でしきい値が満たされている場合は、処理はステップ３２１に進む。ステップ３２１で、キャッシング・ステータス２０７が「Ｎ」に設定されて、当該エントリ２０４についてキャッシングがディセーブルにされ、処理はステップ３０６に進んで終了する。
【００２９】
ステップ３０７で当該エントリのキャッシング・ステータスが「Ｉ」に設定されていない場合は、処理は図４のステップ４０１に進む。ステップ４０１で、エントリ２０４についてキャッシングがイネーブルにされていることを、識別されたエントリ２０４のキャッシング・ステータス２０７が示す場合は、処理はステップ４０２に進む。ステップ４０２で、タイムスタンプ２０６を表すデータを含むＩＭＳ要求がサーバ１０７に送られ、処理はステップ４０３に進む。ステップ４０３で、サーバからの応答が待機され、ウェブ・ページ１１０が変化していないことを示す「３０４」応答が受け取られた場合は、処理はステップ４０４に進む。ステップ４０４で、ウェブ・ページ１１０のキャッシュ済みコピーが要求元ウェブ・ブラウザ１０５に返され、処理はステップ４０５に進んで終了する。
【００３０】
ステップ４０３で、更新済みウェブ・ページを含む応答、したがってキャッシュ１１２中のウェブ・ページのコピーが古いことを示す応答が受け取られた場合は、処理はステップ４０６に進む。ステップ４０６で、キャッシュ中のデータのコピーが作成されてからの時間がタイムスタンプ２０６から確立され、所定期間（本発明の好ましい一実施形態では１分）未満である場合は、処理はステップ４０７に進む。ステップ４０７で、キャッシュ候補テーブル２０１中のキャッシング・ステータス２０７を介して、このＵＲＬについてのキャッシングがディセーブルにされ、処理はステップ４０８に進む。ステップ４０８で、ウェブ・ページ１１０の更新済みコピーが要求元ウェブ・ブラウザ１０５に転送される。次いで、処理はステップ４０５に進んで終了する。ステップ４０６で、データのキャッシュ済みコピーが保存されてからの時間が所定期間よりも長い場合は、処理はステップ４０９に進む。ステップ４０９で、ウェブ・ページ１１０の更新済みコピーが、古いコピーの代わりにキャッシュ１１２に記憶され、キャッシュ候補レコード２０１中の当該エントリ２０４のタイムスタンプ２０６が相応に更新され、次いで、処理はステップ４０８に進んで前述のように進行する。
【００３１】
ステップ４０１で、要求されたＵＲＬの当該エントリ２０４のキャッシング・ステータス２０７が、キャッシングがディセーブルにされていることを示す場合は、処理はステップ４１０に進み、要求はサーバ１０７への非キャッシュ済み要求として処理され、サーバ応答が要求元ウェブ・ブラウザ１０５に直接返される。次いで、処理はステップ４０５に進んで終了する。
【００３２】
別の実施形態では、初期化期間の満了前に、不正確なＩＭＳ応答の発生率がチェックされ、しきい値を超える場合は、当該データ・リソースについてキャッシングはディセーブルにされ初期化プロセスは停止する。不正確なＩＭＳ応答の発生率は、当該データが要求される度に、しきい値に対してチェックされてよい。
【００３３】
さらに他の実施形態では、キャッシュ候補のセットは、手動で修正することができる。別の実施形態では、１つまたは複数の所定の基準に従うデータ・ソースのみが、キャッシュ候補として選択される。さらに他の実施形態では、初期化段階は、キャッシュされないものとして指定されたデータ・ソース、すなわち、非キャッシュ・ディレクティブまたはポリシに関連するデータ・ソースに適用される。
【００３４】
別の実施形態では、初期化段階は、時間期間のみに左右される。さらに他の実施形態では、初期化段階は、データ・リソースを求める要求のしきい値数のみに左右される。別の実施形態では、不正確なＩＭＳ応答のしきい値発生率は、当該データ・ソースを求める要求の総数に比例する。さらに他の実施形態では、不正確なＩＭＳ応答のしきい値発生率は、当該データ・ソースについての不正確なＩＭＳ応答のレートを含む。
【００３５】
さらに他の実施形態では、キャッシュ・マネージャは、所定の性能基準が満たされるのに応答して、前にディセーブルにされたデータ・ソースのキャッシングを再度イネーブルにするように構成される。キャッシングを再度イネーブルにするための性能基準は、キャッシングをディセーブルにするための性能基準と同じとすることができる。例えば、所与のデータ・ソースのキャッシングは、データが１分よりも長く不変のままである場合に再度イネーブルにすることができる。再度イネーブルにされたキャッシュ候補は、さらに初期化段階にかけられてよい。
【００３６】
別の実施形態では、所定の性能基準は、所与の期間中のリソース要求の総数に対する所与のデータ・ソースの変化の比率を含む。
【００３７】
当業者には理解されるであろうが、本発明の所与の応用例に適する任意の性能基準を指定することができる。例えば、実質的に無限の時間期間を含めて、任意の時間期間を性能測定において指定することができる。言い換えれば、性能基準は、キャッシュがセットアップされてからの、リソースの変化の総数、または、リソースを求める要求の数に対する変化の比率を含んでよい。
【００３８】
さらに他の実施形態では、キャッシュ・マネージャは、データが変化していないことをデータ・ソースに対してチェックした後でデータをキャッシュから取り出す場合のサイズまたは速度と比較した、データをデータ・ソースに要求する場合のサイズまたは速度を測定するように構成される。要求されたデータ・セットが比較的小さい場合、または、キャッシュ済みデータの取出しと比較してデータ・ソースからの応答が比較的速い場合、あるいはこの両方の場合は、当該データ・ソースのキャッシングをディセーブルにすることができる。このようなチェックは、キャッシュのセットアップ時に、またはキャッシュの動作中に定期的に、実施することができる。
【００３９】
当業者には理解されるであろうが、データ・ソースが修正されたかどうかを判定するための他の任意の適切なメカニズムを提供することができる。このような他のメカニズムは、所与のデータ通信プロトコル内で提供されてもよく、またはそうしたどんなプロトコルからも独立して提供されてもよい。
【００４０】
当業者には理解されるであろうが、データ・ソースは、ＵＲＬもしくはユニバーサル・リソース識別子（ＵＲＩ）、またはいずれか他の適切な識別子、ロケータ、ファイル名、もしくはファイル・パスなど、任意の適切な手段によって参照または識別されてよい。
【００４１】
当業者には理解されるであろうが、キャッシュは、データのローカル・コピーを記憶することが、元のソースからのそのようなデータにアクセスすることと比較して有益であるような、任意のタイプのデータを記憶するのに使用することができる。キャッシュの使用は、ウェブ・ページ・データに限定されない。
【００４２】
当業者には理解されるであろうが、本発明の実施形態は、アプリケーション層、トランスポート層、ネットワーク層、または他の層におけるいずれか他の適切な通信プロトコル（ファイル転送プロトコル（ＦＴＰ）、インスタント・メッセージ・アクセス・プロトコル（ＩＭＡＰ）、または伝送制御プロトコル（ＴＣＰ）など）を使用して実施することもできる。
【００４３】
当業者には理解されるであろうが、プロキシ・サーバ・アプリケーション・プログラムおよびそれに関連するキャッシュは、ネットワーク中で、クライアント・コンピュータとサーバ・コンピュータとの間、またはクライアント・コンピュータ上もしくはサーバ・コンピュータ上の、任意の地点に位置することができる。
【００４４】
本発明の実施形態は、所与のデータ・ソースのキャッシングが有益となるかどうかを自動的に決定することを可能にする。実施形態は、非キャッシュ・ディレクティブに逆らって、通常ならキャッシュされないデータ・ソースを有益にキャッシュするように構成されてよい。本発明の実施形態は、データ・ソースの１つまたは複数が動的な内容を含む場合であって、ＩＭＳ応答が不正確である可能性がある場合に、適用されてよい。
【００４５】
本発明の一部または全部を具体化する装置は、本発明の実施形態の一部または全部を提供するように構成されたソフトウェアを有する汎用デバイスであってよいことは、当業者には理解されるであろう。このデバイスは、単一のデバイスまたは一群のデバイスとすることができ、ソフトウェアは、単一のプログラムまたは１組のプログラムとすることができる。さらに、本発明を実施するのに使用されるソフトウェアのいずれかまたは全ては、ソフトウェアを１つまたは複数のデバイスにロードできるように、任意の適切な伝送手段または記憶手段を介して通信されてよい。
【００４６】
本発明をその実施形態の記述によって例示し、また実施形態をかなり詳細に述べたが、添付の特許請求の範囲をこのような詳細に制限するかまたはいかなる形でも限定することは出願人の意図ではない。追加の利点および修正も当業者には容易に明らかであろう。したがって、本発明は、そのより広範な態様では、代表的な装置および方法の具体的詳細、ならびに図示および記述した例示的な例に限定されない。よって、出願人の一般的な発明概念の範囲を逸脱することなく、このような詳細から逸脱してもよい。
【００４７】
当業者には理解されるであろうが、本発明の態様は、システム、方法、コンピュータ・プログラム製品、またはコンピュータ・プログラムとして具体化することができる。したがって、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、または、ソフトウェアとハードウェアの態様を組み合わせた実施形態の形をとることができ、本明細書ではこれらは全て「回路」、「モジュール」、または「システム」と一般に呼ばれる場合がある。さらに、本発明の態様は、コンピュータ可読プログラム・コードが組み入れられた１つまたは複数のコンピュータ可読媒体において具体化されるコンピュータ・プログラム製品の形をとることもできる。
【００４８】
１つまたは複数のコンピュータ可読媒体の、任意の組合せを利用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体とすることができる。コンピュータ可読記憶媒体は、例えば、電子、磁気、光学、電磁、赤外線、もしくは半導体の、システム、装置、もしくはデバイス、またはこれらの適切な組合せとすることができるが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例（非網羅的なリスト）は、１つもしくは複数のワイヤを有する電気接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、消去可能プログラム可能な読取専用メモリ（ＥＰＲＯＭもしくはフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読取専用メモリ（ＣＤ−ＲＯＭ）、光学記憶デバイス、磁気記憶デバイス、またはこれらの任意の適切な組合せを含むことになる。この文書のコンテキストでは、コンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによって使用されるかまたはそれらに関連して使用されるプログラムを、収録または記憶することのできる、任意の有形媒体とすることができる。
【００４９】
コンピュータ可読信号媒体は、例えばベースバンド中にまたは搬送波の一部として、コンピュータ可読プログラム・コードが組み入れられた伝搬データ信号を含んでよい。このような伝搬信号は、電磁、光学、またはこれらの任意の適切な組合せを含めた（ただしこれらに限定されない）様々な形のいずれかをとることができる。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体でない任意のコンピュータ可読媒体であって、命令実行システム、装置、もしくはデバイスによって使用されるかまたはそれらに関連して使用されるプログラムを、通信または伝搬または搬送できる、任意のコンピュータ可読媒体とすることができる。
【００５０】
コンピュータ可読媒体上に組み入れられたプログラム・コードは、ワイヤレス、有線、光ファイバ・ケーブル、ＲＦなど、またはこれらの任意の適切な組合せを含めた（ただしこれらに限定されない）、任意の適切な媒体を使用して伝送することができる。
【００５１】
本発明の態様に関する動作を実施するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および、「Ｃ」プログラミング言語または類似のプログラミング言語などの従来の手続き型プログラミング言語を含めた、１つまたは複数のプログラミング言語の任意の組合せで書かれてよい。プログラム・コードは、スタンドアロンのソフトウェア・パッケージとして、完全にユーザのコンピュータ上で実行されるか部分的にユーザのコンピュータ上で実行されるか、一部はユーザのコンピュータ上で実行され一部はリモート・コンピュータ上で実行されるか、または完全にリモート・コンピュータもしくはサーバ上で実行されてよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくはワイド・エリア・ネットワーク（ＷＡＮ）を含めた任意のタイプのネットワークを介してユーザのコンピュータに接続されてよく、または、接続は、外部コンピュータに対して（例えばインターネット・サービス・プロバイダを使用してインターネットを介して）行われてもよい。Ｊａｖａ（Ｒ）、ならびに全てのＪａｖａ（Ｒ）ベースの商標およびロゴは、Ｏｒａｃｌｅまたはその関連会社あるいはその両方の、商標または登録商標である。
【００５２】
本発明の態様を、本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート説明またはブロック図あるいはその両方に関して以上に述べた。フローチャート説明またはブロック図あるいはその両方の各ブロック、ならびに、フローチャート説明またはブロック図あるいはその両方の中のブロックの組合せを、コンピュータ・プログラム命令によって実現できることは理解されるであろう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供して、マシンを生み出すことができ、したがって、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行される命令は、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロック中で指定される機能／行為を実現する手段をもたらす。
【００５３】
これらのコンピュータ・プログラム命令はまた、コンピュータ可読媒体に記憶されてよく、このコンピュータ可読媒体は、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに、特定の方式で機能するよう指示することができ、したがって、コンピュータ可読媒体に記憶された命令は、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロック中で指定される機能／行為を実現する命令を含む製造品を生み出す。
【００５４】
コンピュータ・プログラム命令はまた、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードされてよく、それにより、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップが実施されて、コンピュータ実装プロセスが生み出され、したがって、コンピュータまたは他のプログラム可能装置上で実行される命令は、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロック中で指定される機能／行為を実現するためのプロセスを提供する。
【００５５】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態の、アーキテクチャ、機能、および動作を示す。これに関して、フローチャートまたはブロック図中の各ブロックは、モジュール、セグメント、またはコード部分を表すことができ、これは、指定される論理機能を実現するための１つまたは複数の実行可能命令を含む。また、いくつかの代替実装形態では、ブロック中で示される機能は、図中で示される順序とは異なる順序で生じる場合があることにも留意されたい。例えば、関連する機能に応じて、連続して示される２つのブロックが実際にはほぼ同時に実行される場合もあり、またはこれらのブロックが逆の順序で実行されることもある。また、ブロック図またはフローチャート説明あるいはその両方の各ブロック、および、ブロック図またはフローチャート説明あるいはその両方の中のブロックの組合せは、指定される機能もしくは行為を実施する専用ハードウェアベースのシステムによって、または、専用ハードウェアとコンピュータ命令との組合せによって、実現されてよいことにも気付くであろう。疑念を避けるために、この記述および特許請求の範囲の全体にわたり本明細書で使用される用語「含む、備える（comprising）」は、「〜のみからなる」という意味に解釈されるべきではない。
【図１】
0005980430.tif 000002
【図２】
0005980430.tif 000003
【図３】
0005980430.tif 000004
【図４】
0005980430.tif 000005