(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6081472
(24)【登録日】2017年1月27日
(45)【発行日】2017年2月15日
(54)【発明の名称】専用のキャッシュを管理するためのシステム及び方法
(51)【国際特許分類】
G06F 13/00 20060101AFI20170206BHJP
G06F 12/00 20060101ALI20170206BHJP
【FI】
G06F13/00 540B
G06F12/00 546K
【請求項の数】40
【全頁数】24
(21)【出願番号】特願2014-541393(P2014-541393)
(86)(22)【出願日】2012年11月12日
(65)【公表番号】特表2014-534537(P2014-534537A)
(43)【公表日】2014年12月18日
(86)【国際出願番号】US2012064735
(87)【国際公開番号】WO2013071277
(87)【国際公開日】20130516
【審査請求日】2015年10月14日
(31)【優先権主張番号】61/559,017
(32)【優先日】2011年11月11日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】514116693
【氏名又は名称】モボファイルズ インク. ディービーエー モボライズ
(74)【代理人】
【識別番号】100105924
【弁理士】
【氏名又は名称】森下 賢樹
(72)【発明者】
【氏名】チョウ、ウィリアム ダブリュ.
(72)【発明者】
【氏名】スレシュ、サイラム
(72)【発明者】
【氏名】ヒュン、ジョン
(72)【発明者】
【氏名】ツイー、マーク
【審査官】
新田 亮
(56)【参考文献】
【文献】
米国特許出願公開第2010/0138485(US,A1)
【文献】
米国特許出願公開第2003/0120752(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/00
G06F 12/00
(57)【特許請求の範囲】
【請求項1】
ネットワークを介してリモートのサーバと通信し、前記サーバにより提供されるコンテンツ又はサービスを提供するように構成された、クライアントベースのコンピュータシステムであって、
プロセッサと、
ストレージデバイスと、
設定により指定されたリソースの集合のための専用のクライアント側のキャッシュと、
前記設定により指示されたように前記キャッシュを自動的に管理するキャッシュ管理部と、
を備え、
前記クライアント側のキャッシュは、
クライアントアプリケーションから前記サーバに対する前記リソースの1つのリクエストを透過的にインターセプトし、
前記リクエストをいつ送信するかを自動的に判定し、前記クライアントアプリケーションが前記リクエストを前記サーバに送信して前記サーバから応答を受信したように前記クライアントアプリケーションからみえるように前記ネットワークを介した前記サーバからの応答を提供するための前記設定により指示され、
前記サーバからの応答を提供するために、
前記クライアントアプリケーションが前記リクエストを送信したように前記サーバからみえるように前記サーバに前記リクエストを送信し、前記サーバからの応答を提供し、前記ストレージデバイスに前記応答を格納するか、又は、
前記キャッシュから前記応答を提供する
ことを特徴とするシステム。
【請求項2】
前記キャッシュ、前記リソースの集合、又はキャッシュ管理部は、前記設定に対する任意の更新を自動的に適用することにより設定されることを特徴とする請求項1に記載のシステム。
【請求項3】
前記システムは、管理コンソールから設定を取得するように構成されることを特徴とする請求項1に記載のシステム。
【請求項4】
前記管理コンソールを更に備えることを特徴とする請求項3に記載のシステム。
【請求項5】
前記キャッシュ、前記リソースの集合、及び前記キャッシュ管理部は、前記設定が前記管理コンソールにおいて変更されるたびに前記設定に対する更新を自動的に適用するように構成されることを特徴とする請求項4に記載のシステム。
【請求項6】
前記管理コンソールは、一意の設定識別子に基づいて前記設定を割り当てるように構成されることを特徴とする請求項4に記載のシステム。
【請求項7】
前記管理コンソールは、前記システムが前記管理コンソールに最初に登録するときに、前記システムに一意なクライアント識別子を割り当てるように更に構成されることを特徴とする請求項6に記載のシステム。
【請求項8】
前記設定は、前記キャッシュ管理部に指示するための第1のセクションと、前記キャッシュに指示するための第2のセクションとを備えることを特徴とする請求項1に記載のシステム。
【請求項9】
前記リクエストはHTTPリクエストを含むことを特徴とする請求項1に記載のシステム。
【請求項10】
前記リクエストはPOSTリクエストを含むことを特徴とする請求項9に記載のシステム。
【請求項11】
前記設定は、いつ前記ストレージデバイスに前記応答を格納するか、又は、いつルールの集合に基づいて前記キャッシュから前記応答を提供するかを指定することを特徴とする請求項1に記載のシステム。
【請求項12】
前記ルールは、いつ前記ストレージデバイスに前記応答を格納するか、又は、いつ前記キャッシュから前記応答を提供するかを決定するためのURLパターンを含むことを特徴とする請求項11に記載のシステム。
【請求項13】
前記ルールは、格納された応答が前記キャッシュに保持される期間を指定することを特徴とする請求項11に記載のシステム。
【請求項14】
前記ルールは、格納された応答が、前記サーバからの妥当性の確認なしに、前記応答を供給するために使用可能な期間を指定することを特徴とする請求項11に記載のシステム。
【請求項15】
前記ルールは、前記リクエストの前記キャッシュからの前記応答に対するマッピングを指定することを特徴とする請求項11に記載のシステム。
【請求項16】
前記マッピングのルールは、前記リクエストの一部を除去することを含むことを特徴とする請求項15に記載のシステム。
【請求項17】
前記設定は、異なるアプリケーションの種別に異なるルールを関連付けることを特徴とする請求項1に記載のシステム。
【請求項18】
専用の前記キャッシュは、前記アプリケーションの種別のうちの特定の1つに関連付けられることを特徴とする請求項17に記載のシステム。
【請求項19】
前記設定は、ユーザのアカウントを前記キャッシュが専用される前記リモートのサーバに関連付けることを特徴とする請求項1に記載のシステム。
【請求項20】
前記キャッシュ又は前記キャッシュ管理部は、前記キャッシュのコンテンツを自動的にリフレッシュするように構成されることを特徴とする請求項1に記載のシステム。
【請求項21】
前記キャッシュのコンテンツは、スケジュールにしたがって自動的にリフレッシュされるように構成されることを特徴とする請求項20に記載のシステム。
【請求項22】
前記キャッシュは、複数の専用キャッシュを含むことを特徴とする請求項1に記載のシステム。
【請求項23】
前記設定は、前記キャッシュのそれぞれが専用される対応する複数のアプリケーションの種別を指定することを特徴とする請求項22に記載のシステム。
【請求項24】
前記設定は、前記キャッシュのそれぞれが専用される対応する複数のユーザのアカウントを指定することを特徴とする請求項22に記載のシステム。
【請求項25】
前記キャッシュ管理部は、前記設定により指示されるように前記ストレージデバイスの前記専用キャッシュを再設定するように更に構成されることを特徴とする請求項22に記載のシステム。
【請求項26】
前記キャッシュ管理部は、前記設定により指示されるように前記ストレージデバイスの前記専用キャッシュのそれぞれの記憶空間を再設定するように更に構成されることを特徴とする請求項25に記載のシステム。
【請求項27】
前記キャッシュ管理部は、前記管理コンソールにより提供されるコマンドに応答するように構成されることを特徴とする請求項3に記載のシステム。
【請求項28】
前記コマンドは前記設定を更新するためのものであることを特徴とする請求項27に記載のシステム。
【請求項29】
前記コマンドは、前記キャッシュ中のコンテンツを削除するためのものであることを特徴とする請求項27に記載のシステム。
【請求項30】
前記コマンドは、URLパターンに対応する前記キャッシュ中のコンテンツを削除するためのものであることを特徴とする請求項29に記載のシステム。
【請求項31】
前記コマンドは、前記キャッシュ中のコンテンツをリフレッシュするためのものであることを特徴とする請求項27に記載のシステム。
【請求項32】
ネットワークを介してリモートのサーバと通信し、前記サーバにより提供されるコンテンツ又はサービスを提供するための方法であって、
それぞれが1以上のURLに関連付けられた1以上の専用キャッシュを生成するステップと、
それぞれのキャッシュについて、1以上のルールにしたがって前記キャッシュを管理するステップと、
クライアントアプリケーションから前記サーバに対する前記URLのうちの1つのリクエストを透過的にインターセプトするステップと、
前記リクエストをいつ送信するか、及び、前記クライアントアプリケーションが前記リクエストを前記サーバに送信して前記サーバから応答を受信したように前記クライアントアプリケーションからみえるように前記ネットワークを介した前記サーバからの応答をいつ提供するかを自動的に判定するステップと、
を備え、
前記自動的に判定するステップは、
前記クライアントアプリケーションが前記リクエストを送信したように前記サーバからみえるように前記サーバに前記リクエストを送信し、前記サーバからの応答を提供し、ストレージデバイスに前記応答を格納するステップ、又は、
前記キャッシュの1つから前記応答を提供するステップを含む
ことを特徴とする方法。
【請求項33】
前記1以上のキャッシュを再設定するステップを更に備えることを特徴とする請求項32に記載の方法。
【請求項34】
前記キャッシュのそれぞれに関連付けられた前記URLを再設定するステップを更に備えることを特徴とする請求項32に記載の方法。
【請求項35】
前記ストレージデバイスに前記応答をいつ格納するか、又は、前記キャッシュから前記応答をいつ提供するかを決定するためにURLパターンを用いるステップを更に備えることを特徴とする請求項32に記載の方法。
【請求項36】
格納された応答が前記キャッシュに保持される期間を決定するためにルールを使用するステップを更に備えることを特徴とする請求項32に記載の方法。
【請求項37】
格納された応答が、指定された値に基づいて前記サーバから妥当性を確認されることなしに、前記応答に供給するために使用可能な期間を決定するためにルールを使用するステップを更に備えることを特徴とする請求項32に記載の方法。
【請求項38】
前記キャッシュ中のコンテンツを削除するためのコマンドに応答するステップを更に備えることを特徴とする請求項32に記載の方法。
【請求項39】
URLパターンに対応する前記キャッシュ中のコンテンツを削除するためのコマンドに応答するステップを更に備えることを特徴とする請求項32に記載の方法。
【請求項40】
前記キャッシュ中のコンテンツをリフレッシュするためのコマンドに応答するステップを更に備えることを特徴とする請求項32に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施の態様は、ウェブキャッシングなどのキャッシュ管理に関する。
【背景技術】
【0002】
昨今のウェブアプリケーションなどのクライアントサーバシステムは、エンドユーザコンピュータ又はネットワーク上のある場所などの様々な地点において、パフォーマンスを最適化するためにキャッシュを活用することができる。これらのウェブキャッシュソリューションは、一般に、後続のアクセスにおけるより高速なコンテンツの取得のためにコンテンツを格納するためのディスク及び/又はメモリ内の同一の空間を、複数のユーザ及び/又はサイトからのコンテンツが共有する共有キャッシュを備える。共有キャッシュでは、異なるサイト経由で、及び/又は、異なるユーザによりアクセスされるコンテンツの間で、同一の限られたキャッシュ空間が競合されることになる。
【発明の概要】
【発明が解決しようとする課題】
【0003】
また、これらのウェブキャッシュソリューションは、アプリケーションに基づいてキャッシュの動作を一元的にカスタマイズする方法を備えない。例えば、大きな会社は、異なる部門又はビジネスユニットごとに独立したサーバなど、特定のウェブアプリケーションを実行する複数のサーバを有することがあるが、これらのアプローチは特定のドメイン及び/又はURLを対象にしているので、アプリケーションの種類に基づいてキャッシュポリシーを適用することはできない。
【課題を解決するための手段】
【0004】
本発明の実施の態様は、一元的に管理されたキャッシュ制御を提供することにより、これらの及び他の問題を解決する。より詳細には、本発明の実施の態様は、ユーザごとに(又はユーザのアカウントごとに)何がキャッシュされ又は消去されるのかの細粒度制御(例えば、URLパターンを介して)を提供する。更なる態様は、SSL(secure sockets layer)、DNS(domain name system)、又はネットワークの変更なしに、シームレスに可能にし、又は不可能にすることができる。更なる態様は、ドメイン又はURLパターンごとの空間の割り当てを提供する。更なる態様は、リード又はライト命令のキャッシュを調整し、URLテンプレートを介して自動的に設定して(例えば、自動起動(auto-mobolizing))、アプリケーションに特化した制御を提供する。
【0005】
さらに、本発明の実施の態様は、エンドポイント特有のウェブ性能の一元的制御を提供する。より詳細には、態様は、同期(sync)アクティビティの調整、フォームベースの認証のサポートの追加、オフラインアクセスの有効化又は無効化し、一意の識別子(UI)要素の設定、及び現実のエンドユーザの体験の測定又は報告を提供する。
【0006】
したがって、本発明の実施の形態は、それぞれが、特定のURLパターン(例えば、特定のサーバ/サイト、サブパス/フォルダ、又はファイル/オブジェクト)に関連付けられたコンテンツのキャッシュに割り当て可能な専用キャッシュの管理を提供する。これらの専用キャッシュは、キャッシュがエンドユーザのコンピュータ、又は、1以上のサーバシステムと通信するクライアントシステムの間の中間キャッシュサーバに存在する場合など、管理システムから遠隔にあってもよい(この意味で、すなわち管理システムに関して、リモート専用キャッシュとも呼ばれる)。
【0007】
関連特許出願である米国特許出願第12/630,806号(以下、「U.S.12/630,806」という)は、URLの範囲内にあるクライアントリクエストに対するサーバの応答をキャッシュする目的で、1以上のURLをサーバアカウント又はアプリケーションに関連付ける方法を記載する。U.S.12/630,806は、例えば、サーバアカウントのキャッシュのためのストレージの限度のカスタマイズを指定したり、サーバアカウントのキャッシュに何が格納されるかをカスタマイズしたりするなど、管理性を重大に向上させるサーバアカウントをキャッシュする様々な態様を記載する。それぞれのサーバアカウントについてストレージの限度をカスタマイズすることをサポートすることにより、U.S.12/630,806は、サーバアカウントのプライベートなキャッシュ空間を専用にするなどの特徴を提供する。これにより、このキャッシュ空間はサーバアカウントに関連付けられたURLパターンのキャッシュに専用される。パターンはサイト、サブパス/フォルダ、特定のファイル/オブジェクトであってもよい。
【0008】
サーバアカウントごとの専用キャッシュによる利点は、専用キャッシュは他のサイト/フォルダ/ファイルのためのコンテンツとキャッシュ空間を共有しないことである。これにより、ブラウザ又はプロクシサーバなどにより提供される共有キャッシュなど、共通のキャッシュ空間を共有することに起因する典型的なキャッシュの競合の影響を受けない。これらの共有キャッシュにおけるキャッシュの競合は、通常、専用キャッシュよりも高い。したがって、1以上のURLパターンに関連付けられた1以上の専用キャッシュを生成することにより、これらの専用キャッシュは、共有キャッシュよりも長いキャッシュ有効期間と高いヒット率を保証することができる。これにより、より高速なウェブ性能を提供し、使用される帯域幅をより狭くし、実行されるリクエスト/ラウンドトリップをより少なくし、サーバ側のインフラに対する全体の負荷をより低くすることができる。
【0009】
本発明は、これらのキャッシュの細粒度管理及び制御を提供することにより、US.12/630,806の専用キャッシュを改良する。何をキャッシュするか、どのようにキャッシュするかの細粒度制御の提供により、性能を向上させ、インフラの負荷を低減させることができる。例えば、複数の関連するリクエスト/URLを同一のキャッシュコンテンツにマッチさせたり、サーバにより指定された寿命を超えてキャッシュ可能なコンテンツの寿命を拡張したりしてもよい。
【0010】
これらの専用キャッシュの一元的管理は、多数の専用キャッシュをリモートで制御するために管理者により実行可能な様々なアクションを提供することができる。例えば、これらのアクションは、これらの専用キャッシュを動的に生成/削除したり、それらがそれぞれ割り当てられた空間を調整したり、それぞれに適用されるキャッシュポリシーを設定/変更したりすることを含んでもよい。
【0011】
本発明の実施の形態において、ネットワークを介してリモートのサーバと通信し、サーバにより提供されるコンテンツ又はサービスに対するアクセスを提供するように構成された、クライアントベースのコンピュータシステムが提供される。システムは、プロセッサと、ストレージデバイスと、設定により指定されたリソースの集合のための専用のクライアント側のキャッシュと、設定により指示されたようにキャッシュを自動的に管理するキャッシュ管理部とを備える。クライアント側のキャッシュは、クライアントアプリケーションから前記サーバに対する前記リソースの1つのリクエストを透過的にインターセプトし、前記リクエストをいつ送信するかを自動的に判定し、前記クライアントアプリケーションが前記リクエストを前記サーバに送信して前記サーバから前記応答を受信したように前記クライアントアプリケーションからみえるように前記ネットワークを介した前記サーバからの応答を提供するための前記設定により指示される。クライアント側のキャッシュは、前記クライアントアプリケーションが前記リクエストを送信したように前記サーバからみえるように前記サーバに前記リクエストを送信し、前記サーバからの応答を提供し、前記ストレージデバイスに前記応答を格納するか、又は、前記キャッシュから前記応答を提供することにより、これを実行する。
【0012】
本発明の別の態様において、ネットワークを介してリモートのサーバと通信し、サーバにより提供されるコンテンツ又はサービスを提供するための方法が提供される。方法は、それぞれが1以上のURLに関連付けられた1以上の専用キャッシュを生成するステップと、それぞれのキャッシュについて、1以上のルールにしたがってキャッシュを管理するステップと、クライアントアプリケーションからサーバに対するURLのうちの1つのリクエストを透過的にインターセプトするステップと、リクエストをいつ送信するか、及び、クライアントアプリケーションがリクエストをサーバに送信してサーバから応答を受信したようにクライアントアプリケーションからみえるようにネットワークを介したサーバからの応答をいつ提供するかを自動的に判定するステップと、を備える。応答を提供するステップは、クライアントアプリケーションがリクエストを送信したようにサーバからみえるようにサーバにリクエストを送信し、サーバからの応答を提供し、ストレージデバイスに応答を格納するステップ、又は、キャッシュの1つから応答を提供するステップを含む。
【図面の簡単な説明】
【0013】
添付の図面は本発明の実施の形態を示し、詳細な説明とともに、本発明の原理及び態様を説明する役目を果たす。
【0014】
【
図1】
図1は、本発明の実施の形態に係る、リモートサーバ上のアプリケーション/データにアクセスするクライアントコンピュータに保持された、一元的に管理された専用キャッシュのシステムアーキテクチャを示す図である。
【0015】
【
図2】
図2は、本発明の実施の形態に係るクライアントプロセスのセットの例を示す図である。
【0016】
【
図3】
図3は、実施の形態に係るクライアントコンピュータを管理サーバに登録するための登録処理の例を示す統一モデリング言語(UML)シーケンス図である。
【0017】
【
図4】
図4は、実施の形態に係る管理タスクループの例を示すUMLシーケンス図である。
【0018】
【
図5】
図5は、実施の形態に係る管理サーバからタスクが取得されたときの管理部によるタスクの処理の例を示すUMLシーケンス図である。
【0019】
【
図6】
図6は、実施の形態に係る、アプリケーション設定データを処理するためのアプリケーション設定更新のUMLフレームの例を示すUMLシーケンス図である。
【0020】
【
図7】
図7は、実施の形態に係る、サイト設定データを処理するためのサイト設定更新のUMLフレームの例を示すUMLシーケンス図である。
【0021】
【
図8】
図8は、実施の形態に係る、設定テンプレートを処理するための設定テンプレート適用のUMLフレームの例を示すUMLシーケンス図である。
【0022】
【
図9】
図9は、実施の形態に係る、キャッシュ消去タスクを処理するためのキャッシュ消去のUMLフレームの例を示すUMLシーケンス図である。
【0023】
【
図10】
図10は、実施の形態に係る、特定のアイテムをキャッシュから削除するためのキャッシュアイテムフラッシュのUMLフレームの例を示すUMLシーケンス図である。
【0024】
【
図11】
図11は、本発明の実施の形態に係る専用キャッシュ管理方法の例を示す図である。
【発明を実施するための形態】
【0025】
以下に示す実施の形態は、本発明の単なる適用例であり、本発明の範囲を限定するためのものではない。本出願の実施例のより実装に特化した詳細を含む優先権書類において追加が提供される。
【0026】
1 専用キャッシュの管理
本発明の実施の形態は専用のキャッシュを提供する。それぞれのキャッシュは、1以上の統一資源位置指定子(URL:uniform resource locator)のパターンごとにコンテンツを格納するために専用される。これらの専用キャッシュは、サーバのアカウントにそれぞれ関連付けられる。サーバのアカウントは、関連特許出願である米国特許出願第12/630,806に記載されたように、サーバの応答をキャッシュするために1以上のURLに関連付けられる。本発明の実施例は、例えばどのコンテンツをキャッシュするか、どのようにキャッシュするかを特定するなど、それぞれの専用キャッシュのカスタマイズを可能とすることにより、従来技術に対する重要な改良を提供する。
【0027】
本発明の実施の形態は、エンドユーザ、システム管理者、又はウェブサイト開発者などにより動的にカスタマイズ可能な設定を介した粒度の細かいキャッシュ制御を提供する。これらの設定は、ファイル又はデータベースなど、当業者に知られた多数の異なる方法により格納されてもよい。本発明の実施の形態は、任意の標準的なテキストエディタにより直接編集可能で、シンプルで拡張可能な構造を可能とするYAML(http://www.yaml.org/)の仕様にしたがったテキストファイルにおいてこれらの設定をサポートする。
【0028】
1.1 アプリケーションベースの設定
それぞれのウェブサイト/アプリケーションは、どのようにキャッシュされるかに影響する様々な異なる動作をとりうるので、本発明の実施例は、それぞれのウェブサイト/アプリケーションの異なる性能をサポートするために、それぞれのキャッシュをカスタマイズすることができるように、それぞれのキャッシュに異なるキャッシュルール/ポリシー/動作を割り当てることができる。本発明の実施例は、それぞれのウェブアプリケーションについてカスタマイズされた設定を定義するための柔軟な方法をサポートすることにより、現在及び将来の任意のアプリケーションをサポートするように適合されることができる。
【0029】
本発明の実施の形態は、URLテンプレートに基づいてキャッシュを自動的に生成してもよい。例えば、「serverl .acme.com」又は「server99.acme.com」など、可能性がある全てのサーバ名を予め知ることなく、「acme.com」などのインターネットドメインの範囲内の任意のサーバについて自動的にキャッシュを生成することが望ましい。URLテンプレートにより、システムは、リモートサーバからアクセスされたコンテンツのURLとマッチするために用いられる文字ベースのパターンに基づいて、自動的にキャッシュを生成することができる。例えば、「http://*.acme.com」として特定されるURLテンプレートにより、クライアントシステムは、「acme.com」ドメイン内の任意のサーバからのコンテンツについて、それぞれを明示的に特定する必要なく、別個のキャッシュを自動的に生成することができる。
【0030】
本発明の実施例は、例えば、それぞれの設定をURLパターンに割り当て、マッチしたURLを有する任意のサーバアカウントのキャッシュに設定を適用するなど、多数の異なる方法により、1以上の設定をキャッシュに適用してもよい。設定は、サーバから返送されるHTTP応答の「Server」ヘッダ又はカスタムヘッダなど、サーバから取得可能な別の識別情報に割り当てられてもよい。
【0031】
本発明の実施の形態は、それぞれの設定に割り当て可能な下記の属性をサポートすることにより、キャッシュに設定をマッチさせる。
【表1】
【0032】
下記は、URLに基づいて設定を関連付けるための属性の例である。
id:
mode: domain
url: 'http[s]://maps\.google\.com/.!i!'
【0033】
同様に、下記は、HTTPのカスタム応答ヘッダに基づいて設定を関連付けるための属性の例である。
id:
mode: header
name: MicrosoftSharePointTeamServices
value: '12\.0\.0\.[0-9]+'
【0034】
1.2 マッチング要求及び応答
一つの実施例において、アプリケーション設定は、2つの可能な属性のセットを含む。
・マッチング属性:アプリケーション設定が適用される要求/応答を特定する。
・アクション属性:アプリケーション設定のアクション/動作を特定する。
【0035】
マッチング属性は、リクエストのURLやレスポンスの本体など、クライアント/サーバの要求又は応答の1以上の要素に対してマッチングを行うことができる。本発明の実施例は、下記のマッチング属性を提供する。
【表2】
【0036】
マッチング属性に基づいて要求又は応答にマッチする設定が発見されると、その要求/応答に対応するアクション属性を適用させることができる。
【0037】
1.3 アクション設定
実施例において、アプリケーション設定に関連付け可能な多数の異なるアクション属性があり、1以上のアクションの任意の組み合わせが、キャッシュのデフォルト動作を変更するために指定されうる。これにより、例えば、異なる種別のウェブサイト/アプリケーションをサポートするために、又は、デフォルトを超えてウェブアプリケーションのキャッシュ能力を上乗せ/最適化するために、それぞれのサーバアカウントについて専用キャッシュの動作及び作用をカスタマイズすることができる。
【0038】
1.3.1 要求の再マッピング
それぞれ異なるURLに関する異なる複数の要求が、実際には同一の応答データに対応するケースがありうる。例えば、前ページのURLやセッションIDなど、一過性のデータを伝送するためにURLを利用することがウェブ開発者に知られている。このように、これらの一見異なる要求が実際にはサーバからの同一の応答をもたらすようなケースでは、それらを同一の要求であるとして扱うことが望ましい。これにより、これらの全ては、同一の応答のキャッシュされたバージョンから提供されることができる。
【0039】
同じ要求の異なるバリエーションを同じ応答に再マッピングするために、本発明の実施例は、同一の基調をなす要求の類似するインスタンスの間で異なる部分をフィルタリングにより除去する。例えば、URLクエリ文字列引数として指定された一過性のデータを除去する。これにより、これらの異なる要求のバリエーションは、最終的に同一にみえる。下記の表は、HTTPリクエストの部分をフィルタリングにより除去するための設定のアクション属性の例のリストである。
【表3】
【0040】
下記は、これらのアクション属性を用いて、前のページを指定するリクエストURLからクエリ文字列引数を除去するための設定の例である。
cache:
gets:
- subPath: '.*\?retURL=.+'
filterUrlPatterns:
- '[\?&]retURL=[^&]+'
【0041】
同様に、下記は、リクエストの一時的な要素を除去することにより、同一のウェブページ(シェアポイント(登録商標)のサイト)のリクエストのバリエーションを同一のキャッシュに再マッピングするための設定の別の、より複雑な例である。
cache:
posts:
- subPath: '.*/AllItems\.aspx.*'
notBodyPattems:
- '.*&ctl.*%24btnWikiSave=Apply&.*'
filterUrlPatterns:
- '(?i)[\?&]source=[^&]*'
- '(?i)[\?&]contenttypeid=[^&]*'
- '(?i)[\?&]initialtabid=[^&]*'
- '(?i)[\?&]visibilitycontext=[^&]*'
- '(?i)[\?&]isdlg=[^&]*'
- '(?i)[\?&]viewcount=[^&]*'
【0042】
1.3.2 キャッシュの寿命の制御
サーバがキャッシュを実行可能とするために適切に設定されていない場合、ユーザがサーバにより指定されたキャッシュの寿命を変更したい場合など、キャッシュされた応答の寿命を制御又は変更するのが望ましいケースがある。例えば、サーバには、たいていキャッシュ可能な静的なコンテンツ(例えば、画像、Java(登録商標)Script、カスケーディング・スタイル・シート、PDFなど)があるが、クライアントにおいて最適にキャッシュされるよう適切に設定されていないものもある。
【0043】
本発明の実施の形態に係る専用キャッシュ管理システムに格納されたアイテムの寿命を制御するために、システムは、サーバの応答に有効期間を適用する。サーバにより提供された有効期間がもしあれば、その有効期間よりもシステムの有効期間が優先される。下記の表は、サーバの応答がどのようにキャッシュされるかを制御する設定のアクション属性の例のリストである。
【表4】
【0044】
下記は、これらのアクション属性を用いて、「layouts」フォルダからの要求のキャッシュ有効期間として1年(31,536,000秒)を指定する設定の例である。
cache:
gets:
- subPath: '.*/_layouts/.*'
maxAge: 31536000
【0045】
2 一元化された管理
本発明の実施例は、キャッシュの操作及び動作を一元的に設定するための管理者のための管理コンソールを表示する管理サーバを提供することにより、リモート専用キャッシュの一元管理を提供する。実施例において、管理コンソールは、キャッシュされたアプリケーション/サイトの標準的なクライアント−サーバ相互作用からアウトオブバンドで操作する。
【0046】
図1は、リモートサーバ(例えば、サーバ108)上のアプリケーション/データにアクセスするクライアントコンピュータ(例えば、クライアント100)に保持された、一元的に管理された専用キャッシュ(例えば、キャッシュ103)の実施例を示す図である。
【0047】
図1を参照して、クライアント100は、ネットワーク107(例えば、インターネット)を介したサーバ108との間の通信をサポートするコンピュータである。クライアント100は、クライアントアプリケーション(クライアントApp)101の実行をサポートする。クライアントアプリケーションは、例えば、ウェブブラウザなどの、リモートサーバと通信可能なインターネットベースの任意のクライアントアプリケーションであってもよい。クライアント100は、コンピュータ命令の形式でソフトウェアを実行するための中央処理ユニット(CPU)又はプロセッサ、ソフトウェア及びCPUによりアクセス又は生成される関連するデータを格納するための不揮発性ストレージ(例えば、ディスクドライブ)、及びネットワーク107にアクセスするためのネットワークインタフェース(例えば、インターネットサービス104)を含んでもよい。
【0048】
更に詳細には、アプリケーションプログラミングインタフェース(API)インターセプト102は、クライアントApp101とインターネットサービス104との間に挿入され、クライアントApp101からサーバ108(インターネットサービス104を介して)、キャッシュ103へ、又は任意の2つの組み合わせでリクエストを導く。キャッシュ103に送られたリクエストは、ストレージ106(例えば、ディスクドライブなどの不揮発性ストレージデバイス)上にローカルに保持された応答を用いて処理されてもよい。ストレージ106に対するアクセスは、ファイルシステム、データベース、又はそれらの組み合わせなどの一般的なストレージアクセスレイヤであるストレージサービス105を介して処理されてもよい。
【0049】
さらに、管理部150は、キャッシュ103の機能及び動作を管理し、設定の変更及びアクションを動的に取得及び処理するための管理サーバ170(例えば、キャッシュ103などのローカルな専用キャッシュを管理するためのリモートサーバ)と相互作用する。ここで、「ローカルな専用キャッシュ」は、クライアントコンピュータシステムの一部分であるストレージデバイス上に格納されている専用キャッシュを指す。
【0050】
図2は、実施例のシステムにおけるクライアントの処理の実施の形態を示すソフトウェアアーキテクチャ図である。本図は、本実施の形態に最も関連するソフトウェアコンポーネントを示しており、図示されない他のソフトウェアコンポーネントもあることは当業者に理解されるところである。4つの論理的に区別される処理110、130、140、及び150がある。処理110及び130について、
図1からソフトウェアレイヤ(例えば、クライアントApp101、APIインターセプト102、キャッシュ103、及びインターネットサービス104)が図示され、それらが本図において特定のインスタンスにどのようにマップされるかが示される。
【0051】
処理110は、インターネットサービス104の一種であるマイクロソフトのWinlnetダイナミックリンクライブラリ(DLL)に標準的にリンクするクライアントApp101の一種であるマイクロソフトワード(登録商標)、インターネットエクスプローラ(登録商標)などのWinlnetクライアント111を実行する。Winlnetインターセプト160は、Winlnetクライアント111によるリクエストをインターセプトするAPIインターセプト102の一例であり、Winlnet161に対して送られたリクエストをキャッシュ103にリダイレクトする。Winlnetクライアント111は、マイクロソフトワードのためのCOMオフィスアドイン又はマイクロソフトインターネットエクスプローラのためのブラウザヘルパーオブジェクト(BHO)として実装可能なアプリケーションプラグイン113をロードする。アプリケーションプラグインは、キャッシュコンテンツ又はステータスを取得又は設定するなど、クライアントユーザインタフェースからキャッシュ103に対するアクセスを提供可能である。アプリケーションプラグインは、更に、Winlnetクライアント111とWinlnet161との間のファンクションコールのインターセプトを可能とするための挿入としても機能する。これにより、キャッシュ103は、Winlnetクライアント111から発行されたインターネットリクエストを取得して処理することができる。
【0052】
実施例は、インターネットサービスのためにMozilla Netlibを用いるMozilla Firefox(登録商標)など、インターネットサービス104にアクセスする任意のクライアントApp101に適用される。インターネットサービス104のAPIを介してインターネットにアクセスする任意のアプリケーションは、APIインターセプト102によりインターセプトされ、そのインターネットリクエストはキャッシュ103にリダイレクトされる。異なるインターネットサービス104にアクセスするクライアントApp101は、インターセプトを可能とするために、異なるAPIインターセプト102を用いてもよい。
【0053】
キャッシュ103は、例えば、処理110及び130など、複数のアプリケーションにわたって共通であってもよい。キャッシュ103は、キャッシュエンジン162を含んでもよく、キャッシュエンジン162は、アプリケーションの汎用の機能を提供する1以上のソフトウェアコンポーネントを含んでもよい。キャッシュ103は、アプリケーションの特有の機能をキャッシュエンジン162に論理的に拡張するゼロ以上のApp拡張部163を含んでもよい。ある実施の形態において、キャッシュエンジン162は、異なるコンピュータプラットフォームにわたる移植性を向上させるJava(登録商標)仮想マシン(JVM)164の内部で実行されるJava(登録商標)ソフトウェアであってもよい。キャッシュエンジン162がインターネットリクエストを取得すると、キャッシュエンジン162は、データベース141などを介して、ストレージからの応答データを問い合わせてもよい。データベース141は、別の処理140を介してアクセスされてもよい。キャッシュエンジン162は、リクエストをアシストするためにApp拡張部163をコールしてもよい。有効な応答が発見されると、キャッシュエンジン162は、例えば処理110におけるWinlnetクライアント111などの上位層のクライアントApp101に応答を返す。そうでなければ、キャッシュエンジン162は、リクエストをサーバに向けて発行させてもよい。これは、例えばクローラ処理130を介して、別のコンテクストにより実行されてもよい。
【0054】
図2の実施例において、キャッシュ103はクライアントコンピュータ上で動作するが、キャッシュ103は、例えばサーバよりも入手可能性が高く、又は、クライアントコンピュータへの帯域が広い1以上の異なるコンピュータシステム上で実行されてもよい。例えば、キャッシュ103は、同一又は近接するローカルエリアネットワーク(例えば、イーサネット(登録商標)、WiFi(登録商標)、ブルートゥース(登録商標)など)上の別のプラットフォーム(例えば、サーバ、電話など)で実行されてもよい。これにより、ウェブアプリケーションに対して、向上したキャッシュ103の利用可能性及び/又は動作特性を提供することができる。
【0055】
ある実施の形態に係る本発明の態様は、サードパーティーのソフトウェアによるアプリケーション特有のカスタマイズをサポートする。外部のソフトウェアがリクエストの処理をアシストすることが可能な直接的及び間接的な方法が多数存在する。例えば、アプリケーション特有のソフトウェアに対する直接的なコールは、キャッシュエンジン162にリンクされた外部機能を介してサポートされてもよい。別の例では、アプリケーション特有のソフトウェアに対する間接的なコールは、キャッシュエンジン162により開かれたメッセージキュー又はパイプなどのプロセス間通信を介してサポートされてもよい。外部のソフトウェアに対するコールは、リクエストパラメータに基づいて制限されるなど、条件付きであってもよい。例えば、外部のソフトウェアに対するコールは、特定のコールが実行される前にリクエストヘッダに対してマッチングをするためのパターンを指定する設定パラメータなど、キャッシュエンジン162の設定パラメータにより設定されてもよい。
【0056】
処理130は、多くはバックグラウンドにおいて(すなわち、ユーザには不可視で)、サーバとの通信をサポートするクローラ131を実行する。クローラは、JVM132の内部で実行されるJava(登録商標)ソフトウェアコンポーネントであってもよく、JVM132はJVM164と同じインスタンスであってもよい。クローラ131は、Winlnetブラウザ134などのインターネットベースのクライアントApp101をプログラムで制御することにより、サーバリソースを要求する。Winlnetブラウザ134は、Winlnetクライアント111と同一又は類似するものであってもよい。Winlnetブラウザ134は、Web Application Testing in Java(登録商標)(Watij)又はTeamDev JExplorerなどのブラウザ制御レイヤ133を介して、プログラムで制御されてもよい。処理110と同様に、処理130は、Winlnetブラウザ134からのインターネットリクエストのインターセプトを可能とするために、Winlnetインターセプト160を挿入する(例えば、クローラ131がJava(登録商標) native interface(JNI)を介してLoadLibraryをコールする)。
【0057】
処理130は、例えば、キャッシュされたバージョンが失われたり、リフレッシュされる必要がある場合などに、キャッシュ103に対するインターネットリクエストがサーバに送信される点で処理110と異なってもよい。これらのリクエストは、サーバにより処理可能とするために、Winlnet161を介してWinlnetインターセプト160により送出される。キャッシュ103は、(処理110とは)異なる動作モードを提供することにより、この動作をサポートしてもよい。この動作モードは、初期化期間中になされたコールを介してなど、クローラ131により明示的にリクエストされてもよい。サーバから取得された任意の新しい応答データは、データベース141に格納されてもよい。これにより、応答データは持続され、処理110などによりアクセス可能とすることができる。
【0058】
ある実施の形態は、ファイルシステム、データベース、又はそれらの組み合わせを含むデータベース141を介してストレージにアクセスしてもよい。データベース141は、キャッシュ103と同じ処理の中でアクセスされてもよいし、処理140などの別個のコンテクスト又は処理により提供されてもよい。ある実施の形態において、処理140はデータベース141を実行し、ローカルにキャッシュされたサーバのコンテンツに対するアクセスを管理する。データベース141は、JVM142の内部で実行されるJava(登録商標)ソフトウェアコンポーネントであってもよい。他の処理が、Java(登録商標) remote method invocation(RMI)又はJava(登録商標) database connectivity(JDBC)などの一般的なプロセス間通信(IPC)機構を用いて処理140と通信することにより、データベースからデータを取得又は格納してもよい。データベース141は、例えば、データベース141が共有データのプロセス間シリアライゼーションをサポートする場合などに、処理110又は130などのクライアントプロセスの中で実行されてもよい。
【0059】
処理150は、クローラを起動したり、サーバの接続性の変化を監視したりするなど、多岐にわたるタスクの制御及び管理を処理する管理部151を実行する。管理部151は、JVM152の内部で実行されるJava(登録商標)ソフトウェアコンポーネントであってもよい。他のプロセスは、Java(登録商標) RMIなどの一般的なIPC機構を用いることにより、管理部151により提供されるサービスにアクセスしてもよい。
【0060】
3 クライアント/サーバ相互作用
3.1 クライアント登録
図1の実施例などの本発明の実施例において、それぞれのリモートキャッシュ(すなわち、中央の管理部に対して)は、管理サーバ170に保持された特定の設定に論理的に関連付けられる。これにより、リモートキャッシュはインストール時に事前設定され、又は、後に再設定されることができる。実施例において、リモートキャッシュ(例えばキャッシュ103)は、クライアント100などのクライアントコンピュータ上に保持され、クライアント100は、最初に設定データを取得し、その後定期的に設定変更をチェックするために、管理サーバ170に登録する。全てのクライアントは、特定の設定グループに関連付けられ、それぞれの設定グループは、オーナーのGUID(globally unique identifier)と呼ばれる、それぞれのクライアント100に割り当てられる一意な識別子(UI)を有する。
【0061】
クライアント100に対するオーナーのGUIDの割り当ては、任意の数の方法により実行されてもよい。一つの実施例において、クライアント100のソフトウェアインストールパッケージは、後にクライアント100が利用可能となるように、内部に組み込まれたプロパティとしてオーナーのGUIDを含んでもよい。この場合、それぞれのグループごとに異なるインストールパッケージが存在し、これらのインストールパッケージのそれぞれは、異なるURLを介して一意に識別されうる。オーナーのGUIDを割り当てる別の例では、例えば、ユーザがクライアント100をインストールする前又は後に設定のグループを選択することを可能としてもよいし、管理サーバ170がクライアントのIPアドレス、コンピュータ名、又は現在のユーザのユーザ名など、クライアントについての情報に基づいて、オーナーGUIDを割り当てることを可能としてもよい。
【0062】
図3は、クライアント100を管理サーバ170に登録する実施例の統一モデリング言語(Unified Modeling Language:UML)シーケンスを示す。インストーラ180が実行されると、インストーラ180は、ファイルのインストール3001及び他の共通のインストールタスクを実行するとともに、オーナーGUIDの格納3002を実行する。インストーラ180が終了するとき、その最後のタスクは、管理部の起動3003を実行することにより、管理部150(例えば、キャッシュ管理部)を起動することである。
【0063】
管理部150は、キャッシュ103の構成及び設定の取得、適用、及び更新を含む、クライアント側のキャッシュ管理機能を担当する。管理部150が最初に実行されると、管理サーバ170への最初の登録を実行するための登録ステップ3010を実行する。新規のクライアント100が管理サーバ170に登録するたびに、管理サーバ170は、そのクライアントによる管理サーバ170への後の相互作用のための一意な識別子を割り当てるクライアントGUIDの割り当てステップ3020を実行する。管理サーバ170は、更に、新しいクライアント100に関連付けられた任意の初期タスクを生成するために、タスク生成ステップ3021を実行する。管理サーバ170は、ステップ3030において、場合によっては新しい設定又はライセンスタスクなどの新規クライアントのための初期タスクとともに、新規クライアントGUIDを新規クライアント100に返信する。
【0064】
一つの実施の形態において、管理部150は、いったん登録した後、例えば管理サーバ170の管理者により変更された設定の結果として生成された新規のタスクがないか定期的に管理サーバ170をチェックする。これについては、
図4を参照して更に後述するUMLタスクループ3040において説明する。
【0065】
3.2 MMCタスク
図4は、本発明の実施の形態に係るUMLフレームタスクループ3040の例を示すUMLシーケンス図である。
【0066】
図4を参照して、UMLフレームタスクループ3040は、管理部150が管理サーバ170から取得するタスクの一般的な処理を示す。管理部150は、定期的に(例えば、5秒おきに)、タスク要求ステップ4001において、管理サーバ170の管理者によりなされる設定の変更の結果として生成されうる新しいタスクをチェックする。タスク取得ステップ4010においてタスクが返信された場合、タスク処理ステップ4020においてタスクが適用される。実行されたタスクの結果は、結果報告ステップ4030において、管理サーバ170に報告される。
【0067】
図4は、タスク取得ステップ4010において管理サーバ170により管理部150へ送信される一般化されたタスク401を更に示す。タスクは、タイプ402及びオプションのペイロード403により定義される。タスク401のタイプ402及びペイロード403は様々であり、文字列、バイナリデータなどを含む様々なエンコードにより表現されてもよい。タスク処理4020において、1以上のタスクが処理されてもよく、それらはそれぞれ異なるタイプであってもよい。それぞれの特定のタスクの処理は、タスク処理4020の個々のバリエーションとして後述する。全てのタスクが処理された後、管理部150は、管理サーバ170にタスクの結果を送信するための結果報告4030を実行する。
【0068】
図5は、管理サーバ170からタスクが取得されたときの管理部150によるタスクの一般的な処理の実施例のUMLシーケンスを詳細に示す。タスクループ3040の繰り返しのそれぞれにおいて1以上のタスクを取得可能であり、これらのタスクはループ5000において管理部150により処理される。タスクのそれぞれは、ステップ5010において、タスクタイプ402により決定されたタスクのタイプに基づいて処理される。
【0069】
3.2.1 設定更新タスク
例えば、引き続き
図5を参照して、管理部150が、タスクタイプ402に「Update Settings」が設定されたタスク401を取得した場合、ペイロード403は、クライアント100で実行される必要がある、アプリケーション設定データの更新(ステップ5011)や、サイト設定データの更新(ステップ5012)や、設定テンプレートの設定(ステップ5013)など、複数のサブタスクを含みうる。これらについては、それぞれ、
図6〜8を参照して後で詳述する。
【0070】
設定更新タスクのペイロードが、アプリケーション設定が更新される必要があることを示す場合、ステップ5011においてアプリケーション設定が更新される。アプリケーション設定データは、細粒度制御、又は、例えばキャッシュ103及び/又は管理部150の動作を制御するための、クライアント100の複雑な動作パラメータを提供することができる。例えば、アプリケーション設定データは、どのHTTPリクエストがキャッシュされるかや、特定のURLがどのようにキャッシュされるかなど、キャッシュ103のアプリケーション特有の動作を指定することができる。
【0071】
図6は、本発明の実施の形態に係る、管理部150がアプリケーション設定データを含む設定更新タスク401のペイロード403を検出したときのアプリケーション設定データの処理の例を示す。まず、管理部150は、アプリケーション設定データを取得するために、又は、アプリケーション設定取得ステップ6002において、例えば管理サーバ170からアプリケーション設定データの取得先を示す、タスクペイロードの読み込み6001を実行する。管理部150は、アプリケーション設定のパース6003において、アプリケーション設定データをパースし、アプリケーション設定保存ステップ6004においてアプリケーション設定をストレージ106に保存する前に、それが有効であることをチェックする。管理部150は、アプリケーション設定の適用6005において、新しい設定を適用してもよい。新しい設定の適用は、ランタイムデータ構造の更新や、コンポーネントへの通知6006において変更を他のコンポーネント、例えばキャッシュ103に通知することなどを含んでもよい。
【0072】
図5に戻り、設定更新タスクのペイロードが、サイト設定データが更新される必要があることを示す場合、ステップ5012においてサイト設定データが更新される。サイト設定データは、生成すべき専用キャッシュ、及び、どのホスト名又はURLパターンをそれぞれのキャッシュが扱うかを指定することができる。
【0073】
図7は、本発明の実施の形態に係る、管理部150がサイト設定データを含む設定更新タスク401のペイロード403を検出したときのサイト設定データの処理の例を示す。まず、管理部150は、新しいサイト設定からサイトを取得するために、入手サイトの読み込み7001を実行する。管理部150は、データベース141に格納された、更新が必要な現状のサイトを取得するために、既存サイトの読み込み7002を実行する。ループ7003において、入手サイト設定におけるそれぞれのサイトについて、管理部150は、例えば新規サイトの追加又は既存サイトの更新を実行する、入手サイトの適用7004を実行してもよい。サイトの保存7005において、変更がデータベース141に保存されてもよい。管理部は、それぞれの変更をキャッシュ103などの他のコンポーネントが適用できるように、コンポーネントに通知7006を実行してもよい。次に、ループ7010において、管理部150は、もはやサイト設定の一部ではないサイトを探し、削除されたサイトの消去7011においてそれらを消去する。
【0074】
図5に戻り、設定更新タスクのペイロードが、設定テンプレートからの設定が利用可能であることを示す場合、設定テンプレートの適用5013においてその設定を適用する。設定テンプレートは、本発明の実施の形態のシステムの動作に影響を与える、アプリケーション設定データに類似する設定を含む。これらの設定は、アプリケーション設定における設定と異なってもよい。例えば、グラフィカルユーザインタフェースを介してエンドユーザ又は管理者により修正可能な設定など、より動的な性質を有してもよい。
【0075】
図8は、本発明の実施の形態に係る、管理部150がペイロード403から設定を取得するために入手設定の読み込み8001を実行するときの設定テンプレートの処理の例を示す。管理部150は、データベース141から現状の設定を取得するために、ローカル設定の取得8002を実行してもよい。つづいて、入手した設定に基づいてローカル設定の更新8003を実行してもよい。つづいて、ローカル設定をデータベース141に保持するために、ローカル設定の保存8004を実行する。
【0076】
設定更新サブタスクの結果は、ステップ4030において管理サーバ170に送信可能とするために収集される。
【0077】
3.2.2 キャッシュ消去タスク
管理部150が、タスクタイプ402に「Purge Cache」が設定されたタスクを取得した場合、ペイロード403は、
図5のステップ5014に示されるように、クライアント100においてキャッシュを消去する命令を指定する。
【0078】
図9は、本発明の実施の形態に係る、キャッシュ消去5014タスクを処理するためのUMLシーケンスの例を詳細に示す。
図9を参照して、管理部150は、例えば消去すべきキャッシュなどを記述したペイロード403からの消去設定の読み出し9001を実行し、ループ9010において、指定されたそれぞれのキャッシュを消去する。それぞれのキャッシュ消去要求は、例えばホスト名又はURLパターンにより、消去すべきサイトを識別してもよい。管理部150は、ストレージ106において、そのサイトのキャッシュが格納された位置を判定するために、サイト情報の読み込み9011を実行し、サイトキャッシュの消去9012を実行可能としてもよい。
【0079】
キャッシュ消去タスクの結果は、ステップ4030において管理サーバ170に送信可能とするために収集される。
【0080】
3.2.3 キャッシュアイテムフラッシュタスク
管理部150が、タスクタイプ402に「Flush Cache Items」が設定されたタスクを取得した場合、ペイロード403は、
図5のステップ5015に示されるように、クライアント100においてキャッシュから特定のアイテムを消去する命令を指定する。
【0081】
図10は、本発明の実施の形態に係る、キャッシュアイテムフラッシュ5015タスクを処理するためのUMLシーケンスの例を詳細に示す。
図10を参照して、管理部150は、例えばクライアント100上のキャッシュから削除すべきキャッシュアイテムなどを記述したペイロード403からのフラッシュ要求の読み出し10001を実行する。管理部150は、データベース141から、例えば現状のコンテンツなど、それぞれのサイトのキャッシュに関する情報を取得するために、サイト情報の読み込み10002を実行してもよい。
【0082】
つづいて、ループ10010(外側のループ)において、ペイロード403から取得されたフラッシュ要求のそれぞれについて、フラッシュ要求は、例えば正規表現又はURLパターンを用いて、キャッシュから消去すべき特定のコンテンツ又はコンテンツの種別を記述する。ループ10020(中間のループ)において、これらのフラッシュ要求のそれぞれについて、管理部150は、ストレージ106に格納されたサイトキャッシュに対応するフラッシュ要求にマッチしたアイテムの位置を検索するために、キャッシュアイテムの検索10023を実行してもよい。一つの実施例において、キャッシュアイテムは、例えばキャッシュアイテムのURLのハッシュを用いた高速検索のために、「lookup key」と名付けられたファイルに格納され、これらのキャッシュの位置検索は、それらの実際のURLを取得して比較するために、これらのキャッシュアイテムの対応するメタデータを読み出すことを必要としてもよい。
【0083】
つづいて、ループ10030(内側のループ)において、これらのキャッシュアイテムのそれぞれについて、管理部150は、キャッシュアイテムのユーザフレンドリーな名前に参照をつけるマッピングファイルや、このキャッシュアイテムに対応するHTTP応答ヘッダなど、これらのアイテムに関連する任意のコンテンツの位置を検索するために、関連アイテムの検索10034を更に実行してもよい。ステップ10035において、フラッシュリクエストにマッチするキャッシュアイテムを検出した管理部150は、全てのアイテムをストレージ106から削除する。
【0084】
キャッシュアイテムフラッシュタスクの結果は、ステップ4030において管理サーバ170に送信可能とするために収集される。
【0085】
3.3 方法の実施例
図11は、本発明の実施の形態に係る専用キャッシュ管理方法1100の例を示す。方法1100は、ネットワークを介してリモートサーバと通信するためのコンピュータを設定し、サーバにより提供されるコンテンツ又はサービスに対するアクセスを提供する。
【0086】
処理が開始されると、ステップ1110において、1以上のURLにそれぞれ関連付けられた1以上の専用キャッシュが生成される。それぞれのキャッシュは、ステップ1120において、1以上のルールを用いて管理される。クライアントアプリケーションからサーバに対するURLのリクエストは、ステップ1130において、ユーザには気づかれないようにインターセプトされる。キャッシュは、ステップ1140において、リクエストをいつ送信するかを自動的に判定し、クライアントアプリケーションがリクエストをサーバに送信してサーバから応答を受信したようにクライアントアプリケーションからみえるようにネットワークを介したサーバからの応答を提供する。キャッシュは、(1)ステップ1150において、クライアントアプリケーションがリクエストを送信したようにサーバからみえるようにサーバにリクエストを送信し、サーバからの応答を提供し、ストレージデバイスに応答を格納するか、又は、(2)ステップ1160において、キャッシュから応答を提供することにより、これを実行する。処理はステップ1120に戻り、キャッシュを管理し、リクエストをインターセプトして提供する。
【0087】
4 結論
上述した例は、特定のインターネットアプリケーション及びプロトコルに関連して示されたが、本発明はこれらのインターネットアプリケーション又はプロトコルに限定されない。現在及び将来の他のインターネットアプリケーション又はプロトコルが、上述の適応的な態様に用いられうる。
【0088】
本発明が特定の実施の形態に関連して説明されたが、これらの実施の形態は単に説明のためのものであり、限定的ではない。他の多くの本発明の適用例及び実施例が、本開示、後述の特許請求の範囲、及びそれらの均等物に照らして明らかである。