(57)【特許請求の範囲】
【請求項１】
コンピュータ・システムに、オブジェクトを管理する下記方法を実行させるコンテンツを有するコンピュータ読み取り可能媒体であって、
現在のバージョンのオブジェクトが、失効した最短ライフタイムに関連することを決定し、
ランダムに、又は、擬似ランダムに或る範囲の数を選択し、
もし、選択された数が前記範囲内の一致性チェックの閾値を満足するなら、そのエントリの一致性チェックをし、
キャッシュされたバージョンのオブジェクトが、ソースによって供給された現在のバージョンのオブジェクトとは異なるという、ピア計算装置からの決定に相応する通知を取得し、前記通知は、前記オブジェクトのバージョンを示唆するダイジェストを含み、
前記取得した通知における前記オブジェクトの前記バージョンと、前記キャッシュされたバージョンのオブジェクトと、の比較に基づき、アップデートされたバージョンのオブジェクトを求めて、前記ソースに対し、要求を伝達するか否かを決定し、
もし、前記ダイジェストがキャッシュされたバージョンのオブジェクトに一致するなら、キャッシュされたバージョンのオブジェクトに関連する最短ライフタイムをリセットし、
もし、選択された数が前記範囲内の一致性チェックの閾値を満足しないなら、そのエントリの一致性チェックをしないことを決定する、
ことを特徴とするコンピュータ読み取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
ここで記述される技術は、データの要求を処理する分野に関する。
【背景技術】
【０００２】
キャッシュイングは、一般的に、データにアクセするストリームラインに対する遠方のソースから入手したデータのローカルの記憶のことである。図１は、データをキャッシュイングするための典型的なアーキテクチャーを示すネットワーク・ダイアグラムである。この図は、データ・プロバイダー１１０，１２０，１３０のような多数のデータ・プロバイダーを示しており、各プロバイダーは、多数のデータ・コンシューマー・ノードにデータを提供する。例えば、データ・プロバイダー１１０は、コンシューマー１１２，１１３を含むコンシューマーにデータを提供する。各データ・プロバイダーは、更に、ローカル・キャッシュを有する。例えば、プロバイダー１１０は、ローカル・キャッシュ１１１を有する。データ・プロバイダーが、そのコンシューマーの一人から最初のデータ要求を受けたとき、データ・プロバイダーは、その最初のデータ要求がキャッシュからのもので満足されるか否かを調べるために、ローカル・キャッシュをチェックしに行く。もし満足するなら、プロバイダーは、キャッシュ・コンテンツに基づいたレスポンスを使用して、その最初のデータ要求に応答する。もし満足しないのであれば、プロバイダーは、（１）正式のデータ・ソースに対し第２のデータ要求を発行し、（２）その第２のデータ要求に応答して正式のデータ・ソースによって提供されたデータに基づいたレスポンスを使用して最初のデータ要求に応答し、（３）将来の最初のデータ要求を満足させるため使用するように、ローカル・キャッシュの中のエントリとして、第２のデータ要求に応答して正式データ・ソースによって提供されたデータを記憶する。幾つかのケース（示されていない）では、複数のプロバイダーが、同じキャッシュを共有していている。幾つかのケース（示されていない）では、キャッシュが、キャッシュ自身を管理しても良い、又は、データ・プロバイダー以外のものによって管理されていてもよい。
【０００３】
一例として、各データコンシューマは、ウエブ・サーバーであるデータ・プロバイダーから、ウエブ・ページまたは他のリソースを要求するウエブ・クライアントであってもよい。データ・ソースは、データを提供する、中央データ・ストアまたはサービスであってもよく、それらのストアやサービスは、ウエブ・クライアントによって要求されたウエブ・ページや他のリソースをウエブ・サーバーに作らせるためのデータを提供する。そのようなローカル・キャッシュを使用したアーキテクチャーは、２００５年７月８日に出願された米国特許出願番号11/177206に記載されており、その出願はここでは全部参考として協働される。その代わりとして、データ・プロバイダーは、１又は複数のウエブ・クライアントまたはウエブ・サーバーのためである、プロキシ・サーバーまたは他の中間のキャッシュ（ウエブ・クライアントが実行する同じコンピュータ・システムに記憶されたキャッシュのような、）であってもよい。
【０００４】
上述したような環境においてデータのキャッシュイングによって提供される効率のレベルは、各キャッシュがどのように管理されているかに強く依存している。特に、キャッシュによって使用されるベイシス(basis）、および／又は、キャッシュ・エントリに記憶された或るバージョンのデータを最初の要求を満足するためにどのくらい長く使用すべきかを決定するデータ・プロバイダーに強く依存する。
【０００５】
キャッシュ・エントリの新鮮さを維持するための従来のスキームは、酷い欠点を有していた。第１の従来のスキームは、各キャッシュ・データ・オブジェクトのためのオブジェクトのライフタイムの使用であり、ライフタイム(寿命）とは、オブジェクトを有するエントリを失効する前の、データ・オブジェクトがキャッシュの中に維持されている最大時間量のことである（ときどき、オブジェクトの"生存時間"として言及される）。このスキームでは、データ・オブジェクトを供給するデータ・ソースが、そのデータ・オブジェクトに対するそのような期間を割り当てるか、または、データ・プロバイダーがその期間を割り当てる。データ・オブジェクトを有するキャッシュ・エントリにキャッシュが追加されると、そのエントリの失効時間を確立するため、現在時間(current time）に前記割り当てられた期間が加算される。エントリの失効時間が過ぎた後は、エントリは失効され、エントリはもはやキャッシュから復元されることはなく、そのキャッシュが占有していたスペースは、新しいキャッシュ・エントリのために再要求される。
【０００６】
良い結果を生むオブジェクトのライフタイムを選択することはしばしば難しい。一方、オブジェクト・ライフタイムを余りに長く選択すると、キャッシュされたオブジェクトは、"新鮮でない"になる。即ち、そのキャッシュされたオブジェクトを提供したオブジェクト・ソースが新しい第２のデータ要求に応答して提供するオブジェクトと、そのキャッシュされたオブジェクトはもはやマッチしないものとなる。そして、それはデータ・コンシューマーを要求することに対し余り有用ではない。一方、オブジェクト・ライフタイムが余りに短く選択されると、キャッシュされたオブジェクトが最初のデータ要求を満足させるために使用されるだろう見込みは低く、オブジェクトをキャッシュイングする利点がなくなる。
【０００７】
キャッシュ・エントリの新鮮さを維持するための第２の従来の技術は、明示の無効を使用することを含んでいる。明示の無効とは、データ・ソースによってデータ・プロバイダーに送られる通知であり、その通知は、第２のデータ要求に応答してデータ・ソースが提供するオブジェクトのバージョンを変化させたことを決定する時の通知と、そして、データ・ソースによって提供された、それより古く提供されたバージョンのキャッシュされたオブジェクトが新鮮ではないということの通知とである。データ・プロバイダーは、データ・ソースから明示の無効の通知を受け取ると、もし、関連するオブジェクトがキャッシュに含まれているなら、直ちにそのキャッシュから関連するオブジェクトを失効する。
【０００８】
前記明示の無効は、オブジェクトのライフタイムのスキームに関連する欠点を克服する能力を有する一方、オブジェクトのライフタイムのスキームは、実質的処理および／または通信リソースを消費するという欠点を抱えている。第一に、オブジェクト内の変更を検出し、明示の無効を送ることは、データ・ソースの一部において大きな処理エネルギーを消費する。一旦データ・ソースがこの変更を検出してしまうと、それは、（１）全てのデータ・プロバイダーに明示の無効を送信し、その結果、明示の無効を運ぶために大きなネットワーク・バンド幅を招き、その明示の無効に反応するための膨大なデータ・プロバイダーの処理コストを招く、又は、（２）どのデータ・プロバイダー達が古いバージョンのキャッシュ・データを最も有している可能性が高いかを決定するための追加の処理および記憶リソースを消費し、これらのデータ・プロバイダーのみに明示の無効を送る。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】米国特許出願番号11/177206
【発明の概要】
【発明が解決しようとする課題】
【００１０】
キャッシュ・エントリを無効にする従来技術のこれらの欠点を克服するキャッシュ・エントリの新鮮さを維持するアプローチは、非常な有用性を有するであろう。
【図面の簡単な説明】
【００１１】
【図１】図１は、データをキャッシュイングするための典型的なアーキテクチャーを示すネットワーク・ダイアグラムである。
【図２】図２は、少なくともいくつかのコンピュータ・システムにおいて協働するいくつかのコンポーネントと、その設備が実行する他のデバイスとを示すブロック・ダイアグラムである。
【図３】図３は、その設備の作用を示す時系列ダイアグラムである。
【図４】図４は、最初の要求に応答する間、キャッシュを維持するためにその設備によって典型的に実行されるステップを示すフロー・ダイアグラムである。
【図５】図５は、図４において引き起こされる第２の要求ルーティンの作成の一部として、その設備によって典型的に実行されるステップを示すフロー・ダイアグラムである
【図６】図６は、図４において引き起こされるキャッシュのアップデートのルーティンの一部として、その設備によって典型的に実行されるステップを示すフロー・ダイアグラムである。
【図７】図７は、図４において引き起こされる一致性のチェックおよびピア・コーディネーションのルーティンの一部として、その設備によって典型的に実行されるステップを示すフロー・ダイアグラムである。
【発明を実施するための形態】
【００１２】
確率的な、キャッシュ・エントリの一致性のチェックを実行するためのソフトウエア機能（"該機能"）について記述する。該ソフトウエア機能は、各エントリのために確立されるべき２つの時間量を認める。その時間量とは、エントリがキャッシュに存在し、尊重されている（−明らかに無効でないなら−）最小量の時間を特定する最短のライフタイム、および、エントリが尊重されている最大量の時間を特定する最長ライフタイムである。もし、キャッシュ・エントリを使用して満足できる最初の要求が、最短ライフタイムが失効される前の時間に成されるなら、該ソフトウエア機能は最初のデータ・エントリを満足させるためにそのキャッシュ・エントリを使用する。もし、キャッシュ・エントリを使用して満足できる最初の要求が、最長ライフタイムが失効してしまった後の時間に成されるなら、最初のデータ要求を満足させるため第２のデータ要求をデータ・ソースに対し発行し、そして、第２のデータ要求の結果を反映させるためそのキャッシュをアップデートする。しかし、もし、キャッシュ・エントリを使用して満足できる最初の要求が、最短ライフタイムが失効された後であるが、最大ライフタイムに届く前に成されたなら、該ソフトウエア機能は、キャッシュ・エントリを使用するか、または、第２のデータ要求を発行することによって、キャッシュされたオブジェクトの一致性チェックをするかを、確率的に決定する。特に、該ソフトウエア機能はランダムな数または擬似ランダムな数を発生し、そのオブジェクトのために決定された確率的閾値とそれとを比較する。もし、ランダムな数がその確率的閾値を超えたなら、該ソフトウエア機能はキャッシュ・エントリを使用し、それと反対に、ランダムな数がその確率的閾値を超えなかったら、該ソフトウエア機能は最初のデータ要求を満足させるためデータ・ソースに対し第２のデータ要求を発行し、そして、第２のデータ要求の結果を反映したキャッシュをアップデートする。
【００１３】
幾つかの実施例では、該ソフトウエア機能が最初のデータ要求を満足させるため新しい第２のデータ要求を発行し、該ソフトウエア機能がキャッシュされた結果と新しい第２のデータ結果とを比較する。もし、これらが異なれば、該ソフトウエア機能は他のキャッシュの管理者に、相応するオブジェクトのために有している如何なるエントリも無効にするよう通告する。幾つかの実施例では、該ソフトウエア機能はその通告の中にその新しい結果を含む。幾つかの実施例では、送り手がそのオブジェクトのためにキャッシした値（value）を無効にするか、又は、異なる値にするかを、受け手のキャッシュ管理者が効果的に決定できる無効キャッシュ・エントリのためのダイジェストを、該ソフトウエア機能はその通告の中に含ませる。
【００１４】
上述した幾つかの又は全ての方法において、該ソフトウエア機能の実施例は、過度なレベルのリソースを消費することなく、素晴らしいキャッシュ・パフォーマンスを提供する。
【００１５】
図２は、該ソフトウエア機能が実行されるコンピュータ・システムおよび他のデバイスの少なくとも幾つかの中で典型的に協働するコンポーネントの幾つかを示すブロック・ダイアグラムである。これらのコンピュータ・システムおよびデバイス２００は、コンピュータ・プログラムを実行するための１または複数の中央演算装置（ＣＰＵｓ）２０１、プログラムやデータが使用されている間、それらを記憶するためのコンピュータ・メモリ２０２，プログラムやデータを永続的に記憶するハードドライブのような永続記憶装置（persistent storage device）２０３，コンピュータ読み取り可能媒体に記憶されたプログラムやデータを読むための、ＣＤ−ＲＯＭのようなコンピュータ読み取り可能媒体２０４、および、インターネットを介するような、コンピュータ・システムと他のコンピュータ・システムとを結ぶためのネットワーク・コネクション２０５を有している。上述したような構成のコンピュータ・システムが該ソフトウエア機構の動作をサポートするために典型的に用いられるが、この分野の当業者であれば、該ソフトウエア機能が、色々なタイプの装置や構成を用いて、色々なコンポーネントを有して、実行できることは理解できる。
【００１６】
図３は、該ソフトウエア機能の動作を示す時系列ダイアグラムである。このダイアグラムは、時間が右方向に経過する時系列３００を示している。時刻ゼロで、オブジェクトが該ソフトウエア機能によって管理されているキャッシュに追加される。この時刻において、２つのライフタイムがこのオブジェクトのために確立される。最短ライフタイム３１０、ここでは１０分、そして、最長ライフタイム３２０、ここでは３０分である。これらのライフタイムの期間の特定は、色々な方法で構成される。例えば、手動で、個々のオブジェクトのために、オブジェクトのタイプのために、全てのオブジェクトのために設定されるか、または、自動的に、プログラムされたロジックで設定される。最短ライフタイムは、オブジェクトがキャッシュに追加される時刻に、オブジェクトのために決定された最短ライフタイム期間を加算することによって得られる時刻に失効するといえる。同じように、最長ライフタイムは、オブジェクトがキャッシュに追加された時刻に、オブジェクトのために決定された最長ライフタイム期間を加算することによって得られる時刻に失効するといえる。いくつかの実施例では、或る状況下では、例えば、新しい第２の要求が、キャッシュされたバージョンのオブジェクトにマッチするバージョンのオブジェクトを戻すような状況下では、該ソフトウエア機能は、オブジェクトの２つのライフタイムを後で延長する。
【００１７】
最初の要求をオブジェクトの最短ライフタイム内に受け取ったなら、そのオブジェクトを要求に応答して、該ソフトウエア機能は、その最初の要求に応えるために、キャッシュからそのバージョンのオブジェクトを無条件で使用することを、このダイアグラムは示している。この図は更に、そのような要求を、キャッシュされたオブジェクトの最長ライフタイムが失効してしまった後で受け取ったなら、該ソフトウエア機能は、新しいバージョンのオブジェクトを得るために、第２の要求を無条件で発行する。しかし、そのような最初の要求を、最短ライフタイムが失効した後で、かつ、最長ライフタイムが失効する前に受け取ったなら、該ソフトウエア機能は、そのキャッシュされたバージョンのオブジェクトを使用するか、または、オブジェクトのための第２の要求を作成するかを、確率的に決定する。特に、該ソフトウエア機能は、キャッシュされたオブジェクトが一致性のチェックを受けるべきであるという構成可能な確率値を、０％と１００％との間で表される確率の範囲で、例えば、０と１の間の範囲の１０％のように、探す。そして、それは、この範囲でランダムな数を作成し、その数とこの確率閾値とを比較する。もし、このランダムな数が確率閾値以下なら、該ソフトウエア機能はキャッシュされたオブジェクトの一貫性チェックをし、そうでなければ、該ソフトウエア機能はキャッシュされたオブジェクトを使用する。或る実施例では、この確率閾値は各オブジェクトのために、又は全てのケースに渡って固定される。或る実施例では、１つ又はそれ以上のオブジェクトのための確率閾値は変化する。例えば、確率閾値は、オブジェクトの最短ライフタイムの失効から最長ライフタイムの失効までの期間に亘って増加する、又は、この期間に亘って減少するように変化する。
【００１８】
図４は、最初の要求に応えている間、キャッシュを管理するために、該ソフトウエア機能によって典型的に実行されるステップを示すフロー・ダイアグラムである。ステップ４０１において、該ソフトウエア機能は上述したように最初の要求を受け取る。ステップ４０２では、該ソフトウエア機能は、ステップ４０１で受け取った最初の要求に応えるために必要とされるオブジェクトを識別する。いくつかのケースでは、唯一つのオブジェクトが、最初の要求に応えるために必要とされる。それは、最初の要求内で明白に識別されるかもしれない。他のケースでは、最初の要求に応えるためにどのオブジェクトが必要とされるかを決定するために、ウエブ・ページのような、外部ソースを該ソフトウエア機能は使用しなければならない。ステップ４０３−４１３では、該ソフトウエア機能は、ステップ４０２で識別された各オブジェクトを介してループを構成する。ステップ４０４では、もし、現在のオブジェクトのバージョンがキャッシュに含まれており、かつ、このキャッシュ・エントリが失効していない最短ライフタイムを有しているなら、該ソフトウエア機能は、ステップ４０５に進み、そうでないなら、ステップ４０６に進む。ステップ４０５では、該ソフトウエア機能は、ステップ４０１で受け取った最初の要求に対する応答を作成するときにオブジェクトのキャッシュされたバージョンを使用する。ステップ４０５の後、該ソフトウエア機能はステップ４１３に進む。
【００１９】
ステップ４０６では、もし、失効した最短ライフタイムを有しながら、失効していない最長ライフタイムを有するエントリ内に、或るバージョンのオブジェクトを、キャッシュが有しているなら、該ソフトウエア機能はステップ４０７に進み、そうでなければ、ステップ４０９に進む。ステップ４０７では、該ソフトウエア機能は、０と１の間の範囲のような範囲で、ランダムな数を決定する。ステップ４０８では、もし、ステップ４０７で決定されたランダムな数が、一致性チェックの確率閾値と等しい又は以下であるならば、該ソフトウエア機能は、キャッシュ・エントリの一致性チェックに相応する一連のステップを実行するためにステップ４１１に進み、そうでなければ、キャッシュされたバージョンのオブジェクトを使用するためにステップ４０５に進む。
【００２０】
ステップ４０９では、該ソフトウエア機能は、最新のバージョンのオブジェクトを検索するために、図５に関連して以下に論じる、第２の要求の作成のルーティンを引き起こす。ステップ４１０では、該ソフトウエア機能は、第２の要求に応えるために戻されたそのバージョンのオブジェクトを含むためキャッシュを最新化するために、図６に関連して以下に論じる、キャッシュをアップデートするルーティンを引き起こす。ステップ４１０の後、該ソフトウエア機能はステップ４１３に進む。
【００２１】
ステップ４１１では、該ソフトウエア機能は、前記第２の要求の作成のルーティンの作成を引き起こす。ステップ４１２では、該ソフトウエア機能は、ステップ４１１で作成された第２の要求の結果と、キャッシュに記憶されたバージョンとを比較するために、図７と関連して以下に論じられる、一致性チェックとピア協力のルーティンを引き起こし、もし、異なっていれば、該ソフトウエア機能は、このオブジェクトのためのキャッシュ・エントリは失効してしまっているという指示を、ピアキャッシュに提供する。ステップ４１２の後、該ソフトウエア機能はステップ４１０に進む。
【００２２】
ステップ４１３では、もし、追加の識別されたオブジェクトが処理されるために残っているなら、該ソフトウエア機能は、次の識別されたオブジェクトを処理するためにステップ４０３に進み、そうでなければ、ステップ４１４に進む。ステップ４１４では、該ソフトウエア機能は、キャッシュされた、および／又は、無効にされたオブジェクトを使用して構築された最初の要求に対する応答を、最初の要求を送った者に送る。ステップ４１４の後、該ソフトウエア機能は、次の最初の要求を受け取るためにステップ４０１に進む。
【００２３】
当業者であれば、図４および以下論じられる各フロー・ダイアグラムで示されるステップが色々な方法に変更できることは理解できる。例えば、ステップの順序は再アレンジされてもよい。いくつかのステップは、並列で実行されても良い。示されたステップがオミットされてもよいし、または、他のステップが含まれても良い。ステップが、より大きい又は小さいレベルの細分化で実行されても良いなどである。
【００２４】
図５は、図４で引き起こされた第２の要求の作成のルーティンの一部として、該ソフトウエア機能によって典型的に実行されるステップを示している。ステップ５０１において、該ソフトウエア機能は、そのオブジェクトのために、適切なデータ・ソースに対し、第２の要求を発行する。ステップ５０２では、ステップ５０１で発行された第２の要求に対する、データ・ソースからそれが送られた所への応答を、該ソフトウエア機能は受け取る。幾つかの実施例では、ステップ５０２は、ステップ５０１とは非同期で、イベント発生方式で実行され、第２の要求に対する応答の到着によってトリガーされる。ステップ５０２後、第２の要求の作成のルーティンは、戻る。
【００２５】
図６は、図４で引き起こされたキャッシュのアップデートのルーティンの一部として、該ソフトウエア機能によって典型的に実行されるステップのフロー・ダイアグラムを示している。ステップ６０１では、該ソフトウエア機能は、オブジェクトからのエントリをローカル・キャッシュからリムーブする、もし、そこに存在するなら。ステップ６０２では、該ソフトウエア機能は、第２の要求に対する応答に含まれるそのバージョンのオブジェクトのために、エントリをローカル・キャッシュに追加する。該ソフトウエア機能は、エントリがキャッシュに追加された時刻に基づいた、追加されたエントリの為の新しい最短および最長ライフタイムを典型的には確立する。オブジェクトがキャッシュの中に存在する、幾つかの実施例では、該ソフトウエア機能は、現存するエントリを取り去り、新しいエントリを追加するよりもむしろ、現存するキャッシュ・エントリを単にアップデートするために、ステップ６０１と６０２とを結合する。ステップ６０３では、該ソフトウエア機能は、最初の要求に対する応答を作るときに、第２の要求に対する応答に含まれるそのバージョンのオブジェクトを使用する。ステップ６０３後、該ソフトウエア機能は、無効オブジェクトルーティンから戻る。
【００２６】
図７は、図４で引き起こされた一致性チェックとピア協働ルーティンの一部として、該ソフトウエア機能によって典型的に実行されるステップを示すフロー・ダイアグラムである。ステップ７０１では、もし、第２の要求に対する応答に含まれるそのバージョンのオブジェクトが、キャッシュされたバージョンのオブジェクトと一致しないなら、該ソフトウエア機能はステップ７０２に進み、一致するならば、該ソフトウエア機能は、一致性チェックとピア協働ルーティンから戻る。
【００２７】
ステップ７０２では、該ソフトウエア機能は、ピアキャッシュの管理者（マネジャー）に無効の通知を送る。幾つかの実施例では、該ソフトウエア機能は、現在のキャッシュのためのデータ・プロバイダーから各ピアキャッシュのためのデータ・プロバイダーへ無効の通知を送る。幾つかの実施例では、このキャッシュのためのデータ・プロバイダーが、無効の通知を、無効の通知のための中央交換所に送る。その交換所は、各ピアキャッシュのためのデータ・プロバイダーへ無効の通知を転送するか、または、一部または全てのピアキャッシュのためのデータ・プロバイダーによる修復に利用する無効の通知を作る。幾つかの実施例では、無効の通知は、オブジェクト識別子のようなオブジェクトを識別するための情報、又は、適切なデータソースからのオブジェクトを入手するために使用される第２の要求の他のコンテンツ、又は、キャッシュ内のオブジェクトを識別するために使用されるキャッシュ・キーのみを含む。無効の通知を受け取るキャッシュ管理者（マネジャー）は、自身のキャッシュから一致するエントリを取り去る、または、適切なデータ・ソースに対しオブジェクトのための自身の第２の要求を発行することによってそのようなエントリをリフレッシュする。幾つかの実施例では、無効の通知は、第２の要求に応答して受け取った新しいバージョンのオブジェクトのコピーを含む。幾つかの実施例では、無効の通知を受け取ったピアキャッシュ管理者は、自身のキャッシュの中でこの新しいバージョンのオブジェクトを取り替え、幾つかの実施例では、オブジェクトのためのオブジェクト・ライフタイムをリセットする。幾つかの実施例では、送られた無効の通知は、ＭＤ５ハッシュング・アルゴリズムのようなハッシュング・アルゴリズムを使用して作成されたダイジェストの表示（representation)のような、古いバージョンのオブジェクトのコンテンツの古いダイジェストの表示を含む。幾つかの実施例では、無効の通知を受けたピアキャッシュ管理者（マネジャー）は、もし、オブジェクト・コンテンツのダイジェストの表示が、それがキャッシュするバージョンのオブジェクトのダイジェストの表示と一致したなら、単にそれを処理する。幾つかの実施例では、送られた無効の通知は、第２の要求に応答して受け取った新しいバージョンのオブジェクトのダイジェストの表示を含む。そのような実施例では、無効の通知を受け取ったピアキャッシュ管理者は、新しい値（value）に含まれるダイジェストの表示が、自身のキャッシュの中のバージョンのオブジェクトのダイジェストの表示と一致しない場合、単に無効の通知を処理する。幾つかの実施例では、該ソフトウエア機能は、オブジェクトのサイズ、又は、オブジェクトの他の属性に基づき、無効の通知の特定のコンテンツを変化させる。一例として、或るサイズの閾値までは、該ソフトウエア機能は、無効の通知の中のオブジェクトの完全な表示を含み、その閾値以上の場合は、ダイジェストの表示を含む、又は、表示はない。ステップ７０２の後、該ソフトウエア機能は、一致性のチェックおよびピア協働ルーティンから戻る。
【００２８】
当業者であれば、上述したソフトウエア機能が素直に色々な具合に適用され、拡張されることを理解できる。例えば、該ソフトウエア機能は、色々な異なる構成における単一のキャッシュ又は複数のピアキャッシュ、または、サービスからの色々なタイプのキャッシュイング・データ、または、色々なタイプの他のデータ・ソースからの色々なタイプのキャッシュイング・データを管理するために使用される。ミリアド(Myriad）アプローチは、最短および最長ライフタイム期間および無効確率閾値を設定するために使用される。異なる技術が、ピアキャッシュ間の協力のために使用されてもよい。前述の記載は特定の実施例に対する参照であって、本発明の範囲は請求項によってのみ定義される。
【００２９】
以下、本出願の親出願（特願２００９−５２５７３３）の出願当初の特許請求の範囲を記載する。
[親出願の請求項１]
キャッシュを管理する方法であって、
或るオブジェクトに対する要求を受け取り、
もし、そのキャッシュがキャッシュされたバージョンのオブジェクトを有していないなら、そのオブジェクトに関連するソースから現在のバージョンのオブジェクトを入手し、
もし、そのキャッシュがキャッシュされたバージョンのオブジェクトを有していて、かつ、
もし、そのキャッシュされたバージョンのオブジェクトに属する最短ライフタイムが失効していないなら、受け取った要求に応答するためにそのキャッシュされたバージョンのオブジェクトを使用し、
もし、そのキャッシュされたバージョンのオブジェクトに属する最短ライフタイムが失効しているが、そのキャッシュされたバージョンのオブジェクトに属する最長ライフタイムが失効していないなら、現在のバージョンのオブジェクトを入手するか、又は、そのキャッシュされたバージョンのオブジェクトを使用するかを確率的に決定する、
ことを特徴とする方法。
[親出願の請求項２]
もし、前記キャッシュが、キャッシュされたバージョンのオブジェクトを有していないなら、
そのキャッシュに、入手された現在のバージョンのオブジェクトを記憶し、
現在のバージョンのオブジェクトに対し、現在のバージョンのオブジェクトがキャッシュに記憶された時刻に基づき、最短ライフタイムおよび最長ライフタイムを付属させ、
受け取った要求に応答するために現在のバージョンのオブジェクトを使用する、
ことを更に有する、請求項１記載の方法。
[親出願の請求項３]
前記そのキャッシュされたバージョンのオブジェクトを使用するかを確率的に決定することが、
或る範囲内のランダムな又は擬似ランダムな数を決定し、
その決定された数が前記範囲に関して決定された確率閾値を超えたなら、受け取った要求に応答するために、キャッシュされたバージョンのオブジェクトを使用し、
もし、そのキャッシュされたバージョンのオブジェクトに属する最長ライフタイムが失効したなら、又は、前記決定された数が前記確率閾値を超えなかったなら、
そのオブジェクトに関連するソースから現在のバージョンのオブジェクトを入手に応答して、
キャッシュに現在のバージョンのオブジェクトを記憶し、
現在のバージョンのオブジェクトに対し、現在のバージョンのオブジェクトがキャッシュに記憶された時刻に基づき、最短ライフタイムおよび最長ライフタイムを付属させ、
受け取った要求に応答するために現在のバージョンのオブジェクトを使用する、
ことを有する、請求項２記載の方法。
[親出願の請求項４]
もし、決定された数が前記確率閾値を超えないなら、
入手された現在のバージョンのオブジェクトが、キャッシュされたバージョンのオブジェクトと異なるか否かを決定し、
入手された現在のバージョンのオブジェクトが、キャッシュされたバージョンのオブジェクトと異なるなら、１またはそれ以上のピアキャッシュの管理者に無効の通知を送る、
ことを更に有する、請求項３記載の方法。
[親出願の請求項５]
請求項１ないし４いずれか１項記載の方法を実行するコンピュータプログラム。
[親出願の請求項６]
キャッシュ・エントリをチェックして一致するか否かを決定する方法をコンピュータ・システムに実行させる内容を有するコンピュータ読み込み可能な媒体であって、
前記方法が、
ランダムに、又は、擬似ランダムに或る範囲の数を選択し、
もし、選択された数が前記範囲内の一致性チェックの閾値を満足するなら、そのエントリの一致性チェックをし、
もし、選択された数が前記範囲内の一致性チェックの閾値を満足しないなら、そのエントリの一致性チェックをしないことを決定する、
ことを特徴とするコンピュータ読み込み可能な媒体。
[親出願の請求項７]
キャッシュ・エントリを管理するために使用されるキャッシュ管理データ構造を集合的に有する１又はそれ以上のメモリであって、
キャッシュ・エントリのための最短ライフタイムが失効する時刻を識別する情報と、
キャッシュ・エントリのための最長ライフタイムが失効する時刻を識別する情報と、を有し、
それは、キャッシュ・エントリがアクセスされた時刻が、最短ライフタイムの失効の前であるのか、または、最短ライフタイムの失効の後であるが、最長ライフタイムの失効の前であるのか最長ライフタイムの失効の後であるのかを決定し、
最短ライフタイムの失効前にアクセスされたなら無条件でキャッシュ・エントリを使用し、
最短ライフタイムの失効の後にアクセスされたが、最長ライフタイムの失効の前にアクセスされたなら、キャッシュ・エントリは確率的に一致性のチェックがされ、
最長ライフタイムの失効の後にアクセスされたなら、キャッシュは無条件で失効される、ことを特徴とする、１又はそれ以上のメモリ。
[親出願の請求項８]
前記データ構造が、キャッシュ・エントリが最短ライフタイムの失効の後であるが、最長ライフタイムの失効の前にアクセスされるとき、
ランダム又は擬似ランダムの値を作成し、
もし、その作成された値が、特定の一致性チェックの確率の値を超えないなら、そのキャッシュ・エントリに対し一致性のチェックをし、
もし、その作成された値が、特定の一致性チェックの確率の値を超えたなら、そのキャッシュ・エントリを使用する、
ことによって、キャッシュ・エントリが確率的に一致性のチェックをなされるように、
前記データ構造が一致性チェックの確率値を更に有する、請求項７に記載の１又はそれ以上のメモリ。
[親出願の請求項９]
第２の時刻に記憶された現存するコンテンツのキャッシュ・エントリを、第１の時刻に無効であるか否かを決定する装置であって、
第３の時刻を得るために、第２の時刻に、第１の時間間隔を加算する手段と、
第４の時刻を得るために、第２の時刻に、第１の時間間隔より長い第２の時間間隔を加算する手段と、
もし、前記第１の時刻が前記第３の時刻より前の時刻であるなら、キャッシュ・エントリの一致性のチェックをすること無しに、そのキャッシュ・エントリを使用することを決定する手段と、
もし、前記第１の時刻が前記第４の時刻より後の時刻であるなら、そのキャッシュ・エントリを失効する手段と、
もし、前記第１の時刻が前記第３の時刻と第４の時刻との間であるなら、ランダムに、又は、擬似ランダムに或る範囲の数を選択し、
もし、その選択された数が前記範囲内の一致性チェックの閾値を満足するなら、キャッシュ・エントリの一致性チェックをし、
もし、その選択された数が前記範囲内の一致性チェックの閾値を満足しないなら、キャッシュ・エントリの一致性チェックをすること無しに、そのキャッシュ・エントリを使用することを決定する手段と、
を有することを特徴とする装置。
[親出願の請求項１０]
第１の時刻を第３の時刻から第４の時刻へ先に延ばすことを反映して、一致性チェックの閾値を決定する手段を更に備えた、請求項９記載の装置。
[親出願の請求項１１]
前記キャッシュ・エントリのコンテンツに関連するソースから明白な無効の通知を受け取り完了したこと決定する手段と、
その決定に応答して、第１の時刻、第３の時刻、第４の時刻の間の関係に関係なく、前記キャッシュ・エントリを無効にする手段と、
を更に備えた、請求項９記載の装置。
[親出願の請求項１２]
前記キャッシュ・エントリの一致性チェックのための手段が、
キャッシュ・エントリのコンテンツに関連するソースから、現在のバージョンのキャッシュ・エントリのコンテンツを得るための手段と、
入手した現在のキャッシュ・エントリのコンテンツを、そのキャッシュ・エントリに記憶させる手段と、
を備えた請求項９記載の装置。
[親出願の請求項１３]
前記入手した現在のバージョンのキャッシュ・エントリのコンテンツを記憶する前に、入手した現在のバージョンのキャッシュ・エントリのコンテンツと、キャッシュ・エントリに存在するコンテンツとを比較する手段と、
前記入手した現在のバージョンのキャッシュ・エントリのコンテンツを記憶する前に、もし、入手した現在のバージョンのキャッシュ・エントリのコンテンツと、キャッシュ・エントリに存在するコンテンツとが異なるなら、ピアキャッシュの管理者に明白な無効を通知する手段と、
を更に備えた請求項１２記載の装置。
[親出願の請求項１４]
前記キャッシュ・エントリのコンテンツが或るデータのために或る値（value）を構成し、
その明白な無効の通知は、そのデータを識別するが、そのデータの或る値（value）の如何なる表示も含まない、請求項１３記載の装置。
[親出願の請求項１５]
無効の通知の受け取りに応答して、無効の通知によって識別されたデータのための値（value）を含むピアキャッシュのキャッシュ・エントリを、ピアキャッシュの管理者が無効にする、請求項１４記載の装置。
[親出願の請求項１６]
前記キャッシュ・エントリのコンテンツが或るデータのために或る値（value）を構成し、
前記無効の通知は、そのデータを識別し、かつ、キャッシュ・エントリの現在のコンテンツのダイジェストの表示を識別するが、そのデータの値（value）の完全な表示は含まない、請求項１３記載の装置。
[親出願の請求項１７]
ピアキャッシュの中のキャッシュ・エントリのコンテンツが、無効の通知によって含まれるダイジェストの表示と一致するダイジェストの表示を有する場合にのみ、ピアキャッシュの管理者は、無効の通知に応答して、無効の通知によって識別されたデータのための値（value）を含む、ピアキャッシュの中のキャッシュ・エントリを無効にする、請求項１６記載の装置。
[親出願の請求項１８]
前記キャッシュ・エントリのコンテンツが或るデータのために或る値（value）を構成し、
前記無効の通知は、そのデータを識別し、かつ、キャッシュ・エントリの入手した現在のバージョンのコンテンツのダイジェストの表示を識別するが、そのデータの値（value）の完全な表示は含まない、請求項１３記載の装置。
[親出願の請求項１９]
ピアキャッシュの中のキャッシュ・エントリのコンテンツが、無効の通知によって含まれるダイジェストの表示と異なるダイジェストの表示を有する場合にのみ、ピアキャッシュの管理者は、無効の通知に応答して、無効の通知によって識別されたデータのための値を含む、ピアキャッシュの中のキャッシュ・エントリを無効にする、請求項１８記載の装置。
[親出願の請求項２０]
前記キャッシュ・エントリのコンテンツが或るデータのために或る値（value）を構成し、
前記無効の通知は、そのデータを識別し、キャッシュ・エントリの入手した現在のバージョンのコンテンツの完全な表示を識別する、請求項１３記載の装置。
[親出願の請求項２１]
キャッシュ・エントリの入手した現在のバージョンのコンテンツのサイズに基づき、キャッシュ・エントリの入手した現在のバージョンのコンテンツの完全な表示を含ませるか否かを決定する手段を、更に備えた、請求項１３記載の装置。
[親出願の請求項２２]
キャッシュ・エントリのコンテンツに関連するソースから、キャッシュ・エントリの現在のバージョンのコンテンツを入手するために必要な時間量を決定する手段と、
決定された時間量に基づき、キャッシュ・エントリの入手された現在のバージョンのコンテンツの完全な表示を含ませるか否かを決定する手段と、
を更に含む請求項１３記載の装置。
[親出願の請求項２３]
キャッシュ・エントリのコンテンツに関連するソースから、キャッシュ・エントリの現在のバージョンのコンテンツを入手することに関連するコストに基づき、
キャッシュ・エントリの現在のバージョンのコンテンツの完全な表示を含ませるか否かを決定する手段を更に含む請求項１３記載の装置。
[親出願の請求項２４]
無効の通知の受け取りに応答して、無効の通知によって識別されたデータのための値（value）を含む、ピアキャッシュの中のキャッシュ・エントリを識別するための手段と、
無効の通知の受け取りに応答して、無効の通知に含まれる入手した現在のバージョンのコンテンツを、ピアキャッシュの識別されたキャッシュ・エントリの中に記憶させる手段とを、ピアキャッシュの管理者が有する、請求項２０記載の装置。
【図１】
0005631373.tif 000002
【図２】
0005631373.tif 000003
【図３】
0005631373.tif 000004
【図４】
0005631373.tif 000005
【図５】
0005631373.tif 000006
【図６】
0005631373.tif 000007
【図７】
0005631373.tif 000008