(58)【調査した分野】(Int.Cl.,DB名)
コンテンツデリバリネットワーク(CDN)サービスプロバイダにおいて、クライアントコンピューティングデバイスの第1のグループに由来する、前記コンテンツデリバリネットワーク(CDN)サービスプロバイダへのリクエストに少なくとも部分的に基づき、クライアントコンピューティングデバイスの前記第1のグループとは異なるクライアントコンピューティングデバイスの第2のグループを動的に決定するステップと、
クライアントコンピューティングデバイスの前記第2のグループに関するコンテンツの第2のセットを、クライアントコンピューティングデバイスの前記第1のグループに集合的に対応する、コンテンツの第1のグループに少なくとも部分的に基づき識別するステップであって、前記識別されたコンテンツの第2のセットは、コンテンツの前記第1のグループとは異なるステップと、
クライアントコンピューティングデバイスの前記第2のグループに情報を提供する権限を有するキャッシュコンポーネントにおいて、前記識別されたコンテンツの第2のセットの少なくとも一部をプレロードするステップと、
を有しており、
前記コンテンツデリバリネットワーク(CDN)サービスプロバイダの1つまたは複数のコンピューティングデバイスによって実行される、
方法。
前記識別されたコンテンツの第2のセットは、クライアントコンピューティングデバイスの前記第2のグループからの将来のコンテンツリクエストを期待して提供されるコンテンツを含む、
請求項1記載の方法。
前記識別された1つまたは複数のリソースは、クライアントコンピューティングデバイスの前記第2のグループからの将来のコンテンツリクエストを期待して提供されるコンテンツを含む、
請求項5記載のシステム。
【発明を実施するための形態】
【0008】
一般的に、本発明は、クライアントコンピューティングデバイスからコンテンツデリバリネットワーク(「CDN」)サービスプロバイダに対してなされるリソースリクエストの管理および処理に関する。殊に、本発明の態様を、クライアントコンピューティングデバイスのクラスタからのリソースリクエストの監視、および、クラスタに関して監視されるリソースリクエストに基づいて1つまたは複数のクライアントコンピューティングデバイスへと配信するためのコンテンツの管理を考慮して説明する。本発明の別の態様は、そのような監視されるリソースリクエストに基づいた、クライアントコンピューティングデバイスに関連付けられたクラスに対応するリソースリクエストの監視に関する。本発明の種々の態様を種々の実施例および実施形態に関して説明するが、当業者であれば、本明細書に記載されている実施形態および実施例は限定を意図したものではないことが分かる。
【0009】
図1は、コンテンツリクエストを管理および処理するためのコンテンツ配信環境100の概略的なブロック図を示す。
図1に示されているように、コンテンツ配信環境100には、コンテンツプロバイダおよび/またはCDNサービスプロバイダからコンテンツをリクエストする、複数のクライアントコンピューティングデバイス102(一般的にクライアントと称される)が含まれる。図示されている実施例において、クライアントコンピューティングデバイス102は、パーソナルコンピューティングデバイス、ラップトップコンピューティングデバイス、ハンドヘルドコンピューティングデバイス、ターミナルコンピューティングデバイス、モバイルデバイス、ワイヤレスデバイス、種々の電子装置および電子機器などを含む多種多様なコンピューティングデバイスに対応することができる。図示されている実施例において、クライアントコンピューティングデバイス102は、通信ネットワーク108、例えばワイドエリアネットワークまたはローカルエリアネットワークを介する通信を確立するために必要なハードウェアコンポーネントおよびソフトウェアコンポーネントを有している。例えば、クライアントコンピューティングデバイス102に、インターネットまたはイントラネットを介する通信を容易にするためのネットワーク機器およびブラウザソフトウェアアプリケーションを実装することができる。
【0010】
図1には図示されていないが、各クライアントコンピューティングデバイス102は何らかのタイプのローカルDNSリゾルバコンポーネント、例えばクライアントコンピューティングデバイスに属するDNSクエリを生成するDNSネームサーバを使用する。1つの実施形態においては、クライアントコンピューティングデバイス102が所属している企業ネットワークによってローカルDNSリゾルバコンポーネントを提供することができる。別の実施例においては、クライアントコンピューティングデバイス102との通信ネットワークコネクションを提供するインターネットサービスプロバイダ(ISP)によってローカルDNSリゾルバコンポーネントを提供することができる。
【0011】
コンテンツ配信環境100には、通信ネットワーク108を介して1つまたは複数のクライアントコンピューティングデバイス102と通信するコンテンツプロバイダ104も含ませることができる。
図1に示されているコンテンツプロバイダ104はコンテンツプロバイダに関連付けられた1つまたは複数のコンピューティングデバイスの論理関連付けに対応する。殊に、コンテンツプロバイダ104は、クライアントコンピューティングデバイス102からのコンテンツ(例えばウェブページ)に関するリクエストを取得して処理するための1つまたは複数のサーバコンピューティングデバイスに対応するウェブサーバコンポーネント110を有することができる。さらにコンテンツプロバイダ104は、CDNサービスプロバイダからのネットワークリソースに関するリクエストを取得して処理するための1つまたは複数のコンピューティングデバイスに対応する、オリジンサーバコンポーネント112および関連するストレージコンポーネント114を有することができる。当業者であれば、コンテンツプロバイダ104を種々の付加的なコンピューティングリソース、例えば、コンテンツおよびリソースを管理するための付加的なコンピューティングデバイス、DNSネームサーバなどに関連付けできることが分かる。例えば、
図1には図示していないが、コンテンツプロバイダのドメインに対応するクライアントコンピューティングデバイスDNSクエリを解決する権限を有する1つまたは複数のDNSネームサーバコンポーネントにコンテンツプロバイダ104を関連付けることができる。
【0012】
図1の参照を続ける。コンテンツ配信環境100にはさらに、通信ネットワーク108を介して1つまたは複数のクライアントコンピューティングデバイス102およびコンテンツプロバイダ104と通信するCDNサービスプロバイダ106を含ませることができる。
図1に示されているCDNサービスプロバイダ106はCDNサービスプロバイダに関連付けられた1つまたは複数のコンピューティングデバイスの論理関連付けに対応する。殊に、CDNサービスプロバイダ106は、通信ネットワーク108のノードに対応する複数のPOP(Point of Presence)ロケーション116,122,128を含むことができる。各POP116,122,128は、クライアントコンピュータ102からのDNSクエリを解決するための複数のDNSサーバコンピューティングデバイスからなるDNSコンポーネント118,124,130を有する。さらに各POP116,122,128は、コンテンツプロバイダに由来するリソースを記憶し、また、リクエストされた種々のリソースを種々のクライアントコンピュータへと伝送する、複数のキャッシュサーバコンピューティングデバイスからなるリソースキャッシュコンポーネント120,126,132を有する。DNSコンポーネント118,124,130ならびにリソースキャッシュコンポーネント120,126,132はさらに、通信を容易にする付加的なソフトウェアコンポーネントおよび/またはハードウェアコンポーネントを有することができ、そのようなコンポーネントには負荷分散および負荷共有のためのソフトウェア/ハードウェアコンポーネントが含まれるが、コンポーネントはそれらに限定されるものではない。
【0013】
図示されている実施例において、DNSコンポーネント118,124,130およびリソースキャッシュコンポーネント120,126,132は、それらのコンポーネントまたはコンポーネントの一部が物理的に隔てられているか否かにかかわらず、論理的にグループをなすものと見なされる。さらに、POP116,122,128は
図1において、CDNサーバプロバイダ106に論理的に関連付けられているものとして示されているが、クライアントコンピューティングデバイス102の種々のデモグラフィックが最善に提供されるように、POPは通信ネットワーク108にわたり地理的に分散されていてもよい。さらには、当業者であれば、CDNサーバプロバイダ106を種々の付加的なコンピューティングリソース、例えば付加的なコンテンツプロバイダ134、コンテンツおよびリソースを管理するための付加的なコンピューティングデバイスなどに関連付けできることが分かる。
【0014】
当業者であれば、
図1に示されているコンポーネントおよび構成が単に例示的なものに過ぎないことが分かる。したがって、殊に通信を容易にするための付加的なコンポーネント、システムおよびサブシステムに関して、付加的または代替的なコンポーネントおよび/または構成を使用することができる。
【0015】
次に
図2から
図4を参照して、
図1のコンテンツ配信環境100の種々のコンポーネント間のインタラクションを説明する。しかしながらそれらは例示を意図したものなので、図示されている実施例は簡略的なものであり、通信を容易にするために使用される多くのコンポーネントは図示されていない。当業者であれば、本発明の精神および範囲から逸脱することなく、そのようなコンポーネントを使用することができ、したがって付加的なインタラクションを行えることが分かる。
【0016】
ここで
図2を参照する。クライアントコンピューティングデバイス102は、コンテンツリクエストを生成する。このコンテンツリクエストはコンテンツプロバイダ104によって、例えばウェブサーバ110を介して受信および処理される。図示されている実施例に関して、コンテンツに関するリクエストは一般的なネットワークプロトコル、例えばハイパーテキストトランスファープロトコル(「HTTP」)に従うものでよい。コンテンツリクエストの受信に基づいて、コンテンツプロバイダ104は適切な応答コンテンツを識別する。図示されている実施例において、リクエストされたコンテンツを、情報、例えばハイパーテキストマークアップ言語(「HTML」)、拡張可能マークアップ言語(「XML」)などを処理することによってクライアントコンピューティングデバイス102に表示されるウェブページに対応させることができる。リクエストされたコンテンツは多数の埋め込みリソース識別子も含むことができ、それらはリクエストされたコンテンツの処理の一部としてクライアントコンピューティングデバイス102によって取得されるべきリソースオブジェクトに対応する。埋め込みリソース識別子は一般的にリソース識別子またはリソースURLと称される。
【0017】
1つの実施例において、リソースURLではCDNサービスプロバイダ106のドメイン(例えば、cdnprovider.com)、リクエストされるリソースの同一の名前(例えば、「resource.xxx」)およびリソースが発見される同一のパス(例えば「path」)が識別される。リソースURLはさらに付加的な処理情報(例えば「additional information」)を含むことができる。リソースURLは、
http://additional_information.cdnprovider.com/path/resources.xxx
となる。
【0018】
別の実施例においては、CDNサービスプロバイダ106に関連付けられた情報が、例えばプリペンディングまたは他の技術によって、リソースURLに含まれているので、リソースURLはコンテンツプロバイダ104に事前に関連付けられているURLに関連付けられた全ての情報を保持することができる。この実施例において、リソースURLは、
http://additional_information.cdnprovider.com/www.contentprovider.com/path/resource.xxx
となる。
【0019】
リクエストしたコンテンツの受信に基づいて、クライアントコンピューティングデバイス102は、例えばブラウザソフトウェアアプリケーションによって、コンテンツに含まれるいずれかのマークアップコードの処理を開始し、埋め込みリソース識別子によって識別されたリソースの取得を試みる。したがって、コンテンツを取得する第1のステップは、クライアントコンピューティングデバイス102による(自身のローカルDNSリゾルバを介する)、変換されたURLの「.」および「com」部分を管轄するDNSサーバを識別できるリソースURLリソース識別子に関するDNSクエリの発行に対応する。埋め込みURLの「.」および「com」部分を解決した後に、クライアントコンピューティングデバイス102は続いて、埋め込みURLの「.cdnprovider」部分を管轄するDNSサーバを識別できる、リソースURLに関するDNSクエリを発行する。URLの「.」および「com」部分に対応するDNSクエリの発行は周知の事項であるので、ここでは説明しない。
【0020】
ここで
図3を参照する。図示されている実施例においては、リソースURLの「cdnprovider」部分の解決が成功すると、CDNサービスプロバイダ106に関連付けられたDNSサーバのネットワークアドレス、例えばIPアドレスが識別される。1つの実施例において、IPアドレスはPOPのDNSサーバコンポーネントにとってユニークな特定のネットワークアドレスでよい。別の実施例においては、IPアドレスを1つまたは複数のPOPによって共有することができる。この実施例においては、共有IPアドレスについての別のDNSクエリが一対多のネットワークルーティングスキーマ、例えばエニーキャストを使用し、特定のPOPがネットワークトポロジの機能としてリクエストを受信する。例えば、エニーキャストを実施する場合、共有IPアドレスについてクライアントコンピューティングデバイス102によって発行されたDNSクエリがクライアントコンピューティングデバイスから、論理的に最短のネットワークトポロジ距離(頻繁にネットワークホップと称される)を有しているDNSサーバコンポーネントに到達する。ネットワークトポロジ距離は地理的な距離に対応している必要はない。しかしながら、幾つかの実施形態においては、ネットワークトポロジ距離がクライアントコンピューティングデバイス102とPOPとの間の最短ネットワーク距離を表すことが考えられる。当業者であれば、ネットワークトポロジを決定する種々の手段が存在していることが分かる。
【0021】
図3の参照を続ける。上記のいずれかの実施例(またはいずれかの他の実施例)においては、POP116のDNSコンポーネント118における特定のDNSサーバがクライアントコンピューティングデバイス102からリソースURLに対応するDNSクエリを受信する。DNSコンポーネント118におけるDNSサーバのうちの1つがリクエストを受信すると、特定のDNSサーバはリクエストの解決を試みる。
図3に示されているような1つの実施例においては、特定のDNSサーバが、リクエストされたリソースに関するリクエストを処理するリソースキャッシュサーバコンポーネントのIPアドレスを識別することによって、DNSクエリを解決する。リソースキャッシュコンポーネント120,126,132の選択に基づき、DNSサーバコンポーネント118はキャッシュサーバコンピューティングデバイス、リソースキャッシュコンポーネント、または、リソースキャッシュコンポーネントに関連付けられた負荷分散/負荷共有デバイスのIPアドレスを提供する。
【0022】
ここで
図4を参照する。クライアントコンピューティングデバイス102は、IPアドレスによって識別されたリソースキャッシュコンポーネントからリソースをリクエストするために、インターネット通信プロトコルを使用することができる。リソースキャッシュコンポーネントは以下においてより詳細にするようにリクエストを処理し、リソースをクライアントコンピューティングデバイス102に提供する。受信に基づき、リクエストされたリソースはクライアントコンピューティングデバイス102におけるブラウザアプリケーションによって適切に処理される。当業者には明らかであるように、選択されたリソースキャッシュコンポーネント120,126,132は、上述のように、可能であればリクエストされたリソースを提供することができるか、リクエストされたリソースを別のソース、例えばピアキャッシュサーバコンピューティングデバイスまたはコンテンツプロバイダ104のオリジンサーバ112から取得することを試みることができる。
【0023】
図4の参照を続ける。リソースリクエストの処理に関連して、リソースキャッシュコンポーネントは、リクエストを行ったクライアントコンピューティングデバイスに関連付けられたクラスを決定する。1つの実施形態において、リソースキャッシュコンポーネントはクライアントから受信した情報を使用し、クラスを決定する。そのようなクラスをクライアントから直接的に決定することができる(例えば、クライアントコンピューティングデバイスまたはISPによって提供された情報)か、間接的に決定することができる(例えば、クライアントコンピューティングデバイスのIPアドレスを介して推測された情報)。さらに、リソースキャッシュコンポーネントは付加的な情報、例えば、リクエストを行ったクライアントコンピューティングデバイスが所在しているタイムゾーンを使用し、クラスを決定することができる。リソースキャッシュコンポーネントはクラス情報をリクエストされたコンテンツに関連付け、その関連付けられたクラス情報、例えばログファイルをCDNサービスプロバイダ106と共有するために保存する。図示されている実施例においては、事前に規定されたクラス定義に基づいてクラスを静的に決定することができるので、クラスの関連付けをリソースリクエストの受信と同時に実施することができる。例えば、リクエストを処理する時点において地理的なロケーションを知らせることができる。別の実施例においてはクラスを動的に決定することができ、この場合にはリクエストを処理する時点ではクラスは決定されない(またはクラスを決定することができない)。例えば、ある時間窓にわたる行動の観察に基づいて行動的なクラスを決定する場合、そのように観察を行う時間窓にわたり観察されるデータの処理が完了するまでクラスは決定されない。
【0024】
1つの実施例においては、クライアントコンピューティングデバイスが属している特定の地理的な領域にクラスを対応付けることができる。付加的または代替的に、クラスを一時的な範囲、例えばタイムゾーン、ビジネスアワー、日中、夜間、休日などに対応付けることができる。別の実施例においては、リクエストされたコンテンツまたはユーザ、もしくはその両方に関連付けられた特定の従属的な領域、例えばニュースグループにクラスを対応付けることができる。さらには、クラスを地理的なデータに対応付けることができる。クライアントコンピューティングデバイスから収集することができる情報に依存して、リソースキャッシュコンポーネントはこの情報を当業者には公知である種々のやり方で決定および管理することができる。さらには、リソースを受信したPOPにおける1つまたは複数のコンピューティングデバイスが上述のあらゆる機能を実施できることも当業者には明らかである。
【0025】
以下では
図5を参照しながら、リソースキャッシュコンポーネント132によって収集された、関連付けられたクラス情報をCDNサービスプロバイダ106がどのように処理および管理するかの実施例を説明する。リソースキャッシュコンポーネント132は、POP128において収集された、関連付けられたクラス情報をCDNサービスプロバイダ106に提供する。続いて、関連付けられたクラス情報をCDNサービスプロバイダによって種々のやり方で処理することができる。1つの実施例において、CDNサービスプロバイダは、関連付けられたクラス情報に基づいて、CDNのコンピューティングデバイスに提供するコンテンツ情報を識別することができる。識別されたコンテンツ情報は、リソースキャッシュコンポーネント132において収集された、関連付けられたクラス情報に基づいて、頻繁にリクエストされたコンテンツのリストを含むことができる。択一的に、識別されたコンテンツ情報は頻繁にリクエストされたコンテンツ自体も、この頻繁にリクエストされたコンテンツに関連付けられた付加的な情報、例えばネットワーク性能メトリクス、コンテンツプロバイダのサービスレベルアグリーメントなど、および/または、他の相応のコンテンツ(例えば、相応のドキュメント、広告など。これに関しては以下において
図7を参照しながら詳細に説明する)も含むことができる。
【0026】
コンテンツ情報の識別の他に、CDNサービスプロバイダ106はこのコンテンツ情報が提供される特定のキャッシュコンポーネント120を識別することができる。特定のキャッシュコンポーネントの識別は、リソースキャッシュコンポーネント132によって収集された、関連付けられたクラス情報を基礎としてもよい。例えばクラスがタイムゾーンに相当する場合、CDNサービスプロバイダは、異なるタイムゾーンを有するクライアントコンピューティングデバイスに情報を提供する権限を有するリソースキャッシュコンポーネント120を識別することができる。別の実施例においては、CDNサービスプロバイダは識別されたコンテンツ情報を単純に、CDNサービスプロバイダの全てのリソースキャッシュコンポーネントまたはリソースキャッシュコンポーネントのサブセットに送信し、識別されたコンテンツ情報をどのように管理するかをそれらのリソースキャッシュコンポーネントに決定させることができる。
【0027】
図5の参照を続ける。この実施例との関係において、関連付けられたクラス情報がCDNサービスプロバイダによって一度処理されると、識別されたコンテンツ情報は選択されたリソースキャッシュコンポーネント120に提供され、このリソースキャッシュコンポーネント120が、CDNサービスプロバイダ106によって提供された、識別されたコンテンツ情報を管理する。1つの実施例においては、リソースキャッシュコンポーネント120は、識別されたコンテンツに関してリソースキャッシュコンポーネント120に対して行われる後続のコンテンツリクエストに先行して、ストレージロケーションからコンテンツを取得することによって、識別されたコンテンツ情報を管理する。別の実施例においては、キャッシュコンポーネント120は識別されたコンテンツをディスクメモリからリソースキャッシュコンポーネント120のメモリに移すことができる。さらに別の実施例においては、キャッシュコンポーネント120は、リソースキャッシュコンポーネント120のメモリにおいて識別されたコンテンツに関連付けられた有効期間を変更することができ、これにより、クライアントコンピューティングデバイスによって後にリクエストが行われる場合でもコンテンツの利用が可能である状態を保証することができる。さらに別の実施例においては、キャッシュコンポーネントは識別されたコンテンツのリソースキャッシュコンポーネントにおけるアベイラビリティを単純に変更することができる。
【0028】
当業者であれば、本発明の精神および範囲から逸脱することなく、種々のあらゆる方法論またはアルゴリズムを関連付けられたクラス情報の処理および管理に使用できることが分かる。以下において説明する特別な実施例はさらなる例示を目的としたものである。
【0029】
第1のタイムゾーンを有する領域内のクライアントコンピューティングデバイスのセットに関して監視されるコンテンツリクエストにクラス情報が対応している1つの実施例においては、CDNサービスプロバイダがクラス情報を処理し、第1のタイムゾーンにおいて頻繁にリクエストされたリソースのセットを識別する。続いてCDNサービスプロバイダは、異なるタイムゾーンにおけるクライアントコンピューティングデバイスのセットに情報を提供する権限を有するリソースキャッシュコンポーネントにおいて識別された、頻繁にリクエストされたリソースのセットに関連付けられたコンテンツをプレロードする。したがって、CDNサービスプロバイダはその後、そのようなプレロードされたコンテンツを短い配信待ち時間で提供することができる。さらに当業者であれば、異なるタイムゾーンに位置するクライアントコンピューティングデバイスのセットの使用に関して権限を有するキャッシュコンポーネントは、個々のキャッシュコンポーネントに課される制約条件の処理に基づき、適切な時点において何時でもコンテンツをプレロードすることができる。また、キャッシュコンポーネントにおいてコンテンツ全体、またはコンテンツの一部のみをプレロードできることも当業者には明らかである。
【0030】
別の実施例においては、CDNサービスプロバイダは関連付けられたクラス情報を処理し、頻繁にリクエストされたリソースのリストを識別し、このリストをリソースキャッシュコンポーネントのセットに提供する。続いて、各リソースキャッシュコンポーネントは、頻繁にリクエストされた1つまたは複数のリソースをプレロードすべきか否かを別個に決定することができる。
【0031】
コンテンツ情報がクライアントコンピューティングデバイスの第1のクラスタによって行われたリソースリクエストから導出されたコンテンツリストであり、そのコンテンツリストがクライアントコンピューティングデバイスの第2のクラスタを使用するキャッシュコンポーネントに提供されているさらに別の実施例においては、第2のクラスタにおけるクライアントコンピューティングデバイスが後にそのリストからコンテンツをリクエストするか否かをCDNサービスプロバイダが監視することができる。続いてCDNサービスプロバイダは、第1のクラスタによって第2のクラスタに推奨されたコンテンツリストを後に学習される第2のクラスタの特性に基づいて修正すべきか否かを決定することができる。当業者であれば、そのような特性を監視し、その特性に基づいて推奨を更新するために種々のロジックを実施できることが分かる。
【0032】
さらに別の実施例においては、CDNサービスプロバイダがクライアントコンピューティングデバイスの第1のクラスタからのリソースリクエストを監視し、そのリクエストに対応するコンテンツのセットを識別する。続いてCDNサービスプロバイダは、クライアントコンピューティングデバイスの第2のクラスタに情報を提供する権限を有するリソースキャッシュコンポーネントにおいて識別されたコンテンツのセットを管理することができる。上述のように、識別されたコンテンツのセットを管理する方法は複数存在し、そのような方法として、例えば、リソースキャッシュコンポーネントにおけるコンテンツのプレロード、コンテンツのアベイラビリティの検査、メモリ内のコンテンツに関係するキャッシュ制御情報の管理(有効期間に関するデータの変更および有効期間に関する変数の処理)などが挙げられる。第1のクラスタおよび第2のクラスタが同一であってもよい、もしくは異なっていてもよいことも当業者には明らかである。
【0033】
さらに別の実施例においては、CDNサービスプロバイダがコンピューティングデバイスのクラスに関連付けられたリソースリクエストを監視し、リクエストされたリソースをクラスに関連付ける。1つの実施形態においては、CDNサービスプロバイダが続いて、CDNのリソースキャッシュコンポーネントにおいてコンテンツをクラスに依存してプレロードする。この機能には、CDNサービスプロバイダがクライアントコンピューティングデバイスのクラスとリソースに関連付けられたクラスとを一致させるマッチング決定を含ませることができる。例えば、CDNサービスプロバイダは関心のあるクラスのトピック、例えばバスケットボールのスコアを、先行のリクエストに基づいて同一のクラスに関連付けられているリソースに一致させることができる。択一的に、この機能には、CDNサービスプロバイダがクライアントコンピューティングデバイスのクラスをリソースに関連付けられた異なるクラスと相互に関連付ける相関決定を含ませることができる。例えば、CDNサービスプロバイダは第1の地理的なクラス、例えばニューヨークシティを、別の地理的なクラス、例えばサンフランシスコと相互に関連付けることができる。1つの実施例においては、マッチング決定または相関決定を、例えば管理者による手動の処理によって、もしくは観察された特性に基づいて容易にすることができる。
【0034】
以下では
図6を参照しながら、リソースキャッシュコンポーネント132によって収集された、関連付けられたクラス情報をCDNサービスプロバイダ106がどのように処理および管理するかの択一的な実施例を説明する。この実施例は、上記において
図5を参照しながら説明した実施例と実質的に同一のものであるが、識別されたコンテンツを送信するために特定のリソースキャッシュコンポーネントを識別する代わりに、クライアントコンピューティングデバイスが識別される点において異なっている。またこの実施例においては、上記の実施例では識別されたリソースキャッシュコンポーネントによって実行された後続の処理機能を識別されたクライアントコンピューティングデバイスによって同様に実行することができる。この択一的な実施例に関して、CDNサービスプロバイダ106は識別されたコンテンツをクライアントコンピューティングデバイスにおいて管理するために、クライアントコンポーネント、例えばソフトウェアアプリケーションを有する。CDNサービスプロバイダ106はそのようなサービスへの参加を所望するクライアントコンピューティングデバイスにクライアントコンポーネントを提供する。
【0035】
図6の参照を続ける。特定の実施例においては、リソースキャッシュコンポーネント132が、リソースキャッシュコンポーネント132において収集された、関連付けられたクラス情報をCDNサービスプロバイダ106に提供する。この実施例においては、関連付けられたクラス情報が、クライアントコンピューティングデバイスの第1のセットに関連付けられたクラスに関してなされたリクエストに対応するコンテンツを識別するデータを含む。この関連付けられたクラス情報の受信に基づき、CDNサービスプロバイダ106は、クライアントコンピューティングデバイスの第1のセットに依存して、クライアントコンピューティングデバイスの第2のセットを識別する。続いてCDNサービスプロバイダは、リソースリクエストに関係するコンテンツ情報を、クライアントコンピューティングデバイスの第2のセット内のクライアントコンピューティングデバイスに提供する。この実施例においては、コンテンツ情報が、クライアントコンピューティングデバイスの第1のセットに関連付けられたクラスに関して頻繁にリクエストされたコンテンツのリストを含む。クライアントコンピューティングデバイスの第2のセット内のクライアントコンピューティングデバイスは、リストに記載されたコンテンツのアベイラビリティを検査し、また、利用可能でない場合には、リストに記載された1つまたは複数のリソースを取得することによって、(CDNサービスプロバイダによって提供されたクライアント側のアプリケーションを用いて)このコンテンツ情報を管理する。
【0036】
ここで
図7を参照する。1つの実施例において、CDNサービスプロバイダ106は、付加的な処理のためにPOPから収集したクラス情報を提供することができる。
図1を参照して既に説明したように、1つまたは付加的なコンテンツプロバイダ134がCDNサービスプロバイダ106の一部であってよい。付加的なコンテンツプロバイダ134はCDNサービスプロバイダ106に関連付けられた付加的なコンポーネントまたはサービス、例えば広告エンジンまたは広告サービス、推奨エンジンまたは推奨サービス、セキュリティアプリケーションまたはセキュリティサービスなどに対応するものであってよい。さらには、サードパーティーのコンテンツプロバイダ134を上記においてはCDNサービスプロバイダ106の一部として示したが、当業者であれば、サードパーティーの1つまたは複数のコンテンツプロバイダ134が独立するものであってもよいことが分かる。
【0037】
CDNサービスプロバイダ106によって提供されたクラス情報、さもなければCDNサービスプロバイダ106によって利用可能にされたクラス情報に基づいて、サードパーティーのコンテンツプロバイダ134は入力としてクラス情報を使用することができる。例えば、1つの実施例においては、サードパーティーのコンテンツプロバイダ134が広告エンジンまたは広告コンポーネントに対応する場合には、キャッシュにおいて将来の広告表示の機会を期待するためにクラス情報を処理することができる。したがって、サードパーティーのコンテンツプロバイダ134は入力を処理することができ、またCDNサービスプロバイダ106は付加的なステップを実施することができる。例えば、1つの実施例においては、サードパーティーのコンテンツプロバイダ134が広告エンジンまたは広告コンポーネントに対応する場合には、キャッシュにおいて将来の広告表示の機会を期待するためにクラス情報を処理することができる。したがって、サードパーティーのコンテンツプロバイダ134は入力を処理することができ、またCDNサービスプロバイダ106は付加的なステップを実施することができる。当業者であれば、本発明の精神および範囲から逸脱することなく、種々のあらゆる方法論またはアルゴリズムをクラス情報の処理に使用できることが分かる。
【0038】
図7の参照を続ける。付加的なコンテンツプロバイダ134は処理した情報をさらなる処理のためにCDNサービスプロバイダに再び提供することができる。付加的または代替的に、付加的なコンテンツプロバイダ134は処理された情報を直接的に1つまたは複数のPOP、例えばPOP116に提供することができる。別の実施例においては、CDNサービスプロバイダ106によって実行される付加的なアクションに、付加的な広告の通知、および/または、表示の機会、リソースキャッシュコンポーネントにプレロードすることもできる付加的なコンテンツの識別、および/または、リソースキャッシュコンポーネントに既に記憶されているコンテンツのさらなる管理を含ませることができる。
【0039】
以下では
図8を参照しながら、クライアントコンピューティングデバイスからのリソースリクエストを監視するためにCDNサービスプロバイダ106によって実施されるコンテンツ監視ルーチン800の一実施例を説明する。当業者であれば、ルーチン800に関して概略的に表されている動作/ステップを、CDNサービスプロバイダ106に関連付けられている1つまたは複数のコンピューティングデバイス/コンポーネントによって実行できることが分かる。つまり、ルーチン800はCDNサービスプロバイダ106によって一般的に実行できるものとして論理的に関連付けられており、したがって以下において説明する実施例は制限を意図して構成されたものではない。
【0040】
ブロック802において、リソースキャッシュコンポーネント132はクライアントコンピューティングデバイスからコンテンツリクエストを受信する。続くブロック804においては、クライアントコンピューティングデバイスに関連付けられたクラス情報が決定される。図示されている実施例において、ブロック804におけるクラスの決定には、殊に、リクエストを行うクライアントコンピューティングデバイスの他のクライアントコンピューティングデバイスの第1のクラスタへの種々の判定基準に基づいた関連付けが含まれてもよい。1つの実施例においては、判定基準はクライアントコンピューティングデバイスが位置するタイムゾーンに対応する。後続のブロック806においては、リソースキャッシュコンポーネントが識別されたクラス情報をリクエストされたコンテンツにさらに関連付ける。次に、ブロック808においては、リソースキャッシュコンポーネント132が、関連付けられたクラスに関係するCDNサービスプロバイダ106に情報を提供する。ルーチンはブロック810において終了する。
【0041】
以下では
図9を参照しながら、クライアントコンピューティングデバイスのクラスへのコンテンツの配信の管理に関するコンテンツ処理ルーチン900の一実施例を説明する。当業者であれば、ルーチン900に関して概略的に表されている動作/ステップを、CDNサービスプロバイダ106に関連付けられている1つまたは複数のコンピューティングデバイス/コンポーネントによって実行できることが分かる。つまり、ルーチン900はCDNサービスプロバイダ106によって実行できるものとして論理的に関連付けられている。
【0042】
ブロック902においては、CDNサービスプロバイダ106が関連付けられたクラス情報に関係する情報、例えば
図8のブロック810においてリソースキャッシュコンポーネントから提供された情報を受信する。次に、ブロック904においては、CDNサービスプロバイダ106が受信したクラス情報を処理する。上述のように、受信したクラス情報を処理するための種々のロジックをCDNサービスプロバイダにおいて実施することができる。
図8を参照して説明した実施例を用いて説明を続けると、CDNサービスプロバイダ106は、第1のタイムゾーン内のクライアントコンピューティングデバイスによって行われたリソースリクエストに関する情報を受信し、情報を処理するが、この処理は、第1のタイムゾーン内のクライアントコンピューティングデバイスによって行われたリソースリクエストに基づいて、第2のタイムゾーン内のクライアントコンピューティングデバイスに情報を提供する権限を有するキャッシュコンポーネントに関するコンテンツを識別することにより行われる。例えば、CDNサービスプロバイダ106は第1のタイムゾーンにおいて最も多くリクエストされたコンテンツのリストを、第2のタイムゾーン内のクライアントコンピューティングデバイスに情報を提供する権限を有するキャッシュコンポーネントに提供することができる。
【0043】
図9のブロック906に進むと、CDNサービスプロバイダは、ブロック904において関連付けられたクラス情報について実施された処理に基づきコンテンツを管理する。上述のように、コンテンツを管理するための種々のロジックを実施することができる。この実施例に関して、CDNサービスプロバイダは処理された情報に基づきコンテンツを管理することができるが、この管理は、第2のタイムゾーン内のキャッシュコンポーネントにおいて、識別されたコンテンツをストレージロケーションから取得することによって、もしくは、より詳細には、第2のタイムゾーン内のクライアントコンピューティングデバイスからの同様のリクエストを期待して、コンテンツをキャッシュコンポーネントにおいてリストからプレロードすることによって行われる。ルーチン900はブロック908において終了する。
【0044】
当業者には明らかであるように、処理および管理に関する機能はこの実施例においてCDNサービスプロバイダの種々のコンポーネントにおいて実施されるものとして説明したが、それらの機能をCDNサービスプロバイダの1つまたは複数のコンピューティングデバイスにわたり分散させることができる。さらには、リソースキャッシュコンポーネントにおいて監視される、関連付けられたクラス情報およびコンテンツリクエストをCDNサービスプロバイダによって包括的に保存し、CDNサービスプロバイダの全てのサブセットもしくは幾つかのサブセットと共有することができる。同様に、関連付けられたクラス情報の処理に基づいて識別されたコンテンツ情報を、リソースキャッシュコンポーネントについてのバッチ処理として提供することができるか、一方のキャッシュコンポーネントから他方のキャッシュコンポーネントへのリクエストに対する応答として送信することができる。
【0045】
当業者には明らかであるように、本明細書において記載した全ての機能を、本明細書において記載したコンポーネントおよびモバイル通信機器の1つまたは複数のプロセッサによって実行できるソフトウェアとして実現することができる。そのようなソフトウェアをあらゆるタイプの不揮発性の記憶装置に永続的に記憶することができる。
【0046】
条件を表す記述、例えば、とりわけ「可能」、「可能性がある」、「であろう」または「できる」は、別個の記載が無い限り、もしくは使用されているコンテキスト内で理解される限り、一般的に特定の実施形態は特定の特徴、構成要素および/またはステップを含むが、他の実施形態はそれらの特定の特徴、構成要素および/またはステップを含まないことを意味する。したがってそのような条件を表す言葉は、特徴、構成要素および/またはステップが1つまたは複数の実施形態にいずれにせよ必要とされること、もしくは、1つまたは複数の実施形態が、ユーザ入力またはプロンプトの使用の有無に拘らず、それらの特徴、構成要素および/またはステップがいずれかの特定の実施形態に含まれるか否か、またはいずれかの特定の実施形態において実施されるべきか否かを決定するためのロジックを含んでいなければならないことを意味しているのではない。
【0047】
本明細書において説明した、および/または、添付の図面に示したフローチャートにおけるあらゆるプロセスの説明、構成要素またはブロックは、プロセスにおける特定の論理的な機能またはステップを実施するための1つまたは複数の実行可能な命令を含むコードモジュール、コードセグメントまたはコード部分を潜在的に表すものと解されるべきである。当業者であれば分かるように、択一的な実施形態は、そこに含まれる機能に依存して構成要素または機能を削除することができるか、(実質的に同時の実行または反対の順序での実行も含めて)図示または説明した順序とは異なる順序で実行することができる、本明細書において説明した実施形態の範囲に含まれる。さらには、上記において説明したデータおよび/またはコンポーネントを、コンピュータ読み取り可能媒体に記憶し、コンピュータが実行可能なコンポーネントを記憶しているコンピュータ読み取り可能記憶媒体、例えばCD−ROM,DVD−ROMに関連付けられたドライブ機構を使用して、もしくは、さらにネットワークインタフェースを使用して、コンピューティングデバイスのメモリにロードすることができ、コンポーネントおよび/またはデータを単一の機器に記憶させることができるか、または、何らかのやり方で分散させて記憶できることも明らかである。したがって、汎用コンピューティングデバイスを、上述の種々のデータおよび/またはコンポーネントの処理および/または実行も含めて、本発明によるプロセス、アルゴリズムおよび方法論を実施するよう構成することができる。
【0048】
上記の実施形態についての種々のヴァリエーションおよび修正形態が考えられ、それらの構成要素は他の許容される実施例に含まれると解するべきである。そのような全ての修正形態およびヴァリエーションは本願発明の範囲に含まれ、添付の特許請求の範囲に記載された発明によって保護されることが意図されている。
【0049】
第1項 コンテンツデリバリネットワークサービスプロバイダにおいて、クライアントコンピューティングデバイスの第1のクラスタからのリソースリクエストを監視するステップと、
第1のクラスタからのリソースリクエストに対応するコンテンツのセットを識別するステップと、
クライアントコンピューティングデバイスの第2のクラスタに情報を提供する権限を有するキャッシュコンポーネントにおいて、識別されたコンテンツのセットをプレロードするステップとを有する、方法。
【0050】
第2項 第1のクラスタは第2のクラスタと同一である、第1項記載の方法。
【0051】
第3項 第1のクラスタは第2のクラスタとは異なる、第1項記載の方法。
【0052】
第4項 クライアントコンピューティングデバイスの第1のクラスタは第1のタイムゾーン内に存在するクライアントコンピューティングデバイスを含む、第1項記載の方法。
【0053】
第5項 クライアントコンピューティングデバイスの第2のクラスタは第2のタイムゾーン内に存在するクライアントコンピューティングデバイスを含む、第1項記載の方法。
【0054】
第6項 リソースリクエストを監視するステップは、ある期間中に第1のタイムゾーン内のクライアントコンピューティングデバイスの第1のクラスタから受信するリソースリクエストを監視するステップを含み、
コンテンツをプレロードするステップは、同一の期間中に異なるタイムゾーン内のクライアントコンピューティングデバイスの第2のクラスタに情報を提供する権限を有するキャッシュコンポーネントにおいてコンテンツをプレロードするステップを含む、第1項記載の方法。
【0055】
第7項 第1のクラスタに関してリソースリクエストに対応するコンテンツのセットを識別するステップは、第1のクラスタに関して頻繁にリクエストされたコンテンツを識別するステップを含む、第1項記載の方法。
【0056】
第8項 識別されたコンテンツのセットをプレロードするステップは、識別された頻繁にリクエストされたコンテンツをプレロードするステップを含む、第7項記載の方法。
【0057】
第9項 識別されたコンテンツのセットをプレロードするステップは、識別された頻繁にリクエストされたコンテンツに関連付けられた付加的なコンテンツをプレロードするステップを含む、第7項記載の方法。
【0058】
第10項 コンテンツデリバリネットワークサービスプロバイダにおいて、第1のクライアントコンピューティングデバイスからリソースリクエストを取得するステップと、
第1のクライアントコンピューティングデバイスに関連付けられたクラスを決定するステップと、
クラスとリクエストされたコンテンツに関連付けるステップと、
関連付けられたクラスに依存して、リクエストされたコンテンツをコンテンツデリバリネットワークサービスプロバイダのキャッシュコンポーネントにプレロードするステップとを有する、方法。
【0059】
第11項 クラスの決定は、ある期間にわたる特性の観察および観察された特性に基づくクラスの決定に相当する、第10項記載の方法。
【0060】
第12項 リクエストされたコンテンツをプレロードするステップは、クラスおよび時間に依存して、リクエストされたコンテンツをキャッシュコンポーネントにプレロードするステップを含む、第10項記載の方法。
【0061】
第13項 クラスは一時的な範囲に対応する、第10項記載の方法。
【0062】
第14項 関連付けられたクラスに依存して、リクエストされたコンテンツをキャッシュコンポーネントにプレロードするステップは、キャッシュコンポーネントによって情報が提供されるコンピューティングデバイスに関連付けられたクラスを、第1のクライアントコンピューティングデバイスに関連付けられている決定されたクラスと相互に関連させるステップを含む、第10項記載の方法。
【0063】
第15項 関連付けられたクラスに依存して、リクエストされたコンテンツをキャッシュコンポーネントにプレロードするステップは、キャッシュコンポーネントによって情報が提供されるコンピューティングデバイスに関連付けられたクラスを、第1のクライアントコンピューティングデバイスに関連付けられている決定されたクラスとマッチングさせるステップを含む、第10項記載の方法。
【0064】
第16項 関連付けられたクラスに依存して、リクエストされたコンテンツをキャッシュコンポーネントにプレロードするステップは、第1のクライアントコンピューティングデバイスに関連付けられている決定されたクラスと一致するクラスを有するクライアントコンピューティングデバイスにコンテンツを提供するキャッシュコンポーネントを選択するステップと、
リクエストされたコンテンツを選択されたキャッシュコンポーネントにプレロードするステップとを含む、第10項記載の方法。
【0065】
第17項 クライアントコンピューティングデバイスのセットに関連付けられたクラスを決定するステップと、
決定されたクラスに関してリソースリクエストを監視するステップと、
決定されたクラスに依存して、クライアントコンピューティングデバイスにコンテンツを提供する少なくとも1つのキャッシュコンポーネントを識別するステップと、
コンテンツ情報を識別されたキャッシュコンポーネントに提供するステップとを有する、方法。
【0066】
第18項 決定クラスは一時的な範囲に対応する、第17項記載の方法。
【0067】
第19項 一時的な範囲は第1のタイムゾーンに対応し、
決定されたクラスに依存して、コンテンツ情報をクライアントコンピューティングデバイスに提供する少なくとも1つのキャッシュコンポーネントを識別するステップは、コンテンツ情報を第2のタイムゾーン内のクライアントコンピューティングデバイスに提供する少なくとも1つのキャッシュコンポーネントを識別するステップを含む、第18項記載の方法。
【0068】
第20項 コンテンツ情報は、決定されたクラスに関して頻繁にリクエストされたコンテンツを含む、第17項記載の方法。
【0069】
第21項 コンテンツ情報は、決定されたクラスに関して頻繁にリクエストされたコンテンツに関連付けられた付加的な情報を含む、第17項記載の方法。
【0070】
第22項 コンテンツ情報は、決定されたクラスに関して頻繁にリクエストされたコンテンツのリストを含む、第17項記載の方法。
【0071】
第23項 さらに、配信されるリストに記載されたコンテンツのアベイラビリティを識別されたキャッシュコンポーネントによって検査するステップを有する、第22項記載の方法。
【0072】
第24項 さらに、リストに記載された1つまたは複数のリソースが利用可能でない場合には、リストに記載された1つまたは複数のリソースを取得するステップを有する、第23項記載の方法。
【0073】
第25項 さらに、
頻繁にリクエストされたコンテンツのリストに基づき、識別されたキャッシュコンポーネントにロードすべきコンテンツを選択するステップと、
配信されるリストに記載されたリソースのアベイラビリティを識別されたキャッシュコンポーネントによって検査するステップと、
リストに記載された1つまたは複数のリソースが利用可能でない場合には、リストに記載された1つまたは複数のリソースを取得するステップとを有する、第22項記載の方法。
【0074】
第26項 さらに、識別されたコンテンツをキャッシュコンポーネントにおいて管理するステップを有する、第17項記載の方法。
【0075】
第27項 識別されたコンテンツをキャッシュコンポーネントにおいて管理するステップは、識別されたコンテンツをキャッシュコンポーネントのディスクメモリからキャッシュコンポーネントのメモリに移すステップを含む、第26項記載の方法。
【0076】
第28項 識別されたコンテンツをキャッシュコンポーネントにおいて管理するステップは、キャッシュコンポーネントのメモリ内の識別されたコンテンツに関連付けられたキャッシュ制御データを変更するステップを含む、第26項記載の方法。
【0077】
第29項 識別されたコンテンツをキャッシュコンポーネントにおいて管理するステップは、識別されたコンテンツをストレージロケーションから取得するステップを含む、第26項記載の方法。
【0078】
第30項 クライアントコンピューティングデバイスのセットに関連付けられたクラスを決定するステップと、
決定されたクラスに関してリソースリクエストを監視するステップと、
決定されたクラスに依存して、クライアントコンピューティングデバイスの第2のセットを識別するステップと、
リソースリクエストに関係するコンテンツ情報をクライアントコンピューティングデバイスの第2のセットに提供するステップとを有する、方法。
【0079】
第31項 決定クラスは一時的な範囲に対応する、第30項記載の方法。
【0080】
第32項 一時的な範囲は第1のタイムゾーンに対応し、
決定されたクラスに依存して、クライアントコンピューティングデバイスの第2のセットを識別するステップは、異なるタイムゾーン内のクライアントコンピューティングデバイスの第2のセットを識別するステップを含む、第31項記載の方法。
【0081】
第33項 コンテンツ情報は、決定されたクラスに関して頻繁にリクエストされたコンテンツを含む、第30項記載の方法。
【0082】
第34項 コンテンツ情報は、決定されたクラスに関して頻繁にリクエストされたコンテンツに関連付けられた付加的な情報を含む、第30項記載の方法。
【0083】
第35項 コンテンツ情報は、決定されたクラスに関して頻繁にリクエストされたコンテンツのリストを含む、第30項記載の方法。
【0084】
第36項 さらに、配信されるリストに記載されたコンテンツのアベイラビリティをクライアントコンピューティングデバイスの第2のセットによって検査するステップを有する、第35項記載の方法。
【0085】
第37項 さらに、リストに記載された1つまたは複数のリソースが利用可能でない場合には、リストに記載された1つまたは複数のリソースを取得するステップを有する、第37項記載の方法。
【0086】
第38項 さらに、
頻繁にリクエストされたコンテンツのリストに基づき、クライアントコンピューティングデバイスの第2のセットにロードすべきコンテンツを選択するステップと、
配信されるリストに記載されたリソースのアベイラビリティをクライアントコンピューティングデバイスの第2のセットによって検査するステップと、
リストに記載された1つまたは複数のリソースが利用可能でない場合には、リストに記載された1つまたは複数のリソースを取得するステップとを有する、第35項記載の方法。
【0087】
第39項 観察された特性に基づいて、第1のキャッシュコンポーネントにおいてリソースリクエストを監視するステップと、
第2のキャッシュコンポーネントにおいて観察された特性に関連付けられたコンテンツのアベイラビリティを提供するステップとを有する、方法。
【0088】
第40項 第2のキャッシュコンポーネントにおいて観察された特性に関連付けられたコンテンツのアベイラビリティを提供するステップは、コンテンツをキャッシュコンポーネントのディスクメモリからキャッシュコンポーネントのメモリに移すステップを含む、第39項記載の方法。
【0089】
第41項 第2のキャッシュコンポーネントにおいて観察された特性に関連付けられたコンテンツのアベイラビリティを提供するステップは、キャッシュコンポーネントのメモリ内のコンテンツに関連付けられた有効期間データを拡大するステップを含む、第39項記載の方法。
【0090】
第42項 第2のキャッシュコンポーネントにおいて観察された特性に関連付けられたコンテンツのアベイラビリティを提供するステップは、コンテンツをストレージロケーションから取得するステップを含む、第39項記載の方法。
【0091】
第43項 コンテンツデリバリネットワークサービスプロバイダに関連付けられたプレゼンスの第1のネットワークポイントと、クライアントコンポーネントとを有し、
プレゼンスの第1のネットワークポイントは、
第1のクライアントコンピューティングデバイスからリソースリクエストを取得し、
第1のクライアントコンピューティングデバイスをクライアントコンピューティングデバイスの第1のクラスタに関連付け、
第1のクラスタに関するリソースリクエストを監視し、
第1のクラスタに関して監視されるリソースリクエストに依存して、第2のクライアントコンピューティングデバイスに関するコンテンツを識別し、
クライアントコンポーネントは第2のクライアントコンピューティングデバイスにおいて識別されたコンテンツを管理する、システム。
【0092】
第44項 識別されたコンテンツを管理するステップは、識別されたコンテンツを第2のクライアントコンピューティングデバイスのディスクメモリから第2のクライアントコンピューティングデバイスのメモリに移すステップを含む、第43項記載の方法。
【0093】
第45項 識別されたコンテンツを管理するステップは、第2のクライアントコンピューティングデバイスのメモリ内の識別されたコンテンツに関連付けられた有効期間データを拡大するステップを含む、第43項記載の方法。
【0094】
第46項 識別されたコンテンツを管理するステップは、識別されたコンテンツをストレージロケーションから取得するステップを含む、第43項記載の方法。