(57)【要約】【課題】  ポストキャッシュ置換システムおよび方法を提供すること。【解決手段】  クライアント要求に対する応答に動的コンテンツを組み込むために、キャッシュされたコンテンツに置換ブロック３０４を挿入する。キャッシュされたコンテンツがクライアントへの応答として書き出されるとき、置換ブロックに関連づけられたデリゲートを呼び出して動的コンテンツを生成する。デリゲートは、そのコンテンツが要求されるたびに呼び出されるとともに、クライアント要求に対する応答で提供されるコンテンツは、キャッシュされたコンテンツを求めるクライアント要求ごとに異なることがある動的コンテンツを含む。【選択図】  図３
2004348743.tif 000002
【特許請求の範囲】
【請求項１】
クライアント要求に応答してコンテンツのキャッシュからコンテンツを提供するサーバを有するシステムにおいて、キャッシュされた前記コンテンツをクライアントに提供するときに、キャッシュされた前記コンテンツに動的コンテンツを挿入する方法であって、
コンテンツを求める要求をクライアントから受け取るステップと、
デリゲートを有する置換ブロックを含む応答バッファのチェーンであって、前記クライアントによって要求された前記コンテンツに対応する該応答バッファのチェーンをキャッシュから検索するステップと、
前記置換ブロックに関連づけられた前記デリゲートを呼び出すステップであって、前記置換ブロックは、前記クライアント要求に対する応答により提供される前記応答バッファのチェーンに含まれる前記動的コンテンツを生成するステップと、
を含むことを特徴とする方法。
【請求項２】
前記クライアントに対する前記応答において前記動的コンテンツを含む前記コンテンツを提供するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記コンテンツを求める要求をクライアントから受け取るステップは、前記クライアントによって要求された前記コンテンツが前記キャッシュに格納されているか否かを判断するステップを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記クライアントによって要求された前記コンテンツが前記キャッシュに格納されているか否かを判断するステップは、前記コンテンツが前記キャッシュに格納されていない場合に前記コンテンツを生成するステップを含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記コンテンツが前記キャッシュに格納されていない場合に前記コンテンツを生成するステップは、
前記応答に前記置換ブロックを付加するステップと、
前記置換ブロックを有する前記応答を前記キャッシュに格納するステップと、
新たな前記コンテンツを含む前記コンテンツのキャッシャビリティをサーバ専用に低下させるステップと、
を含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記置換ブロックに関連づけられた前記デリゲートを呼び出すステップであって、前記置換ブロックは、前記クライアント要求に対する応答により提供される前記応答バッファのチェーンに含まれる前記動的コンテンツを生成するステップは、
前記動的コンテンツを有する前記コンテンツを、前記クライアントに送られる前記応答に書き込むステップを含む、
ことを特徴とする請求項１に記載の方法。
【請求項７】
前記置換ブロックに関連づけられた前記デリゲートを呼び出すステップであって、前記置換ブロックは、前記クライアント要求に対する応答により提供される前記応答バッファのチェーンに含まれる前記動的コンテンツを生成するステップは、
前記置換ブロックの代わりに前記応答バッファのチェーンに前記動的コンテンツを挿入するステップを含む、
ことを特徴とする請求項１に記載の方法。
【請求項８】
１または複数のクライアントにキャッシュからコンテンツを提供するサーバを含むシステムにおいて、キャッシュされたコンテンツをクライアント要求に応答してクライアントに提供するとき、前記キャッシュされたコンテンツがクライアント要求ごとに変化する動的コンテンツを含むようにコンテンツをキャッシュする方法であって、
動的コンテンツを生成するデリゲートを保存する置換ブロックを、キャッシュされる応答に付加するステップと、
前記応答をキャッシュに格納し、それによって、将来のクライアント要求において前記応答を前記キャッシュから提供するとき、前記置換ブロックにより保存される前記デリゲートが呼び出され、前記応答に挿入される新たな動的コンテンツが生成されるようにするステップと、
を含むことを特徴とする方法。
【請求項９】
前記キャッシュに格納された前記応答に対応するコンテンツを求める後続のクライアント要求を受け取るステップと、
前記置換バッファを含む前記応答を前記キャッシュから検索するステップと、
前記置換バッファに関連づけられた前記デリゲートを呼び出して、前記後続のクライアント要求に対する前記応答に含める前記動的コンテンツを生成するステップと、
をさらに含むことを特徴とする請求項８に記載の方法。
【請求項１０】
前記動的コンテンツを含む前記応答を提供するステップをさらに含むことを特徴とする請求項９に記載の方法。
【請求項１１】
前記キャッシュに格納された前記応答に対応するコンテンツを求める後続のクライアント要求を受け取るステップは、
前記後続のクライアント要求において要求された前記コンテンツが前記キャッシュに格納されているか否かを判断するステップを含む、
ことを特徴とする請求項９に記載の方法。
【請求項１２】
前記デリゲートを呼び出して、クライアント要求に対する応答に含まれる動的コンテンツを生成するステップをさらに含むことを特徴とする請求項８に記載の方法。
【請求項１３】
ユーザコントロールを介して前記デリゲートを呼び出すステップをさらに含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記デリゲートを呼び出して、クライアント要求に対する応答に含まれる動的コンテンツを生成するステップは、
サーバコントロールを介して前記デリゲートを呼び出すステップを、
さらに含むことを特徴とする請求項１２に記載の方法。
【請求項１５】
前記動的コンテンツを生成するデリゲートを保存する置換ブロックを、キャッシュされる応答に付加するステップは、
前記応答に対応する応答バッファのチェーンに前記置換バッファを挿入するステップを含む、
ことを特徴とする請求項８に記載の方法。
【請求項１６】
請求項８に記載の方法を実行するコンピュータ実行可能命令を有することを特徴とするコンピュータプログラムプロダクト。
【請求項１７】
ウェブページを求める１または複数のクライアントからの要求に応答して前記１または複数のクライアントにキャッシュから前記ウェブページを提供するサーバを含むシステムにおいて、前記ウェブページが前記キャッシュから提供されるときに動的コンテンツを含むように前記ウェブページを完全にキャッシュする方法であって、
あるサーバにおいて、あるウェブページを求める要求をクライアントから受け取るステップと、
前記クライアントによって要求された前記ウェブページが前記サーバのキャッシュに完全に格納されているか否かを判断するステップと、
１または複数の応答バッファと置換ブロックとを含む応答バッファのチェーンであって前記クライアントによって要求された前記ウェブページに対応する応答バッファのチェーンを、前記キャッシュから検索するステップと、
前記応答バッファのチェーン内の各応答バッファを、前記クライアントに提供する応答に書き込むステップと、
前記置換ブロックを書き込むときに、前記置換ブロックに関連づけられたデリゲートを呼び出し、前記置換ブロックの代わりに前記クライアントに対する前記応答に組み込まれている前記ウェブページのための動的コンテンツを生成するステップと、
を含むことを特徴とする方法。
【請求項１８】
前記クライアントによって要求された前記ウェブページが前記サーバのキャッシュ内に完全にキャッシュされているか否かを判断するステップは、
前記ウェブページを生成するステップと、
前記ウェブページを前記応答バッファのチェーンとして前記キャッシュに格納するステップと、
を含むことを特徴とする請求項１７に記載の方法。
【請求項１９】
前記ウェブページを前記応答バッファのチェーンとして前記キャッシュに格納するステップは、キャッシュされる前記ウェブページに前記置換ブロックを挿入するステップを含むことを特徴とする請求項１８に記載の方法。
【請求項２０】
キャッシュされる前記ウェブページのキャッシャビリティをサーバ専用に低下させ、それによって前記ウェブページが前記クライアントにおいてキャッシュされないようにするステップをさらに含むことを特徴とする請求項１９に記載の方法。
【請求項２１】
前記１または複数の応答バッファと置換ブロックとを含む応答バッファのチェーンであって前記クライアントによって要求された前記ウェブページに対応する応答バッファのチェーンを、前記キャッシュから検索するステップは、
ユーザコントロールを使用して前記デリゲートを呼び出すステップを、
含むことを特徴とする請求項１７に記載の方法。
【請求項２２】
前記１または複数の応答バッファと置換ブロックとを含む応答バッファのチェーンであって前記クライアントによって要求された前記ウェブページに対応する応答バッファのチェーンを、前記キャッシュから検索するステップは、
サーバコントロールを使用して前記デリゲートを呼び出すステップを、
含むことを特徴とする請求項１７に記載の方法。
【請求項２３】
前記１または複数の応答バッファと置換ブロックとを含む応答バッファのチェーンであって前記クライアントによって要求された前記ウェブページに対応する応答バッファのチェーンを、前記キャッシュから検索するステップは、
既存のサーバコントロールを使用して前記デリゲートを呼び出すステップを、
含むことを特徴とする請求項１７に記載の方法。
【請求項２４】
前記ウェブページが前記キャッシュに格納されていない場合であっても、要求された前記ウェブページにおける新たな動的コンテンツを提供するステップをさらに含むことを特徴とする請求項１７に記載の方法。
【請求項２５】
コンテンツを求める１または複数のクライアントからの要求に応答して前記１または複数のクライアントにキャッシュから前記コンテンツを提供するサーバを含むシステムにおいて、前記コンテンツが前記キャッシュから提供されるときに動的コンテンツを含むように前記コンテンツを完全にキャッシュする方法を実施するコンピュータプログラムプロダクトであって、
前記方法を実行するコンピュータ実行可能命令を有するコンピュータ可読媒体を含み、前記方法は、
あるサーバにおいてあるウェブページを求めるクライアントからの要求を受け取るステップと、
前記クライアントによって要求された前記ウェブページが前記サーバのキャッシュに格納されているか否かを判断するステップと、
１または複数の応答バッファと置換ブロックとを含む応答バッファのチェーンであって前記クライアントによって要求された前記ウェブページに対応する応答バッファのチェーンを、前記キャッシュから検索するステップと、
前記応答バッファのチェーン内の各応答バッファを、前記クライアントに提供する応答に書き込むステップと、
前記置換ブロックを書き込むときに、関連づけられたデリゲートを呼び出し、前記クライアントに対する前記応答に組み込まれる前記ウェブページのための動的コンテンツを生成するステップと、
を含むことを特徴とするコンピュータプログラムプロダクト。
【請求項２６】
キャッシュされる前記ウェブページのキャッシャビリティをサーバ専用に低下させ、それによって前記ウェブページが前記クライアントにおいてキャッシュされないようにするステップを、さらに含むことを特徴とする請求項２５に記載のコンピュータプログラムプロダクト。
【請求項２７】
前記１または複数の応答バッファと置換ブロックとを含む応答バッファのチェーンであって前記クライアントによって要求された前記ウェブページに対応する応答バッファのチェーンを前記キャッシュから検索するステップは、
ユーザコントロールを使用して前記デリゲートを呼び出すステップを、
含むことを特徴とする請求項２５に記載のコンピュータプログラムプロダクト。
【請求項２８】
前記１または複数の応答バッファと置換ブロックとを含む応答バッファのチェーンであって前記クライアントによって要求された前記ウェブページに対応する応答バッファのチェーンを前記キャッシュから検索するステップは、
サーバコントロールを使用して前記デリゲートを呼び出すステップを、
含むことを特徴とする請求項２５に記載のコンピュータプログラムプロダクト。
【請求項２９】
前記ウェブページが前記キャッシュに格納されていない場合であっても、要求された前記ウェブページにおける新たな動的コンテンツを提供するステップを、さらに含むことを特徴とする請求項２５に記載のコンピュータプログラムプロダクト。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般には、ポストキャッシュ置換(post-cache substitution)のためのシステムおよび方法に関する。詳細には、本発明は、出力キャッシュ(output cache)されたウェブページに動的コンテンツ(dynamic content)を挿入(insert)するシステムおよび方法に関する。
【背景技術】
【０００２】
インターネットへのアクセスが容易になり、インターネットを介して多量の知識と情報が利用可能になるに伴って、個人や企業はインターネットを、たとえば世界情勢、教育、娯楽に関する情報を検索し、利用するための一次情報源として使用し始めている。さらに、高速化したパーソナルコンピュータや、高性能化したサーバ、通信ネットワークにより、情報を多くの個人に配信することがますます容易になっている。
【０００３】
また、ウェブブラウザを介して、ウェブサーバやデータベースなどの情報リポジトリ(information repository)にアクセスすることもできる。ウェブブラウザは、ユーザのコンピュータ上で稼働し、コンピュータネットワーク（インターネットなど）に接続された様々なサーバから直接、あるいは、１つまたは複数の中間(intermediate)プロキシサーバを経由して、ウェブページを検索(retrieve)し、表示する。ウェブブラウザを使用して、インターネットまたはその他のコンピュータネットワークを介して、他のタイプのコンテンツを検索し、表示することもできる。
【０００４】
サーバコンピュータには多くのユーザがアクセスするため、特定のサーバがユーザ要求(user request)ごとにウェブページを生成する必要がある場合は、それらのユーザ要求に応答する際のサーバのパフォーマンスが影響を受ける可能性がある。データキャッシュ技法(data caching technique)を使用すれば、ユーザがウェブページを要求してからウェブブラウザがページをユーザに提供するまでの応答時間(response time)が短縮される。また、データキャッシュ技法は、サーバのパフォーマンスも向上させ、サーバが単位時間当たりに応答可能な要求数が増える。このようなデータキャッシュ技法は、ウェブページの静的なバージョン(static version)を、ユーザのコンピュータとウェブページ要求に対する応答を生成するウェブサーバとの間にある任意の数の場所のデータキャッシュに格納する。この場所にはユーザのコンピュータとウェブサーバも含まれる。これによって、データキャッシュ技法は、たとえばインターネットを介してアクセスされるサーバコンピュータが、比較的短時間に多数のユーザに同じウェブページを提供することができるようにする。
【０００５】
たとえば、ウェブブラウザは一般に、ウェブブラウザの使用中にネットワークを介して取り出した一時ファイルを格納するローカルキャッシュ(local cache)にアクセスすることができる。ウェブページが要求されると、ブラウザは、要求されたウェブページのコピーがローカルキャッシュ内にあるか否かを調べる。要求されたウェブページの最新版がキャッシュに格納されている場合、ウェブブラウザは、要求されたウェブページをローカルキャッシュから検索することができ、それによって、そのウェブページをウェブサーバに直接要求する必要がなくなる。キャッシュは一般に、ユーザのコンピュータのハードドライブ上、またはユーザのコンピュータの揮発性メモリに、ローカルに配置されているため、ウェブページを検索するのにネットワーク通信は不要である。ウェブページをローカルでキャッシュすることによって、一般には、インターネットを介して要求を送るよりも応答が格段に迅速になる。さらに、ローカルキャッシュからキャッシュされたウェブページ(cached web page)を使用することによって、ウェブサーバの処理効率を低下させる無用なウェブサーバヒット(web server hit)もなくなる。
【０００６】
プロキシウェブサーバを含むウェブサーバも、キャッシュ技法を使用する。ウェブサーバがユーザからウェブページを求める要求を受け取ると、ウェブサーバは、要求されたウェブページの生成を試みる前に、ユーザによって要求されたウェブページがウェブサーバのキャッシュに格納されているか否かを判断する。ウェブページがウェブサーバのキャッシュ内にある場合、ユーザに対するウェブサーバの応答にはキャッシュにあるウェブページが組み込まれる。これにより、ウェブサーバの所要処理量が軽減される。ウェブページがキャッシュされていなければ、ウェブサーバはウェブページを生成するプロセスを行うことになる。これは、計算処理上高くつくことがあり、また、たとえば、ウェブページを生成するのにウェブサーバはデータベースサーバがデータベース照会(database query)に応答するのを待つ必要があるため、より多くの時間を要する可能性がある。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ウェブサーバキャッシュ(web server cache)によって、ウェブサーバは、ウェブページの生成の代わりにウェブページの提供に、より多くの時間を費やせるようになる。キャッシュされたウェブページの１つの欠点は、キャッシュされたウェブページ(cached web page)の内容(content)が静的(static)であり、キャッシュされた静的なウェブページが必ずしも、サーバの効率を最大限にするとは限らず、最新の内容が含まれていない場合もあることである。さらに、キャッシュされたウェブページは、要求ごとに異なるわけではない。キャッシュされたウェブページまたはその他のコンテンツが静的であることと、キャッシュされたコンテンツが静的であるために要求ごとに異なる広告を提供することが困難になるために、場合によってはウェブページの提供による収益が減る可能性もある。
【０００８】
たとえば、ウェブページは、特定のウェブページを提供するたびに変更すべき広告を含むことが多い。ウェブページを静的キャッシュ(static cache)から提供する場合、広告を要求ごとに変更するのは困難な作業である。すなわち、キャッシュされたウェブページは、すでにウェブサーバによって作成されたものであるため、要求ごとに変化しない。この問題を克服するには、ウェブブラウザまたは中間プロキシサーバに、キャッシュされたウェブページ(cached web page)の新たな動的コンテンツ(dynamic content)を強制的に入手させるように、ウェブブラウザに提供される動的コンテンツとウェブページをコーディングするという、複雑なコーディング(complicated coding)を必要とする。
【０００９】
この問題に対処する１つの手法は、ウェブページを部分的にキャッシュ(partially cache)することである。この手法では、ウェブページの一部の領域を動的(dynamic)なものとしてマークし、ウェブページの他の領域は、静的(static)なものとしてマークする。動的領域としてマークされた領域は要求時ごとに実行されるが、静的領域またはキャッシュ領域としてマークされた領域は１回のみ実行され、特定の依存関係が強制されるまでキャッシュに入れられている。しかし、この手法は、ウェブページのコンテンツの大部分が動的である状況を対象としたものである。動的コンテンツ(dynamic content)は一般に、親ページ(parent page)内に留まるか、またはキャッシュ指示(cache directive)のないユーザコントロール(user control)に含まれることが多い。この手法では、ページは依然として要求ごとに実行され、その成功は、各ページのハンドコーディング(hand-coding)と、ページを動的部分(dynamic part)と静的部分(static part)とに分割(split)することにかかっている。このようにしてページをハンドコーディングするのは時間がかかり、誤りも犯しやすい。
【課題を解決するための手段】
【００１０】
上記およびその他の制約は、ポストキャッシュ置換(post-cache substitution)のためのシステムおよび方法に関する本発明によって克服される。ポストキャッシュ置換により、開発者は、ウェブページ全体を出力キャッシュ(output cache)し、その後、そのキャッシュしたウェブページ(cached web page)のうちのキャッシングから除外される領域(region)を識別(identify)することができる。ポストキャッシュ置換の使用により、親ページ(parent page)がキャッシュされている場合であっても、ユーザ要求(user request)ごとに動的コンテンツ(dynamic content)を生成することができる。一実施形態では、本発明をコントロールとして備えることができるため、ウェブページ開発者がウェブページをコーディングする手間が省ける。
【００１１】
キャッシュされたウェブページ(cached web page)は、一般には、応答バッファのチェーン(chain of response buffers)として格納(store)される。ポストキャッシュ置換は、通常の応答バッファのチェーンに挿入(insert)される置換ブロック(substitution block)を使用する。一実施形態では、置換ブロックは、デリゲート(delegate)が呼び出(invoke)されると、動的コンテンツ(dynamic content)を生成(produce)するデリゲートである。キャッシュされたウェブページが要求(request)され、格納された応答バッファのチェーンが書き込まれると、そのウェブページの新たなコンテンツを生成するデリゲートが置換ブロックによって呼び出される。キャッシュされたウェブページが要求されるたびに、デリゲートが再呼出し(re-invoke)されて、新たなコンテンツ(new content)が生成(generate)される。これにより、キャッシュされたウェブページに新たなコンテンツを挿入(insert)することができる。開発者は、ページをキャッシュ領域としてマークする必要がなく、特定のウェブページがどのように機能可能であるかに関するその他の変更も加える必要がないので有利である。
【００１２】
ポストキャッシュ置換は、ユーザコード(user code)またはサーバコントロールを使用して実施することができる。キャッシュされたページ(cached page)の特定の領域(specific region)が、コールバックデリゲート(callback delegate)に関連づけられるため、静的な出力キャッシュウェブページ(static output web page)に動的コンテンツ(dynamic content)を挿入(insert)することができる。ユーザコードを実施する場合、コールバックメソッド(callback method)は、たとえば、ページ（またはユーザコントロール）上の静的メソッド(static method)または、他の任意のオブジェクト上のインスタンスメソッド(instance method)とすることができる。サーバコントロールを使用する場合、サーバのプロパティは、一般には、コントロールに含まれるページ上の静的メソッドに設定される。一実施形態では、ユーザは、デリゲートを設けたり設定したりする必要がなく、ポストキャッシュ置換をコントロールに自動的に備えることができる。
【００１３】
本発明のその他の特徴および利点は、以下の説明に記載され、以下の説明からある程度明らかになるであろうし、本発明を実施すればわかるであろう。本発明の特徴および利点は、特許請求の範囲で具体的に示す手段および組み合せによって実現され、獲得することができる。本発明の上記およびその他の特徴は、以下の説明と特許請求の範囲を読めばよりよくわかるであろうし、以下の記載に従って本発明を実施すればわかるであろう。
【発明を実施するための最良の形態】
【００１４】
本発明の上記およびその他の利点および特徴をどのようにして得ることができるかを説明するために、添付図面に図示されている本発明の特定の実施形態を参照することによって、上記で概要を述べた本発明についてより具体的に説明する。これらの図面には、本発明の典型的な実施形態のみが図示されており、したがって、本発明の範囲を限定するものとみなすべきではなく、添付図面を使用することにより、本発明についてさらに具体的かつ詳細に説明するものであることを理解されたい。
【００１５】
本発明は、出力キャッシュされたウェブページ(output cached web page)などの静的出力キャッシュコンテンツ(static output-cached content)に動的コンテンツ(dynamic content)を挿入する方法とシステムの両方にわたり、本発明の一実施形態では、ポストキャッシュ置換(post-cache substitution)と呼ぶ。ポストキャッシュ置換の１つの利点は、開発作業を向上させることができることである。本発明により、ページ開発者がデータをキャッシュするためにページ領域（ユーザコントロール）をキャッシュ領域としてマークしたり、各ページ上にカスタムコードを書き込んだりする必要がなく、ウェブページを出力キャッシュすることができる。次に、出力キャッシュされたウェブページの一部を、キャッシングから除外するものとして識別し、そのウェブページが要求されてキャッシュから供給されるたびに、識別された部分について新たなコンテンツを生成する。
【００１６】
ポストキャッシュ置換は、典型的な応答バッファのチェーンに挿入される置換ブロックを使用する。応答バッファのチェーンがユーザ要求に対する応答として書き出されると、置換ブロックによってコールバックデリゲートが呼び出される。このデリゲートは、ユーザ要求に対する応答に組み込まれる実際のコンテンツを生成する。キャッシュされたウェブページを供給するたびに、置換ブロックに関連づけられたデリゲートが呼び出されて、応答に挿入される動的コンテンツが生成される。このようにして静的出力キャッシュウェブページに動的コンテンツを組み込むことができる。
【００１７】
図１は、本発明の一実施形態を実施する環境の例を示す。図１には、ネットワーク１０２を介して通信するクライアント１００とサーバ１１０が図示されている。ネットワーク１０２は、たとえば、ローカルエリアネットワーク、ワイドエリアネットワーク、インターネット、またはこれらの組合せとすることができる。また、ネットワーク１０２は、無線および／または有線ネットワークも含むことができる。この例では、クライアント１００によって要求されるコンテンツはウェブページである。クライアント１００は、典型的には、ブラウザソフトウェアを使用して、サーバ１１０に対してウェブページを要求し、サーバ１１０はネットワーク１０２を介してクライアント１００にウェブページを提供する。
【００１８】
サーバ１１０がクライアント１００からウェブページを求める要求を受け取ると、サーバ１１０は典型的には、そのウェブページがすでにキャッシュ１１２に格納されているか否かを判断する。ウェブページがキャッシュ１１２に格納されている場合、ウェブページのキャッシュ版がクライアント１００に提供される。ウェブページがキャッシュ１１２に格納されていない場合、サーバ１１０は、典型的には、ウェブページを生成し、そのウェブページをクライアント１００に提供し、ページがキャッシュ可能ページとしてマークされている場合は、そのウェブページを将来のクライアント要求に備えてキャッシュ１１２に格納する。
【００１９】
前述のように、サーバ１１０は典型的には、効率的に応答するためにウェブページをキャッシュ１１２から提供する方を選ぶ。サーバ１１０がウェブページを生成しなければならない場合、サーバ１１０は、要求されたウェブページを生成するためにストレージ１１４、データベース１１５、および／またはその他の供給源にアクセスする必要がある場合がある。これらの動作は計算コストが高くつき、（たとえば、データベース照会を完了するのを待つ時間を要するなど）阻害要因となり、あるいは（たとえばウェブページの生成に大量の記憶量を必要とするなど）多くの資源を費やし、サーバ１１０が他のクライアントからの要求に応答する能力を低下させる可能性がある。さらに、サーバ１１０の応答時間も長くなる可能性がある。キャッシュ１１２によって、サーバ１１０はウェブページをより効率的に提供することができる。
【００２０】
図２は、サーバが提供可能なウェブページの一例である。ウェブページ２００は、ニュース２０４と広告スペース２０６とを含むことができる。ニュース２０４は、頻繁には変化しない。したがって、ウェブページ２００のこれらの部分をキャッシュすれば、サーバにとって有利である。ウェブページ２００の各部分は、キャッシュされたデータの有効期限が切れる時期を決定するキャッシング方針を持つことができる。たとえば、ニュース２０４は２０分ごとに有効期限切れとなることがある。これは、サーバにとって過度の負担とはならない。しかし、サーバは、ウェブページ２００を提供するたびに広告スペース２０６に新たな広告を入れたい。本発明は、開発者が、たとえば広告スペース２０６を、ウェブページ２００全体をキャッシュしながら、広告スペース２０６の動的コンテンツを生成するために使用されるコールバックデリゲートに関連づけることができるようにする。サーバは、ウェブページ２００が要求されるたびにウェブページ２００を生成する必要がないと同時に、サーバはウェブページ２００が要求されるたびに動的コンテンツを挿入することができるため、有利である。
【００２１】
図３は、図２のウェブページ２００をキャッシュ内でどのように表現することができるかを示す。この例では、ウェブサーバのキャッシュを一連の応答バッファチェーン３１４（および３１５）として表すことができるが、当業者なら、ウェブサーバのキャッシュを他の方式および構成で表すことも可能であることがわかるであろう。各応答バッファのチェーンは、この例では、典型的にはクライアントが要求することができる特定のウェブページまたはその他のコンテンツに対応する。応答バッファ(response buffer)のチェーン(chain)３１４は、第１のウェブページに対応し、応答バッファのチェーン３１２は第２のウェブページに対応する。
【００２２】
この例では、サーバが維持するキャッシュが出力キャッシュされる。この実施形態では、出力キャッシュは、応答バッファがＨＴＭＬデータを格納することを示す。それに対して、データキャッシングとは、ＨＴＭＬはまだ作成されていないが、データはキャッシュされることを示す。本発明は、これらのタイプおよびその他のタイプのキャッシュデータに適用することができる。
【００２３】
図３には、さらに、応答バッファ(response buffer)３０２と、置換ブロック(substitution block)３０４と、応答バッファ３０６とを含む応答バッファのチェーン３１２が図示されている。１つの応答バッファのチェーン内の応答バッファの数は、様々な数とすることができ、クライアントが要求するウェブページまたはその他のコンテンツに関係する。置換ブロック３０４は、応答バッファのチェーン３１２に挿入されるプレースホルダバッファ(placehokder buffer)である。要求に対する応答として応答バッファのチェーン３１２がクライアントに書き戻されると、置換ブロック３０４はデリゲート(delegate)３０８を呼び出(invoke)し、クライアントに書出しまたは送信される応答バッファ３１０またはその他のコンテンツを生成する。置換ブロックによって、ページが要求されるたびに動的コンテンツの生成が可能になる。１つの典型的な適用例は、ウェブページ２００が要求されるたびにウェブページ２００の広告スペース（図２参照）に新たな広告を挿入することである。
【００２４】
図３の例では、応答バッファのチェーン３１２は、出力キャッシュされるウェブページを表す。ウェブページ全体がキャッシュされ、置換ブロックが応答バッファと共に組み込まれている。置換ブロックは、ウェブページのうちのキャッシングから除外される部分を識別する。これによって、図３に示すように、キャッシュされた応答内の指定された場所に動的コンテンツを生成することができる。
【００２５】
図４は、キャッシュされたウェブページの動的コンテンツ(dynamic content)を生成(generate)することができるサーバシステム４００の一例を示す。サーバシステム４００は、コンテンツを求める要求４０４をクライアントから受け取る。この例では、クライアントによって要求されたコンテンツはウェブページである。出力パイプラインモジュール４０２が要求４０４を受け取る。出力パイプラインモジュール４０２は、典型的には、要求４０４を処理するいくつかのモジュールを含む。これらのモジュールは、要求４０４を処理して、サーバシステム４００からの適切な応答を生成する。一実施形態では、モジュールは連続的に動作する。たとえば、モジュールは、要求４０４が既知のクライアントからのものであるか否かを判断し、クライアントが要求ページ(requested page)にアクセスする権利があるか否かを判断(determine)する認証モジュール(authentication module)を含むことができる。ユーザが認知されない場合、応答は一般にはアクセス拒否を示し、出力パイプラインモジュール４０２内のそれ以降のモジュールはその要求４０４を処理する必要がない。その他のモジュールは、たとえば、処理される着信要求のログの維持、問合せ変換を解決して要求内の着信ＵＲＬを要求されたコンテンツにマップするマッピング、許可されたユーザであるか否かの判断などを行う。
【００２６】
もう１つのモジュールは、要求４０４内で特定されているウェブページがキャッシュ４１６に格納されているか否かを判断する要求処理モジュール４０８である。クライアントによって要求されたウェブページがキャッシュ４１６に格納されている場合、要求処理モジュール(request processing module)４０８はキャッシュ４１６にアクセスして、要求４０４でクライアントに要求されているウェブページに対応する応答バッファ４１８を検索する。置換ブロック４１７が要求処理モジュール４０８によって認識(recognize)された場合、前述のように、置換ブロック４１７に関連づけられたデリゲートが呼び出され、新たなコンテンツが生成されて、置換ブロック４１７の代わりに応答４０６内に組み込まれる。ウェブページがキャッシュ４１６内にない場合、ページ生成モジュール４１０がストレージ４１２（たとえばローカルおよび／またはリモートのデータソースなど）にアクセスし、クライアントによって要求されたウェブページを作成する。いずれの場合も、要求処理モジュール４０８は次に、応答４０６をクライアントに提供する。キャッシュ４１６には静的データ(static data)が格納され、置換ブロック４１７によって、応答４０６内に置換ブロック４１７の代わりに新たなコンテンツまたは動的コンテンツが挿入される。
【００２７】
図５は、ポストキャッシュ置換すなわち静的キャッシュコンテンツ(static cached content)に動的コンテンツ(dynamic contnt)を挿入することができる機能を詳細に示す流れ図である。サーバシステムは、クライアントから、コンテンツを求めるページ要求（５００）またはその他の要求を受け取る。そのページがサーバシステムのキャッシュ（５０２）内にあるか否かを判断する。ページがキャッシュ内にある場合、キャッシュから応答バッファのチェーンを検索する（５０６）。次に、応答バッファのチェーン内の置換ブロックに関連づけられたデリゲートを呼び出し（５０８）、他の応答バッファと共に置換ブロックの代わりに応答に組み込むコンテンツを生成する。最後に、サーバシステムは、その応答をクライアントにライトする（５１０）。
【００２８】
ページがキャッシュ内にない場合（５０２）、サーバシステムはそのページを生成する（５１２）。ページが生成されると（５１２）、典型的には、キャッシュページを構成する応答バッファのチェーンに置換ブロックが付加される（５１４）。また、クライアント側のキャッシュアビリティ(client side cache ability)をパブリック(public)からサーバ専用(server only)に低下(degrade)させ（５１６）、それによってページの生成時にそのページがクライアント上でキャッシュされないようにする。これにより、そのページを求める要求が将来あった場合に、置換ブロックに関連づけられたデリゲートが再呼出しされて新たなコンテンツが生成される。ページが生成された後、（適切な場合には）応答がサーバシステムのキャッシュに出力キャッシュされ（５１７）、応答がクライアントに書出しまたは送信される（５１０）。
【００２９】
ポストキャッシュ置換は、ページ開発者にとって、出力キャッシュされたウェブページの開発が簡略化されるいくつかの利点がある。たとえば、開発者は、単一のコンテキストパラメータ(single context parameter)を取って所与の場所で置換されるコンテンツであるストリングを返す、所定のコールバックシグネチャ(callback signature)を使用して、メソッドを作成することができる。その場合、開発者は、「Ｒｅｓｐｏｎｓｅ．ＷｒｉｔｅＳｕｂｓｔｉｔｕｔｉｏｎ」を呼び出し、そのコールバックメソッド(callback method)をパラメータとして渡す。コールバックメソッドは、その包含ページ上の静的メソッドまたはユーザコントロール(UserControl)、あるいは他の任意のオブジェクト上の静的メソッドまたはインスタンスメソッドとすることができる。コールバックメソッドは、同じキャッシュページを求める要求がいくつか同時に着信した場合、いくつかのスレッドから同時に呼び出される可能性があるため、スレッドセーフ(thread-safe)でなければならない。以下の例では、「Response.WriteSubstitution」の使用法を示す。
【００３０】
【表１】
2004348743.tif 000003
【００３１】
【表２】
2004348743.tif 000004
【００３２】
ウェブページに対する最初の要求時には、デリゲートが関連づけられた置換ブロックが、要求されたページに付加または組み込まれる。次に、ページが生成された後、ページがクライアントに提供される前に、WriteSubstitutionによって、HttpResponseSubstitutionCallbackデリゲートが呼び出され、ページの出力が生成される。次に、要求処理モジュールは、将来の要求のために取り出される応答バッファのチェーンを格納する。その後、そのウェブページに対して要求があった場合、要求処理モジュールは、要求をインタセプトし、置換ブロックを含む、関連づけられた応答バッファを検索する。置換ブロックを書き込むとき、デリゲートが呼び出され、動的コンテンツが生成されて、クライアントに対する応答に書き込まれるかまたは組み込まれる。
【００３３】
他の例では、開発者は、コンテンツを置換すべきページの場所にSubstitutionサーバコントロールを挿入し、MethodNameプロパティをコールバックメソッドに設定することができる。任意のオブジェクト上でコールバックメソッドを受け付けることができるResponse.WriteSubstitutionとは異なり、SubstitutionサーバコントロールのMethodNameプロパティは、コントロール包含PageまたはUserControl上の静的メソッドに設定される。以下の例では、Substitution Serverコントロールの使用法を示す。
【００３４】
【表３】
2004348743.tif 000005
【００３５】
本発明の他の利点は、本発明を使用して、親ページがキャッシュされていない場合でも動的コンテンツを生成することができることである。典型的には、開発者はポストキャッシュ置換をサポートする他のサーバコントロールを使用して、ポストキャッシュ置換にアクセスする。これは、そのようなコントロールを使用してポストキャッシュ置換を利用することができる開発者にとって好都合である。
【００３６】
本発明の実施形態は、以下で詳述する様々なコンピュータハードウェアを備える特殊目的コンピュータまたは汎用コンピュータを含むことができる。このコンピュータは、クライアントコンピュータまたはサーバコンピュータとすることができる。コンピュータがサーバコンピュータの場合、図６に示す構成要素の一部は必ずしも使用しない。たとえば、サーバコンピュータは一般に、動作のためにモニタ、フロッピー（登録商標）ディスク、またはシリアルポートを必要としない。したがって、図６に図示されているのは、適合するコンピューティング環境の一例である。本発明の範囲に含まれる実施形態には、コンピュータ実行可能命令またはデータ構造を担持または記憶するコンピュータ可読媒体も含まれる。そのようなコンピュータ可読媒体は、汎用コンピュータまたは特殊目的コンピュータがアクセス可能な任意の利用可能媒体とすることができる。たとえば、そのようなコンピュータ可読媒体は、コンピュータ実行可能命令またはデータ構造の形態の所望のプログラムコード手段を担持または記憶するために使用可能であって、汎用コンピュータまたは特殊目的コンピュータがアクセス可能な、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、もしくはその他の光ディスクストレージ、磁気ディスクストレージ、もしくはその他の磁気ストレージ、または他の任意の媒体を含むことができるが、これらには限定されない。情報をネットワークまたはその他の通信接続（有線、無線、または有線と無線の組合せ）を介してコンピュータに伝送または供給する場合、コンピュータは、当然ながらその接続をコンピュータ可読媒体とみなす。したがって、そのような接続は適切にはコンピュータ可読媒体と呼ばれる。上記の組合せも、コンピュータ可読媒体の範囲に含めるべきである。コンピュータ実行可能命令は、たとえば、汎用コンピュータ、特殊目的コンピュータ、または特殊目的処理ユニットに、特定の機能または機能群を実行させる命令およびデータを含む。
【００３７】
図６および以下の説明は、本発明を実施することができる適合するコンピュータ環境を概説することを意図したものである。本発明について、ネットワーク環境においてコンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令という一般的状況で説明するが、必ずしもその必要はない。一般に、プログラムモジュールは、特定のタスクを実行、または特定の抽象データタイプを実現する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。コンピュータ実行可能命令、それに付随するデータ構造、およびプログラムモジュールは、本明細書で開示する方法のステップを実行するプログラムコード手段の例を示すものである。このような実行可能命令の特定のシーケンスおよびそれに付随するデータ構造は、そのようなステップで説明する機能を実施するための対応する動作の例である。
【００３８】
本発明は、パーソナルコンピュータ、手持ち式装置、マルチプロセッサシステム、マイクロプロセッサ内蔵またはプログラム式民生電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータなどを含めて、多くの種類のコンピュータシステム構成を備えたネットワークコンピューティング環境で実施可能であることが、当業者ならわかるであろう。また、本発明は、通信ネットワークを介して（有線リンク、無線リンク、または有線リンクと無線リンクとの組合せによって）リンクされたローカル処理ユニットとリモート処理ユニットによってタスクが実行される、分散コンピューティング環境でも実施することができる。分散コンピューティング環境では、プログラムモジュールをローカルとリモートの両方のメモリストレージに配置することができる。
【００３９】
図６を参照すると、本発明を実施する例示のシステムは、処理ユニット２１と、システムメモリ２２と、システムメモリ２２を処理ユニット２１に結合することを含めて様々なシステム構成要素を結合するシステムバス２３とを備えた、従来のコンピュータ２０の形態の汎用コンピューティング装置を含む。システムバス２３は、メモリバスまたはメモリコントローラと、周辺バスと、様々なバスアーキテクチャのいずれかを使用するローカルバスとを含めた数種類のバス構造のいずれかとすることができる。システムメモリは、読取り専用メモリ（ＲＯＭ）２４およびランダムアクセスメモリ（ＲＡＭ）２５を含む。始動時などにコンピュータ２０内の要素間での情報伝達を容易にする基本ルーチンを含む基本入出力システム（ＢＩＯＳ）２６を、ＲＯＭ２４に記憶することができる。
【００４０】
コンピュータ２０は、磁気ハードディスク３９の読み書きを行う磁気ハードディスクドライブ２７と、取外し可能磁気ディスク２９の読み書きを行う磁気ディスクドライブ２８と、ＣＤ−ＲＯＭまたはその他の光媒体などの取外し可能光ディスク３１の読み書きを行う光ディスクドライブ３０も備えることができる。磁気ハードディスクドライブ２７、磁気ディスクドライブ２８、および光ディスクドライブ３０は、それぞれ、ハードディスクドライブインターフェース３２、磁気ディスクドライブインターフェース３３、および光ドライブインターフェース３４によってシステムバス２３に接続されている。これらのドライブとそれに付随するコンピュータ可読媒体は、コンピュータ２０に、コンピュータ実行可能命令、データ構造、プログラムモジュール、およびその他のデータの不揮発性記憶域を提供する。本明細書で説明する例示の環境では、磁気ハードディスク３９と、取外し可能磁気ディスク２９と、取外し可能光ディスク３１とを使用するが、磁気カセット、フラッシュメモリカード、デジタル多用途ディスク、ベルヌーイカートリッジ、ＲＡＭ、ＲＯＭなどを含めて、データを記憶するその他の種類のコンピュータ可読媒体も使用可能である。
【００４１】
オペレーティングシステム３５、１つまたは複数のアプリケーションプログラム３６、その他のプログラムモジュール３７、およびプログラムデータ３８を含めて、１つまたは複数のプログラムモジュールを含むプログラムコード手段を、ハードディスク３９、磁気ディスク２９、光ディスク３１、ＲＯＭ２４、またはＲＡＭ２５に記憶することができる。ユーザは、キーボード４０、ポインティングデバイス４２、または、マイクロフォン、ジョイスティック、ゲームパッド、衛星アンテナ、スキャナなどその他の入力装置（図示せず）を介して、コンピュータ２０にコマンドと情報を入力することができる。これらの入力装置およびその他の入力装置は、システムバス２３に結合されたシリアルポートインターフェース４６を介して処理ユニット２１に接続されることが多い。あるいは、入力装置は、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）など、その他のインターフェースによって接続することできる。システムバス２３には、ビデオアダプタ４８などのインターフェースを介してモニタ４７またはその他の表示装置も接続される。モニタに加えて、パーソナルコンピュータは一般に、スピーカやプリンタなど、その他の周辺出力装置（図示せず）も備える。
【００４２】
コンピュータ２０は、リモートコンピュータ４９ａおよび４９ｂなど、１または複数のリモートコンピュータへの論理接続を使用して、ネットワーク環境で動作することができる。リモートコンピュータ４９ａおよび４９ｂは、それぞれ他のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置、またはその他の共通ネットワークノードとすることができ、一般には、コンピュータ２０に関して上述した要素の多くまたは全部を含むが、図６にはメモリストレージ５０ａおよび５０ｂとそれに付随するアプリケーションプログラム３６ａおよび３６ｂのみが図示されている。図６に図示する論理接続は、ローカルエリアネットワーク（ＬＡＮ）５１とワイドエリアネットワーク（ＷＡＮ）５２とを含むが、これらは例示に過ぎず、限定的なものではない。このようなネットワーク環境は、事務所規模または企業規模のコンピュータネットワーク、イントラネット、およびインターネットでは一般的なものである。
【００４３】
ＬＡＮネットワーク環境で使用する場合、コンピュータ２０は、ネットワークインターフェースまたはアダプタ５３を介してローカルネットワーク５１に接続される。ＷＡＮネットワーク環境で使用する場合、コンピュータ２０は、インターネットなどのワイドエリアネットワーク５２を介した通信を確立するためのモデム５４、無線リンク、またはその他の手段を含むことができる。モデム５４は、内蔵モデムまたは外付けモデムとすることができ、シリアルポートインターフェース４６を介してシステムバス２３に接続される。ネットワーク環境では、コンピュータ２０に関連して図示されているプログラムモジュールまたはその一部を、リモートメモリストレージに記憶することもできる。図のネットワーク接続は例示的なものであり、ワイドエリアネットワーク５２を介した通信を確立するその他の手段も使用可能であることがわかるであろう。
【００４４】
本発明は、本発明の主旨および本質的特性から逸脱することなく、他の特定の形態でも実施可能である。本明細書に記載の実施形態は、あらゆる面で例示的なものに過ぎず、限定的なものではないとみなされるべきである。したがって、本発明の範囲は、以上の説明によってではなく、特許請求の範囲によって示される。特許請求と同等の主旨および範囲に含まれるすべての変更は、特許請求の範囲に含めるべきである。
【図面の簡単な説明】
【００４５】
【図１】ポストキャッシュ置換を実施するシステムの一例を示す図である。
【図２】キャッシュから提供され、動的コンテンツを含むコンテンツの一例を示す図である。
【図３】要求されたコンテンツに対応するキャッシュ内の応答バッファのチェーンを示し、新たなコンテンツを生成する置換ブロックに関連づけられたデリゲートを示す図である。
【図４】キャッシュされたコンテンツに動的コンテンツを挿入するサーバシステムの一実施形態を示す図である。
【図５】キャッシュされたコンテンツ内の動的コンテンツを提供する方法の一実施形態を示す流れ図である。
【図６】本発明に適合する動作環境を実現するシステムの一例を示す図である。
【符号の説明】
【００４６】
２０  コンピュータ
２１  処理ユニット
２２  システムメモリ
２３  システムバス
２４  ＲＯＭ
２５  ＲＡＭ
２６  ＢＩＯＳ
２７  磁気ハードディスクドライブ
２８  磁気ディスクドライブ
２９  取外し可能磁気ディスク
３０  光ディスクドライブ
３１  取外し可能光ディスク
３２  ハードディスクドライブインターフェース
３３  磁気ディスクドライブインターフェース
３４  光ドライブインターフェース
３９  磁気ハードディスク
４０  キーボード
４２  ポインティングデバイス
４７  モニタ
４８  ビデオアダプタ
４９ａ、４９ｂ  リモートコンピュータ
５０ａ、５０ｂ  メモリストレージ
５１  ローカルエリアネットワーク
５２  ワイドエリアネットワーク
５３  ネットワークインターフェースまたはアダプタ
５４  モデム
１００  クライアント
１０２  ネットワーク
１１０  サーバ
１１２  キャッシュ
１１４  ストレージ
１１５  データベース
２００  ウェブページ
２０４  ニュース
２０６  広告スペース
３０２  応答バッファ
３０４  置換ブロック
３０６  応答バッファ
３０８  デリゲート
３１０  応答バッファ
３１２  応答バッファのチェーン
３１４  応答バッファのチェーン
４００  サーバシステム
４０２  出力パイプラインモジュール
４０４  要求
４０８  要求処理モジュール
４１０  ページ生成モジュール
４１２  ストレージ
４１６  キャッシュ
４１７  置換ブロック
４１８  応答バッファ
【図１】
2004348743.tif 000006
【図２】
2004348743.tif 000007
【図３】
2004348743.tif 000008
【図４】
2004348743.tif 000009
【図５】
2004348743.tif 000010
【図６】
2004348743.tif 000011