(57)【要約】  データをキャッシュすることに関する。本方法を、例えばデータをクライアントシステムに提供するサーバシステムを含むコンピューティング環境で実装することができる。サーバシステムはデータを格納するための多数のキャッシュを含む。本方法により、最小コストのキャッシュが、最初にデータをキャッシュするか、またはクライアントによって要求されたデータを返却することができる。本方法は、キャッシュにキャッシュすべきデータを受信することを含む。本方法はさらに、データが以前に先行キャッシュでキャッシュされていなかったことを判定することを含む。データが以前に先行キャッシュでキャッシュされていなかった場合、データをそのキャッシュにキャッシュする。あるいは、データ要求を第１のキャッシュで受信することができる。データが第１のキャッシュにある場合、第１のキャッシュはそのデータを返却する。データが第１のキャッシュにない場合、データ要求を後続キャッシュに転送する。
2009529183.tif 000002
【特許請求の範囲】
【請求項１】
データをクライアントシステムに提供するサーバシステムを含むコンピューティング環境において、前記サーバシステムはデータを格納するための複数のキャッシュを備え、最初に最小コストのキャッシュでクライアントによる要求データをキャッシュする方法であって、前記方法は、
キャッシュでキャッシュすべきデータを受信するステップと、
前記データが以前に先行キャッシュでキャッシュされていなかったことを判定するステップと、
前記データが以前にキャッシュされていなかったことを判定する前記ステップで判定がされるとき、前記データが以前に先行キャッシュでキャッシュされていなかった場合には、前記データを前記キャッシュでキャッシュするステップと
を備えることを特徴とする方法。
【請求項２】
前記先行キャッシュは、前記キャッシュよりコストが低いキャッシュであることを特徴とする請求項１に記載の方法。
【請求項３】
前記データを後続キャッシュに転送することをさらに備えることを特徴とする請求項１に記載の方法。
【請求項４】
前記後続キャッシュは、前記キャッシュよりコストが高いキャッシュであることを特徴とする請求項３に記載の方法。
【請求項５】
前記キャッシュが前記データをキャッシュする機能的な能力を備えているかどうかを判定するステップをさらに含み、
前記キャッシュが前記データをキャッシュする機能的な能力を備えている場合、前記キャッシュにおいて前記データをキャッシュすることを実施すること
を特徴とする請求項１に記載の方法。
【請求項６】
前記キャッシュが前記データをキャッシュする機能的な能力を備えているかどうかを判定するステップは、前記キャッシュの前記機能的な能力を、前記複数のキャッシュに適用可能なオブジェクトの共通な設定集合と比較するステップを含むことを特徴とする請求項５に記載の方法。
【請求項７】
前記キャッシュが前記データをキャッシュする機能的な能力を備えているかどうかを判定するステップは、前記キャッシュの前記機能的な能力を、前記複数のキャッシュに適用可能な協調的な設定集合と比較するステップを含むことを特徴とする請求項５に記載の方法。
【請求項８】
キャッシュポリシーを参照して前記データをキャッシュすべきかどうかを判定するステップをさらに含み、および
前記前記データをキャッシュすべきことを前記キャッシュポリシーが示す場合に、データを前記キャッシュでキャッシュすることを実施すること
を特徴とする請求項１に記載の方法。
【請求項９】
キャッシュでキャッシュすべきデータを受信するステップは、前記データを先行キャッシュから受信するステップを含むことを特徴とする請求項１に記載の方法。
【請求項１０】
前記キャッシュはウェブサーバキャッシュであり、前記後続キャッシュはアプリケーションレベルキャッシュであることを特徴とする請求項２に記載の方法。
【請求項１１】
前記キャッシュはネイティブキャッシュであり、前記後続キャッシュはマネージキャッシュであることを特徴とする請求項２に記載の方法。
【請求項１２】
データをクライアントシステムに提供するサーバシステムを含むコンピューティング環境において、前記サーバシステムはデータを格納するための複数のキャッシュを備え、最初に最低コストのキャッシュから前記データを取り出すことでクライアントが要求したキャッシュデータを提供する方法であって、前記方法は、
キャッシュでデータに対する要求を受信するステップと、
前記データが前記キャッシュで利用可能であるかどうかを判定するステップと、
前記データが前記キャッシュで利用可能である場合、前記要求データを返却するステップと、
前記データが前記キャッシュで利用可能でない場合、前記要求を後続キャッシュに転送するステップと
を備えることを特徴とする方法。
【請求項１３】
前記キャッシュは前記後続キャッシュより高速であることを特徴とする請求項１２に記載の方法。
【請求項１４】
前記データが前記複数のキャッシュで利用可能でない場合に、前記複数のキャッシュ以外の位置から前記データを生成または取り出すステップをさらに備えることを特徴とする請求項１２に記載の方法。
【請求項１５】
前記データを前記キャッシュに提供するステップと、
前記データが以前に前記複数のキャッシュのうち先行キャッシュでキャッシュされていなかったことを判定するステップと、
前記データが以前にキャッシュされていなかったことを判定するステップで判定がされるとき、前記データが以前に前記複数のキャッシュのうち先行キャッシュでキャッシュされていなかった場合には、前記データを前記キャッシュでキャッシュするステップ
をさらに備えることを特徴とする請求項１４に記載の方法。
【請求項１６】
前記データを生成または取り出すステップは、前記複数のキャッシュでキャッシュすべきデータを指定するキャッシュポリシー情報を前記複数のキャッシュに提供するステップを含むことを特徴とする請求項１４に記載の方法。
【請求項１７】
複数のデータ構造を格納するコンピュータ可読媒体であって、前記複数のデータ構造は、
第１の速度を有する第１のキャッシュと、
前記第１のキャッシュに続いて結合される第２のキャッシュであって、前記第２のキャッシュは前記第１のキャッシュより低速な第２の速度を有し、前記第１のキャッシュに続いて結合することで、前記第１のキャッシュは前記第２のキャッシュの前にデータおよびデータ要求を受信する第２のキャッシュと
を含む複数のキャッシュと、
前記ポリシー・オブジェクトは前記複数のキャッシュに対する設定を定義するポリシー・オブジェクトと
を備えることを特徴とするコンピュータ可読媒体。
【請求項１８】
データを生成および／または取り出すコンピュータ実行可能命令をさらに備えることを特徴とする請求項１７に記載のコンピュータ可読媒体。
【請求項１９】
前記ポリシー・オブジェクトに格納すべきポリシー情報を生成するためのコンピュータ実行可能命令をさらに備えることを特徴とする請求項１７に記載のコンピュータ可読媒体。
【請求項２０】
前記第２のキャッシュを前記第１のキャッシュの後に結合することにより、データおよびデータ要求を前記第１のキャッシュから前記第２のキャッシュに送信できることを特徴とする請求項１７に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、応答出力キャッシュに対するマルチキャッシュ協調を実施する方法およびシステムに関する。
【背景技術】
【０００２】
コンピュータおよびコンピューティングシステムは現代の生活のほぼ全ての側面に影響を及ぼしている。コンピュータは一般に仕事、レクリエーション、ヘルスケア、運輸、娯楽、家庭管理、等に関与している。コンピュータの機能性はまた、その能力が強化され、様々なネットワーク接続を通して相互接続されるようになってきている。
【０００３】
コンピューティングシステムは他システムからデータを要求することができる。このデータを多数の様々な方法で取得することができる。例えば、データベースまたは他のデータストアのような収納場所からデータを取り出すことで、データを取得することができる。また、データを提供するシステムにより、データを動的に生成することもできる。例えば、ワシントン州レドモンドの本件特許出願人から入手可能なａｓｐ（active server page）．ＮＥＴは、ウェブページデータを動的に作成するためのツールを含む。通常のウェブサーバでさえも、ウェブページ要求内の引数に基づいて、カスタマイズされたウェブページデータを提供するウェブページ要求を用いて引数を受信する機能性を含む。
【０００４】
コンピューティングシステムの性能を増大させる１つの方法は、要求データを出力キャッシュすることである。キャッシュは、最近の要求データを、同一データに対する後続の要求があるときに迅速に取り出せる位置に格納することを含む。例えば、データを非常に迅速に取り出せるように、データをコンピュータシステムの物理メモリにキャッシュすることができる。
【０００５】
キャッシュデータを格納および保持する方法を決定するために様々なキャッシュアルゴリズムが作成されている。例えば、ＦＩＦＯ（first in first out）は先入れ先出しの頭字語である。この方式では、データはキャッシュ位置にキャッシュされ、追加のキャッシュ項目に対する場所を作成する必要がある場合、最も古い項目がキャッシュから削除される。他の方式は予測フィルタを使用して、キャッシュ対象およびキャッシュ時間を決定する。
【０００６】
コンピュータシステムの個々のコンポーネントはそれぞれ自身のキャッシュコンポーネントを有することがよくある。例えば、ウェブサーバのコンテキストでは、そのスタックの底にオペレーティングシステムを有するスタックが存在し、ウェブサーバがオペレーティングシステムの上にあり、アプリケーションがウェブサーバの上にある。この１つの例は、ａｓｐ．ＮＥＴフレームワークをホストするＩＩＳ（internet information server）サーバをホストするＷｉｎｄｏｗｓ（登録商標）オペレーティングシステムであり、その全てはワシントン州レドモンドの本件特許出願人から入手可能である。オペレーティングシステム、ウェブサーバ、およびアプリケーションの各々はそれぞれ自身のキャッシュを含む。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
データをクライアントに提供するよう協働するときに、これらの個々のコンポーネントの各々がデータをキャッシュする場合、冗長なキャッシュが実施される可能性がある。この結果、リソースが浪費される恐れがある。例えば、冗長なキャッシュ項目を物理メモリに保持することで、他の項目のキャッシュに利用可能な物理メモリの量が大幅に減少する。
【０００８】
本明細書で主張する主題は、任意の欠点を解決する実施形態または上述したもののような環境でのみ動作する実施形態に限定されない。むしろ、本背景は、本明細書で説明した幾つかの実施形態を実施可能な１つの例示的な技術を示すために与えるに過ぎない。
【課題を解決するための手段】
【０００９】
一実施形態はデータのキャッシュ方法に関する。本方法は、例えば、データをクライアントシステムに提供するサーバシステムを含むコンピューティング環境で実施することができる。サーバシステムは、データを格納する多数のキャッシュを含む。本方法により、クライアントが要求したデータを最小コストのキャッシュが最初にキャッシュすることができる。本方法は、キャッシュにキャッシュすべきデータを受信することを含む。本方法はさらに、データが以前に先行キャッシュでキャッシュされていなかったことを判定することを含む。データが以前に先行キャッシュでキャッシュされていなかった場合、データをそのキャッシュにキャッシュする。
【００１０】
本明細書で説明する別の実施形態は、キャッシュからデータを取り出すことに関する。本方法を、例えば、データをクライアントシステムに提供するサーバシステムを含むコンピューティング環境で実施することができる。サーバシステムは、データを格納するための多数のキャッシュを含む。本方法により、データをコストの低いキャッシュから最初に取り出すことができる。本方法は、キャッシュにおいてデータに対する要求を受信することを含む。本方法はさらにキャッシュでデータが利用可能であるかどうかを判定することを含む。キャッシュでデータが利用可能である場合、その要求されたデータが返却される。キャッシュでデータが利用可能でない場合、その要求を後続キャッシュに転送する。
【００１１】
本明細書で説明する別の実施形態は、多数のデータ構造を格納したコンピュータ可読媒体に関する。その多数のデータ構造は多数のキャッシュを含む。その多数のキャッシュは、第１の速度を有する第１のキャッシュと、第１のキャッシュに続いて結合された第２のキャッシュとを含む。第２のキャッシュは、第１のキャッシュより低速な第２の速度を有する。第１のキャッシュに続くように接続することで、第１のキャッシュはデータとデータ要求とを第２のキャッシュの前に受信する。データ構造はさらにポリシー・オブジェクトを含む。ポリシー・オブジェクトは複数のキャッシュに対する設定を定義する。
【００１２】
本要約は選択した概念を簡潔な形で導入するために与える。その概念を「発明を実施するための最良の形態」でさらに後述する。本要約は特許請求主題の主要な特徴または本質的な特徴を特定するようには意図しておらず、特許請求主題の範囲の決定を支援するものとしても意図していない。
【００１３】
さらなる特徴および利点を以下の記述で説明し、それらはその記述から部分的に明らかになるであろう。または、それらを本明細書の教示を実施することで習得することができる。本発明の特徴および利点を、特に添付請求項で指摘した手段およびそれらの組み合わせにより理解および取得することができる。本発明の特徴は、以下の記述および添付請求項からより完全に明らかとなり、または以降説明する本発明の実施により習得することができる。
【００１４】
上述並びに他の利点および特徴を取得可能な方法を説明するため、簡潔に上述した主題のより詳細な説明を添付図面で示した具体的な実施形態を参照して行う。これらの図面は一般的な実施形態を示すに過ぎず、従って範囲を限定すると考えるべきではないことを理解し、添付図面の使用を通して実施形態をさらに具体的および詳細に記述および説明する。
【発明を実施するための最良の形態】
【００１５】
本明細書の実施形態は、以下でさらに詳細に説明するように様々なコンピュータハードウェアを含む専用または汎用のコンピュータを備えることができる。
【００１６】
本明細書で説明する一実施形態は、キャッシュを互いに階層方式で接続したキャッシュ・トポロジを含む。そのトポロジでは、最高速および／または最小コストのキャッシュが最初にアクセスされて、データのキャッシュまたはキャッシュデータの取り出しのいずれかを行う。特定のキャッシュが所与のデータ集合をキャッシュできない場合、またはその所与のデータ集合がキャッシュで利用可能でない場合には、データまたはデータ要求を後続キャッシュに渡す。後続キャッシュはより低速またはよりコストが高くてもよいが、所与のデータ集合をキャッシュするための機能性を含むことができる。本キャッシュ・トポロジは、階層方式で接続した任意の適切な数のキャッシュを含むことができ、より低速および／またはよりコストが高いキャッシュの前により高速および／またはよりコストが低いキャッシュにアクセスすることができる。
【００１７】
一実施形態では、キャッシュすべきデータを定義するポリシー情報が、階層内のキャッシュに対して利用可能である。従って、階層内のキャッシュはポリシー情報を参照することができ、それとともに、所与のデータ集合をキャッシュにキャッシュすべきかどうかを判定する際にキャッシュの個々の能力にアクセスすることができる。
【００１８】
図１を参照すると、キャッシュ・トポロジ１００が多数のキャッシュ１０２−１、１０２−２、および１０２−Ｎを階層的配置で含む例を示してある。図示した例では、キャッシュデータ１０４またはキャッシュすべきデータ１０６に対する要求を第１のキャッシュ１０２−１に送信することができる。説明の簡潔さのため、第１の例を、データ１０６が第１のキャッシュ１０２−１に送信される場合に対して与える。データ１０６が第１のキャッシュ１０２−１に送信されるとき、第１のキャッシュ１０２−１は、送信されているデータタイプを判定することができる。第１のキャッシュ１０２−１は次いでポリシー情報１０８を参照して、データ１０６がキャッシュされるべきかどうかを判定することができる。データ１０６がキャッシュされるべきである場合、第１のキャッシュ１０２−２は次いで、キャッシュするデータに対する自身の能力を評価することができる。データ１０６がキャッシュ１０２−１でキャッシュ可能なタイプである場合、データ１０６は第１のキャッシュ１０２−１でキャッシュされる。
【００１９】
他方、データがキャッシュ１０２−１によってキャッシュされることが可能なタイプでない場合、そのデータを第２のキャッシュ１０２−２に転送する。第２のキャッシュ１０２−２は、ポリシー情報１０８を参照してデータ１０６をキャッシュすべきかどうかを判定すること、および自身の能力を評価してデータ１０６をキャッシュできるかどうかを判定することのように、第１のキャッシュ１０２−１が実施するものと同様なアクションを実施する。本プロセスを、キャッシュがデータ１０６をキャッシュするかまたはデータ１０６を与えた後にデータ１０６をキャッシュするキャッシュがなくなるまで、省略記号および１０２−Ｎで表した他のキャッシュに対して継続することができる。
【００２０】
同様なプロセスを、データの取り出しに対して実施することができる。例えば、キャッシュデータ１０４に対する要求を第１のキャッシュ１０２−１に送信することができる。第１のキャッシュ１０２−１がキャッシュデータを有する場合、そのキャッシュデータは第１のキャッシュ１０２−１から返却される。第１のキャッシュ１０２−１がキャッシュデータを有さない場合、第１のキャッシュ１０２−１はキャッシュデータ１０４に対する要求を第２のキャッシュ１０２−２に渡す。本プロセスを、省略記号および１０２−Ｎにより表したキャッシュを通して継続することができる。
【００２１】
前述のように、最高速および／または最小コストのキャッシュは、後続キャッシュがより低速および／またはコストがより高いキャッシュである第１のキャッシュ１０２−１であることができる。例えば、一実施形態では、第１のキャッシュ１０２−１は、ウェブサーバのような低レベルのコンポーネントに対するキャッシュで可能である。第２のキャッシュ１０２−２は、例えば、ワシントン州レドモンドの本件特許出願人から入手可能なＡＳＰ．ＮＥＴのようなアプリケーションレベルコンポーネントのような高レベルのコンポーネントに対するキャッシュで可能である。本例では、第１のキャッシュ１０２−１はネイティブキャッシュ（native cache）で可能であり、第２のキャッシュ１０２−２はマネージキャッシュ（managed cache）で可能である。ネイティブキャッシュは一般にマネージキャッシュより高速であり、よりコストが低い。
【００２２】
前述のように、図１はキャッシュポリシー１０８を示している。幾つかの実施形態では、キャッシュポリシーはキャッシュの各々に対するポリシー設定を含むことができる。例えば、キャッシュポリシーは、キャッシュ１０２−１、１０２−２、および１０２−Ｎに対応するキャッシュポリシー１０８−１、１０８−２、および１０８−Ｎを含むことができる。全てのキャッシュ設定がキャッシュポリシー１０８内部で知られるように、キャッシュポリシー１０８−１、１０８−２、および１０８−Ｎを相互接続できる。これにより、キャッシュデータ１０６に対して可能な任意のキャッシュが許可される。従って、最高速および／または最小コストのキャッシュを使用して、キャッシュ能力と、キャッシュの各々に対するキャッシュポリシーを含むキャッシュポリシー１０８と、に基づいてキャッシュできる場合にデータをキャッシュすることができる。
【００２３】
代替的な実施形態では、キャッシュポリシー１０８は、キャッシュ１０２−１、１０２−２、および１０２−Ｎの各々が参照可能な汎用的な共有構成が可能である。従って、キャッシュポリシー１０８が規定するようにデータ１０６を格納する能力を有する第１のキャッシュは、データ１０６を格納することになる。キャッシュがデータ１０６を格納しているとき、後続キャッシュがデータ１０６をキャッシュすることを試行しないように、データ１０６を印付けすることができる。一実施形態では、キャッシュすべきでないデータとしてデータ１０６を単純に印付けすることで、これを実現できる。この方法では、キャッシュ１０２−１、１０２−２、および１０２−Ｎを、特に互いに通信するよう設計する必要はない。むしろ、先行キャッシュはデータ１０６をキャッシュすべきでないデータとして印付けすることができ、従って後続キャッシュがデータをキャッシュすることを防ぐことができる。さらに、図１に示すモデルは、キャッシュが互いに通信するよう特に設計する必要なしに任意数の後続キャッシュを追加できるという点で、高度に拡張可能である。
【００２４】
次に、図２を参照して、ワークフローパイプライン２００を示す。ワークフローパイプライン２００は、受信されている要求２０２を示す。要求２０２は、例えば、サーバシステムに接続したクライアントシステムからの要求である可能性がある。要求２０２を出力キャッシュにより処理可能である場合、よりコストが高いコンピューティングおよび／またはネットワーク操作を通して応答を再生成または再フェツチするのではなく、要求２０２に対する応答をキャッシュから提供することで、コンピューティングリソースを温存することができる。さらに、要求２０２に対する応答がキャッシュで利用可能でない場合でも、或る特定の状況では、要求に対する応答をキャッシュに格納してその応答内のデータを要求するクライアントが後で利用できるという具合に、要求に対する応答を本明細書で以下でより詳細に説明する様々なプロセスおよびイベントを通して生成することができる。
【００２５】
キャッシュ解決機能（resolve cache function）２０４は、要求２０２を受信すると実施することができる。要求２０２に対する応答がキャッシュ２０６で利用可能であるときに、キャッシュ解決機能２０２によりキャッシュデータをキャッシュ２０６から返却することができる。要求２０２に対するキャッシュ応答を取得するため、キャッシュデータ１０４に対する要求が送信される。図２に示す実施形態では、キャッシュデータ１０４に対する要求を、上述のように、より高速および／またはコストがより低いキャッシュであり得る第１のキャッシュ１０２−１に送信することができる。第１のキャッシュ１０２−１が要求２０２に対する応答を含む場合、第１のキャッシュ１０２−１は、その応答を返却し、キャッシュデータ１０４に対する要求がキャッシュ１０２−２および１０２−Ｎのような後続キャッシュに続くことを防ぐことができる。要求２０２に対する応答が第１のキャッシュ１０２−１で利用可能でない場合、キャッシュデータ１０４に対する要求を、図１の説明に関して上述したように後続キャッシュに渡すことができる。前述のように、後続キャッシュは、応答が見つかるまで、またはキャッシュの各々が応答をチェックされるまで、要求２０２に対する応答をチェックし続けることができる。
【００２６】
図２は決定ブロック２０８を示す。決定ブロック２０８は、応答がキャッシュの１つに格納されている場合、応答を、２１０で示すようにクライアントに送信することを示す。応答がキャッシュの１つに格納されない場合、イベント２１２で示すように様々なアクションを実施して応答を別の位置から生成または取り出すことができる。
【００２７】
前述のように、図２はイベント２１２を示す。イベントは、要求２０２への応答としてのデータを生成するため、および／または要求２０２に応じてデータを取得するために実施する様々なアクティビティが可能である。例えば、イベント２１２はａｓｐ．ＮＥＴのようなアプリケーションレベルコンポーネントにより実施するアクティビティを含むことができる。イベント２１２は、要求２０２を満たすデータとして使用すべきデータベース内に格納したデータを収集するための、データベース抽出機能を含むことができる。幾つかの実施形態により、イベントを任意の適切なレベルで実施することができる。例えば、イベント２１２をカーネルレベル、システムレベル、および／またはアプリケーションレベルで実施できる。
【００２８】
図２はさらにキャッシュ更新アクション２１４を示す。データがイベント２１２によって生成されまたは取り出されるとき、データをキャッシュ２０６の１つに格納することができる。これにより、そのデータを要求する後続の要求に対する応答としてそのデータを使用することができる。前述のように、データ１０６を第１のキャッシュ１０２−１に送信することができる。第１のキャッシュ１０２−１はキャッシュポリシー１０８を参照する。キャッシュポリシー１０８が、データ１０６はキャッシュされるべきであり、第１のキャッシュ１０２−１はデータ１０６をキャッシュ可能であると指示する場合、第１のキャッシュ１０２−１はデータ１０６をキャッシュする。次いで、第１のキャッシュ１０２−１は後続キャッシュに対し、データ１０６をキャッシュすべきでないことを示す。一実施形態では、これを、キャッシュすべきでないデータとしてデータ１０６を印付けすることで実現することができる。あるいは、第１のキャッシュ１０２−１は、データ１０６をキャッシュしないために、別個のメッセージをキャッシュ１０２−２および１０２−Ｎのような後続キャッシュに送信することができる。
【００２９】
図２はさらにハンドラ２１６を示す。ハンドラ２１６を、イベント２１２で表すようにコンピュータハードウェアおよびソフトウェアと関連付けることができる。ハンドラ２１６はポリシー情報をキャッシュポリシー１０８に提供することもできる。特に、ハンドラ２１６は、どの特定のタイプのデータをイベント２１２による生成時にキャッシュすべきかを定義する情報を利用可能とすることができる。本情報をハンドラ２１６によりキャッシュポリシー１０８に送ることができる。
【００３０】
次に、図３を参照して、データを格納する方法３００を示す。方法３００は、例えば、データをクライアントシステムに提供するサーバシステムを含むコンピューティング環境で実施することができる。そのサーバシステムはデータを格納するための多数のキャッシュを含む。方法３００は多数の動作を含む。例えば、方法３００は、キャッシュにキャッシュすべきデータを受信することを含む（動作３０２）。方法３００はさらに、以前にデータが先行キャッシュでキャッシュされていなかったことを判定することを含む（動作３０４）。データが以前に先行キャッシュでキャッシュされていなかった場合、方法３００は、キャッシュポリシーによりデータをこのキャッシュでキャッシュできるかどうかを判定することを示す（動作３０５）。キャッシュポリシーによりデータをこのキャッシュにキャッシュできる場合、方法３００はデータをそのキャッシュにキャッシュすることを示す（動作３０６）。そうでない場合、データをそのキャッシュにキャッシュしない（３０８）。
【００３１】
幾つかの実施形態では、データを後続キャッシュに転送できる。後続キャッシュがデータをキャッシュしないように、データを印付けすることができる。例えば、キャッシュすべきでないデータとしてデータを印付けすることができ、その結果、後続キャッシュはそのデータをキャッシュしない。あるいはそのキャッシュは、そのデータをキャッシュすべきでないことを後続キャッシュに伝えることができる。
【００３２】
本明細書で前述したように、先行キャッシュは後続のキャッシュよりコストが低いキャッシュで可能である。例えば図１に示すように、第１のキャッシュ１０２−１は、それが第２のキャッシュより高速なキャッシュであるか、またはそれが第２のキャッシュ１０２−２ほどリソースを必要としない意味で、低いコストで可能である。同様に、後続キャッシュは上記のキャッシュよりコストが高いキャッシュで可能である。従って、よりコストが低い、および／またはより高速なキャッシュは、よりコストが高く、および／またはより低速なキャッシュ前にデータを格納する機会を有する。
【００３３】
方法３００はさらに、キャッシュがデータをキャッシュする機能的な能力を含むかどうかを判定することを含むことができる。これを、１つの例では動作３０５で実施することができる。キャッシュがデータをキャッシュするための機能的な能力を含む場合、キャッシュにおいてデータのキャッシュを実施する（動作３０６）。例えば、図１を再度参照すると、第１のキャッシュ１０２−１はキャッシュポリシー１０８を参照して、どのタイプのデータをキャッシュすべきかを判定することができる。第１のキャッシュ１０２−１は、次いで自身のキャッシュ能力を参照して、自身がデータをキャッシュする能力を有するかどうかを判定することができる。
【００３４】
従って、キャッシュがデータをキャッシュする機能的な能力を備えているかどうかを判定することは、そのキャッシュの機能的な能力を、キャッシュポリシー１０８のような、キャッシュの数に適用可能なオブジェクトの共通な設定集合と比較することを含むことができる。
【００３５】
前述のように、キャッシュがデータをキャッシュする機能的な能力を備えるかどうかを判定することは、そのキャッシュの機能的な能力を、複数のキャッシュに適用可能な協調的な設定集合と比較することが上げられる。協調的な設定は、情報を共有可能な複数のキャッシュ内のキャッシュの各々に対する個々の設定から成る集合が可能である。従って、先行キャッシュがデータをキャッシュできるかどうかの判定において、先行キャッシュは後続キャッシュからのポリシー設定を使用できる。
【００３６】
方法３００は、キャッシュポリシーを参照することでデータがキャッシュされるべきかを判定すること、データをキャッシュすべきとキャッシュポリシーが示す場合にキャッシュにおいてデータをキャッシュすること（動作３０６）を含むことができる。これを、例えば動作３０５で実施することができる。上述のように、キャッシュポリシー１０８は、どのタイプのデータを複数のキャッシュ内のキャッシュでキャッシュすべきかを述べる情報を含む。
【００３７】
方法３００は、キャッシュでキャッシュすべきデータを受信することが先行キャッシュからデータを受信することを含むようにしても良い。例えば、機能的な制限のため先行キャッシュがデータをキャッシュできない場合に、キャッシュは先行キャッシュからデータを受信できる。
【００３８】
前述のように、キャッシュはより低速なキャッシュより前により高速なキャッシュにアクセスする様々な機能性を有することができる。従って、一実施形態では、キャッシュはウェブサーバキャッシュとすることが可能であり、後続キャッシュはアプリケーションレベルキャッシュとすることが可能である。同様に、キャッシュはネイティブキャッシュとすることが可能であり、後続キャッシュはマネージキャッシュとすることが可能である。
【００３９】
次に、図４を参照して、方法４００を示す。その方法を、例えば、データをクライアントシステムに提供するサーバシステムを含むコンピューティング環境で実施することができる。そのサーバシステムはデータを格納するための多数のキャッシュを含む。本方法は、クライアントが要求するキャッシュデータを提供するための様々な動作を含む。本方法はキャッシュにおいてデータに対する要求を受信することを含む（動作４０２）。例えば、図２に示すように、要求１０４を受信することができる。
【００４０】
本方法はさらに、データがキャッシュで利用可能であるかどうかを判定することを含む（動作４０４）。例えば、第１のキャッシュ１０２−１に対する要求によりデータを要求する場合、データ１０４が第１のキャッシュ１０２−１で利用可能である。データがキャッシュで利用可能である場合、要求データが返却される（動作４０６）。例えば、図２は応答をクライアント２１０に送信することを示す。データがキャッシュで利用可能でない場合、要求を後続キャッシュに転送する（動作４０８）。例えば、要求１０４を第２のキャッシュ１０２−２に転送することができる。
【００４１】
本明細書の他の実施形態で説明するように、キャッシュは後続キャッシュより高速が可能である。
【００４２】
特許出願である方法４００は、さらに、データが複数のキャッシュで利用可能でない場合に、その複数のキャッシュ以外の位置からデータを生成または取り出すことを含むことができる。例えば、図２に示すように、様々なアクションをイベント２１２が示すように実施して、データを生成、または例えばデータベースもしくは他のデータ格納からデータを取り出すことができる。
【００４３】
データを取り出しまたは生成すると、方法４００はさらに、データをキャッシュに提供するための動作、データが以前にキャッシュの数の先行キャッシュでキャッシュされていなかったことを判定するための動作、およびデータが以前にキャッシュされていなかったことを判定するステップで判定したようにデータが以前にキャッシュの数のうちの先行キャッシュでキャッシュされていなかった場合に、データをキャッシュでキャッシュするための動作、を含むことができる。
【００４４】
さらに、データを生成または取り出すことは、複数のキャッシュにおいてキャッシュすべきデータを指定するキャッシュポリシー情報を複数のキャッシュに提供することを含める。
【００４５】
実施形態は、自身に格納したコンピュータ実行可能命令またはデータ構造を携行または有するコンピュータ可読媒体を含むこともできる。上記のコンピュータ可読媒体は、汎用または専用のコンピュータによりアクセス可能な任意の利用可能な媒体が可能である。限定ではなく例として、上記のコンピュータ可読媒体はＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭもしくは他の光ディスク格納、磁気ディスク格納もしくは他の磁気格納装置、または所望のプログラムコード手段をコンピュータ実行可能命令またはデータ構造の形式で携行または格納するために使用可能であり、および汎用または専用のコンピュータによりアクセス可能な任意の他の媒体を備えることができる。情報をネットワークまたは別の通信接続（ハードワイヤード、無線、もしくはハードワイヤードまたは無線の組合せのいずれか）上でコンピュータに転送または提供する場合、コンピュータはその接続をコンピュータ可読媒体として正しいものと見なす。従って、任意の上記の接続はコンピュータ可読媒体であると正しく称せられる。上の組合せも、コンピュータ可読媒体の範囲に含まれるべきである。
【００４６】
コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理装置に或る特定の機能または機能グループを実施させる命令およびデータを備える。特許請求主題を構造的特徴および／または方法論的動作に固有な言葉で説明したが、添付請求項で定義したクレーム主題は必ずしも上述の特定の特徴または動作に限定されないことは理解されるべきである。むしろ、上述の特定の特徴および動作は請求項を実行する形態の例として開示してある。
【００４７】
本発明は、その精神または本質的な特徴から逸脱せずに他の特定の形態で具現化することができる。説明した実施形態は全ての点で例に過ぎず限定的ではないと考えるべきである。本発明の範囲は従って、前述の説明によってではなく添付請求項によって示される。請求項の等価物の意味および範囲内にある全ての変更は、その範囲内に包含されるべきである。
【図面の簡単な説明】
【００４８】
【図１】キャッシュの階層的編成を示す図である。
【図２】データのキャッシュおよび要求に対するアクティビティのパイプラインを示す図である。
【図３】データのキャッシュ方法を示す図である。
【図４】キャッシュデータの取り出し方法を示す図である。
【図１】
2009529183.tif 000003
【図２】
2009529183.tif 000004
【図３】
2009529183.tif 000005
【図４】
2009529183.tif 000006
【国際調査報告】
2009529183.tif 000007
2009529183.tif 000008