JP2015509229A - アプリケーション駆動のcdnのプリキャッシング - Google Patents

アプリケーション駆動のcdnのプリキャッシング Download PDF

Info

Publication number
JP2015509229A
JP2015509229A JP2014547304A JP2014547304A JP2015509229A JP 2015509229 A JP2015509229 A JP 2015509229A JP 2014547304 A JP2014547304 A JP 2014547304A JP 2014547304 A JP2014547304 A JP 2014547304A JP 2015509229 A JP2015509229 A JP 2015509229A
Authority
JP
Japan
Prior art keywords
content
request
client application
additional content
server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014547304A
Other languages
English (en)
Other versions
JP6073366B2 (ja
JP2015509229A5 (ja
Inventor
トゥリアーニ,ジョナサン・ロシャン
ホルト,ニコラス・レオナルド
ホワーン,チェン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2015509229A publication Critical patent/JP2015509229A/ja
Publication of JP2015509229A5 publication Critical patent/JP2015509229A5/ja
Application granted granted Critical
Publication of JP6073366B2 publication Critical patent/JP6073366B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/602Details relating to cache prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5681Pre-fetching or pre-delivering data based on network characteristics

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

実際にコンテンツが要求される前にコンテンツをキャッシュする技術を提供する。望まれるコンテンツに関するリクエストが、キャッシング・サーバーのクライアント・アプリケーションから受け取られる。リクエストはまた、望まれるコンテンツと関連しておりクライアント・アプリケーションにより続いて要求され得る追加のコンテンツを示す。示された追加のコンテンツ(また、望まれるコンテンツが既にキャッシュされていない場合にはそれも)が、元サーバーから取得される。望まれるコンテンツは、ユーザー・デバイスのクライアント・アプリケーションへ送られ、追加のコンテンツは、キャッシング・サーバーでキャッシュされる。その後、クライアント・アプリケーションから、追加のコンテンツに関するリクエストを含む第2リクエストが受け取られ得る。キャッシング・サーバーで現在キャッシュされている追加のコンテンツは、第2リクエストに応じてキャッシング・サーバーによりクライアント・アプリケーションへ供給される(元サーバーから取得されるのではない)。

Description

[0001] コンテンツ配信ネットワーク(CDN)は、様々なネットワーク・ノードに置かれたデータのコピーを含むコンピューターのネットワークである。CDNは、元サーバー(origin server)とエンド・ユーザー・コンピューターとの間でのデータのためのインターフェースを提供する。元サーバーは、コンテンツの一次のソースであり、CDNのサーバーは、要求の最も高いコンテンツのコピーをキャッシュする。CDNのサーバーは、元サーバーよりもエンド・ユーザー・コンピューターの近くになるように、戦略的に配置することができる。エンド・ユーザー・コンピューターは、CDNのサーバーにおいて、要求の高いデータへアクセスすることができ、元サーバーからのデータへ直接にアクセスする必要はない。従って、CDNは、アクセス帯域を増加させること、冗長性を増加させること、およびアクセス・レイテンシを低減させることにより、データへのアクセスを改善する。
[0002] ワシントン州レドモンドのマイクロソフト・コーポレーションにより提供されるBingMapsは、CDNを用いてコンテンツを提供するオンライン・アプリケーションの例である。このアプリケーションは、元サーバーに格納されておりCDNを介してエンド・ユーザーへ送られる、マップ・タイル(マップの部分のイメージ)の形の大量の静的コンテンツを有する。例えば、ユーザーは、ユーザーの計算デバイスにおいてウェブ・ブラウザーを用いてマップをブラウズすることができ、例えば、マップにわたってのパンを行うことや、マップの一部に対するズーム・インやズーム・アウトを行うことなどが可能である。ユーザーがマップをブラウズするとき、ブラウザーは、新たなマップ・タイルに関するリクエストをCDNへ送る。
[0003] ユーザーの計算デバイスのブラウザーへ、より迅速にコンテンツ(例えば、マップ・タイル)を提供することを可能にするための、様々な技術が開発されている。第1の技術によると、オンライン・アプリケーションのための元サーバーは、将来のコンテンツ・リクエストを予測することができる。予測した将来のコンテンツをCDNにプリキャッシングすることができ、それにより、その予測した将来のコンテンツは、それが実際に要求された場合には、ユーザーの計算デバイスにより、より迅速にアクセスされ得る。第2の技術によると、ユーザーの計算デバイスのクライアント・ウェブ・ブラウザーは、将来に何れのコンテンツが望まれるかを予測することができ、そのコンテンツをウェブ・ブラウザーへプリフェッチすることができる。第3の技術によると、CDNサーバーは、ユーザーの計算デバイスによる将来のコンテンツ・リクエストを予測することができ、予測した将来のコンテンツをCDNにプリキャッシングすることができる。
[0004] しかし、これらの技術には欠点がある。例えば、元サーバーが将来のコンテンツを予測することには、プリキャッシングされるコンテンツが事前に決定される、という欠点がある。ウェブ・ブラウザーへコンテンツをプリフェッチすることに関しては、データ転送のためにユーザーがコストを費やす場合や、帯域幅に制限がある場合(例えば、モバイル・アプリケーションの場合など)において、そのようなプリキャッシングは、許容できないこと及び/又は望まれる性能を提供できないことがあり得る。更に、CDNサーバーが将来のコンテンツを予測してプリキャッシングすることに関しては、将来のコンテンツ・リクエストを推測可能とするために、CDNは、CDNの受け取るコンテンツ・リクエストのタイプを理解するために高性能である必要がある。
[0005] 従って、現在のキャッシング技術は、望ましいというほどではない。BingMapsの場合、使用可能なマップ・タイルの数と、様々なユーザーの様々な焦点エリアとが原因で、「キャッシュ・ヒット」率(キャッシュされていた要求されたデータと、使用可能なデータの合計量との比率)は、望ましくないほど低い(例えば、50%未満)。それにより、マップのロードにおけるレイテンシが比較的高くなる。なぜなら、マップ・タイルは、ユーザーに対して、CDNにおけるキャッシュから取得せずに、頻繁に、元サーバーから取得する必要があるからである。
[0006] この概要は、以下の詳細な説明で更に説明する概念のうちの選択したものを、簡素化した形で紹介するものである。この概要は、特許請求の範囲に記載の主題事項の鍵となる特徴や本質的な特徴を特定することを意図しておらず、また、特許請求の範囲に記載の主題事項の範囲を決定する際の支援として用いることを意図していない。
[0007] コンテンツが実際に要求される前にコンテンツをキャッシュするための方法、システム、およびコンピューター・プログラム製品を提供する。クライアント・アプリケーションは、望まれたコンテンツの後に要求され得るコンテンツを、予測することができる(予測を、元サーバーやコンテンツ配信ネットワークのサーバーで行うのではない)。更に、予測されたコンテンツは、コンテンツ配信ネットワークのキャッシング・サーバーでキャッシュすることができる(ウェブ・ブラウザーでキャッシュされるのではない)。そのような技術は、キャッシュ・ヒット率を増加させ、レイテンシを低減させ、且つ/又は更なる利益を有する。
[0008] キャッシング・サーバーにおける1つの方法のインプリメントでは、望まれるコンテンツに関する第1リクエストが、クライアント・アプリケーションから受け取られる。第1リクエストはまた、望まれるコンテンツと関連しておりクライアント・アプリケーションにより続いて要求され得る追加のコンテンツを示し得る。示された追加のコンテンツは、現在は、消費するために望まれるものとして示されていないが、将来に消費するために望まれる可能性のあることが予測される。望まれるコンテンツと示された追加のコンテンツとは、元サーバーから取得される。望まれるコンテンツは、ユーザー・デバイスのクライアント・アプリケーションへ送られ、追加のコンテンツは、キャッシング・サーバーでキャッシュされる。その後、クライアント・アプリケーションから、追加のコンテンツに関するリクエストを含む第2リクエストが、受け取られ得る(例えば、ここで、クライアント・アプリケーションで消費するために、追加のコンテンツが望まれるから)。第1リクエストに応じてキャッシング・サーバーでキャッシュされた追加のコンテンツは、第2リクエストに応じてキャッシング・サーバーによりクライアント・アプリケーションへ供給される。
[0009] 望まれるコンテンツに関する第1リクエストは、追加のコンテンツが続いてクライアント・アプリケーションにより要求され得る可能性(likelihood)を示す可能性インジケーションを、含むことができる。元サーバーにおける示された追加のコンテンツに関するリクエストには、可能性インジケーション(他のコンテンツ・リクエストと相対したもの)および/または他の情報に基づいて、優先度が設定される。
[0010] 1つのシステムのインプリメントでは、キャッシング・サーバーは、コンテンツ・リクエスト・パーサーと、コンテンツ取得モジュールと、コンテンツ・プロバイダー・モジュールとを、含むことができる。コンテンツ・リクエスト・パーサーは、ユーザー・デバイスのクライアント・アプリケーションから、望まれるコンテンツに関するリクエストを受け取る。リクエストは、望まれるコンテンツと関連しておりクライアント・アプリケーションにより続いて要求され得る追加のコンテンツを示す。コンテンツ取得モジュールは、望まれるコンテンツと、示された追加のコンテンツとに関する少なくとも1つのリクエストを元サーバーへ送り、望まれるコンテンツと追加のコンテンツとを元サーバーから受け取り、追加のコンテンツをストレージにキャッシュする。コンテンツ・プロバイダー・モジュールは、望まれるコンテンツを、ユーザー・デバイスのクライアント・アプリケーションへ送る。コンテンツ・リクエスト・パーサーは、クライアント・アプリケーションから、追加のコンテンツに関するリクエストを含む第2リクエストを受け取る。コンテンツ・プロバイダー・モジュールは、第2リクエストに応じて、キャッシュされた追加のコンテンツをクライアント・アプリケーションへ供給する。
[0011] 更に、コンテンツ取得モジュールは、リクエスト優先度設定手段(prioritizer)を含むことができ、リクエスト優先度設定手段は、可能性インジケーションに基づいて、元サーバーへの、示された追加のコンテンツに関するリクエストの送信の優先度を設定する。
[0012] 1つのクライアント・アプリケーションのインプリメントでは、クライアント・アプリケーションは、通信インターフェースと追加のコンテンツ予測手段(predictor)とを含むことができる。追加のコンテンツ予測手段は、クライアント・アプリケーションに対しての現在の望まれるコンテンツのインジケーションを受け取り、クライアント・アプリケーションにより続いて要求され得る追加のコンテンツを予測する。通信インターフェースは、望まれるコンテンツに関する第1リクエストを作成し、これは、予測される追加のコンテンツも示す。通信インターフェースは、第1リクエストに応じて、望まれるコンテンツを元サーバーから取得したキャッシング・サーバーから、望まれるコンテンツを受け取る。その後、通信インターフェースは第2リクエストを作成し、この第2リクエストは、現在望まれているコンテンツとして、予測された追加のコンテンツを求めるリクエストである。予測された追加のコンテンツは、キャッシング・サーバーから受け取られる。キャッシング・サーバーは、第1リクエストに応じて、追加のコンテンツを元サーバーから以前に取得しており、追加のコンテンツをキャッシュしている。
[0013] 更に、追加のコンテンツ予測手段は、追加のコンテンツ優先度設定手段を含むことができる。追加のコンテンツ優先度設定手段は、クライアント・アプリケーションにより追加のコンテンツが続いて要求され得る可能性を示す可能性インジケーションを作成する。
[0014] 予測される将来のコンテンツをキャッシュするキャッシング・サーバーおよび更なる追加の実施形態のための、将来のコンテンツ・リクエストを予測するクライアント・アプリケーションのためのコンピューター・プログラム製品も、ここで説明される。
[0015] 本発明の更なる特徴および利点、および本発明の様々な実施形態の構造および動作を、添付の図面を参照して後に詳細に説明する。本発明は、ここで説明する特定の実施形態に限定されないことに、留意されたい。ここでは、そのような実施形態を、単なる例示を目的として呈示している。当業者には、ここに含まれる技術に基づいて、更なる実施形態が明らかになる。
[0016] ここに組み込まれて明細書の一部を形成する添付の図面は、本発明を例示するものであり、また、記載と共になって、本発明の原理を説明するため、および当業者が本発明を作成および使用することを可能とするために役立つ。
図1は、例示の実施形態に従った、ユーザー・デバイスへコンテンツを届けるコンテンツ配信ネットワークのブロック図を示す。 図2は、例示の実施形態に従ったコンテンツ配信ネットワークのブロック図を示し、コンテンツ配信ネットワークでは、予測されたコンテンツが取得されて、キャッシング・サーバーによりキャッシュされる。 図3は、例示の実施形態に従った、クライアント・アプリケーションにより将来に要求され得るコンテンツをキャッシュするためのキャッシング・サーバーのためのプロセスを提供するフローチャートを示す。 図4は、例示の実施形態に従った、以前にキャッシュしたコンテンツをクライアント・アプリケーションへ提供するためのプロセスを提供するフローチャートを示す。 図5は、例示の実施形態に従った、望まれるコンテンツを要求して受け取るため、および将来に要求され得るコンテンツを示すための、クライアント・アプリケーションのためのプロセスを提供するフローチャートを示す。 図6は、例示の実施形態に従った、望まれるコンテンツを要求して受け取るように、および将来に要求され得るコンテンツを示すように構成されたクライアント・アプリケーションを有するユーザー・デバイスのブロック図である。 図7は、例示の実施形態に従った、追加のコンテンツ優先度設定手段を含む追加のコンテンツ予測手段のブロック図を示す。 図8は、例示の実施形態に従った、将来にクライアント・アプリケーションによりコンテンツが要求され得る可能性を示すためのプロセスを示す。 図9は、例示の実施形態に従った、キャッシング・サーバーのブロック図を示す。 図10は、例示の実施形態に従った、リクエスト優先度設定手段を含むコンテンツ取得モジュールのブロック図を示す。 図11は、例示の実施形態に従った、元サーバーに対して将来にクライアント・アプリケーションにより要求され得るコンテンツに関するリクエストの優先度を設定するためのプロセスを示す。 図12は、本発明の実施形態をインプリメントするために用いられ得る例示のコンピューターのブロック図を示す。
[0029] 本発明の特徴および利点は、下記の詳細な説明を図面と関連させると更に明確になり、これらを通じて、同様の参照符号は対応するエレメントを識別する。図面では、同様の参照番号は一般に、同一、機能的に類似、および/または構造的に類似のエレメントを示す。図面では、或るエレメントの最初に現れる図面が、そのエレメントに対応する参照番号の最も左にある数(1以上)により示されている。
I. 序説
[0030] この明細書は、本発明の特徴を組み込む1以上の実施形態を開示する。開示される実施形態(1以上)は、本発明の単なる例である。本発明の範囲は、開示される実施形態(1以上)には限定されない。本発明は、添付の特許請求の範囲により定められる。
[0031] 明細書における「1つの実施形態」、「実施形態」、「例示の実施形態」などへの参照は、記載される実施形態が、特定の機能、構造、又は特徴を含み得ることを示すが、その特定の機能、構造、又は特徴を全ての実施形態が必ずしも含まないこともあり得る。更に、そのようなフレーズは、必ずしも同じ実施形態を指すものではない。更に、1つの実施形態と関連して特定の機能、構造、又は特徴が説明されたときには、明確に説明したか否かにかかわらず、他の実施形態と関連してそのような機能、構造、又は特徴をもたらすことは、当業者の知識内にあると申し上げたい。
[0032] 本発明の多くの例示の実施形態が以下で説明される。ここでの何れのセクション/サブセクションの見出しも、限定を意図していないことに留意されたい。実施形態はこの文章全体で説明され、何れのタイプの実施形態も、何れのセクション/サブセクションにも含まれ得る。
II. 例示の実施形態
[0033] コンテンツ配信ネットワーク(CDN)は、様々なネットワーク・ノードに置かれたデータのコピーを含むコンピューターのネットワークである。CDNは、元サーバーとエンド・ユーザー・コンピューターとの間でのデータのためのインターフェースを提供する。元サーバーは、コンテンツの一次のソースであり、CDNのサーバーは、元サーバーにおける要求の最も高いコンテンツのコピーをキャッシュする。CDNのサーバーは、元サーバーよりもエンド・ユーザー・コンピューターの近くになるように、戦略的に配置することができる。エンド・ユーザー・コンピューターは、CDNのサーバーにおいて、要求の高いデータへアクセスすることができ、元サーバーからのデータへ直接にアクセスする必要はない。従って、CDNは、アクセス帯域を増加させること、冗長性を増加させること、およびアクセス・レイテンシを低減させることにより、データへのアクセスを改善する。CDNへキャッシュされ得るコンテンツのタイプは、ウェブ・オブジェクト(テキスト、グラフィックス、URL、およびスクリプト)、ダウンロード可能オブジェクト(メディア・ファイル、ソフトウェア、ドキュメント)、アプリケーション、ライブ・ストリーミング・メディア、およびデータベース・クエリを含む。
[0034] ユーザーの計算デバイスのブラウザーへ、より迅速にコンテンツ(例えば、マップ・タイル)を提供することを可能にするための、様々な技術が開発されている。第1の技術によると、オンライン・アプリケーションのための元サーバーは、将来のコンテンツ・リクエストを予測することができる。予測される将来のコンテンツをCDNにプリキャッシングすることができ、それにより、その予測される将来のコンテンツは、それが実際に要求された場合には、ユーザーの計算デバイスにより、より迅速にアクセスされることができる。第2の技術によると、クライアント・ウェブ・ブラウザーは、将来に何れのコンテンツが望まれるかを予測することができ、そのコンテンツをユーザーの計算デバイスのウェブ・ブラウザーへプリフェッチすることができる(例えば、AJAX(非同期JavaScript(登録商標))技術を用いる)。例えば、ユーザーは、計算デバイスにおいて一連のイメージを見るために、ウェブ・ブラウザーを用いることができる。それぞれのイメージが見られるたびに、元サーバーにおいて、次に見られるイメージを予測することができ、予測した次のイメージを、ウェブ・ブラウザーへプリフェッチすることができ、それにより、現在のイメージから次のイメージへの円滑で即座の移行を可能とする。第3の技術によると、CDNサーバーは、ユーザーの計算デバイスによる将来のコンテンツ・リクエストを予測することができ、予測した将来のコンテンツをCDNにプリキャッシングすることができる。
[0035] しかし、これらの技術には欠点がある。例えば、元サーバーが将来のコンテンツを予測することには、プリキャッシングされるコンテンツが事前に決定される、という欠点がある。ウェブ・ブラウザーへコンテンツをプリフェッチすることに関しては、データ転送のためにユーザーがコストを費やす場合や、帯域幅に制限がある場合(例えば、モバイル・アプリケーションの場合など)において、そのようなプリキャッシングは、許容できないこと、及び/又は望まれる性能を提供できないことがあり得る。更に、CDNサーバーが将来のコンテンツを予測してプリキャッシングすることに関しては、将来のコンテンツ・リクエストを推測可能とするために、CDNは、CDNの受け取るコンテンツ・リクエストのタイプを理解するために高性能である必要がある。
[0036] 本発明の実施形態は、そのような欠点を克服する。1つの実施形態では、将来に望まれ得るコンテンツを予測するためのロジックを、ユーザーの計算デバイスにおけるクライアント・アプリケーション(例えば、ブラウザーや他のクライアント・アプリケーションの中)においてインプリメントすることができる。従って、ロジックは、クライアント・アプリケーションに対してより特定的に調整することができ、また、クライアント・アプリケーションの進化につれて進化させることができる(例えば、アップデートを通じて)。
[0037] 更に、1つの実施形態では、予測される将来のコンテンツは、ウェブ・ブラウザーでプリキャッシングしておくのではなく、CDNのストレージへキャッシュすることができる。CDNのストレージへのプリキャッシングは、ウェブ・ブラウザーへ送られるデータを大きく増加させず、従って、ウェブ・ブラウザーの性能に対する悪影響を及ぼさず、データの転送にコストを要する場合や帯域幅の制限が存在する場合の問題が無い。
[0038] 従って、実施形態は、クライアント・アプリケーション自体においてではなく、CDNのキャッシング・サーバーにおけるコンテンツのプリキャッシングを、可能にする。何れのコンテンツをプリキャッシングするかを決定するビジネス・ロジックは、クライアント・アプリケーション内に存在することを可能とされる。クライアント・アプリケーションは、ユーザーのコンテキスト/挙動および/または他の要因に基づいて、CDNへ、何れのコンテンツを直接にプリキャッシングするかに関して、ヒントを与えることができる。プリキャッシングのヒントは、オプションとして、将来にコンテンツが使用される可能性のインジケーションを含むことができ、使用可能な容量に従ってCDNがプリキャッシング・リクエストの優先度を設定することを、可能にする。
[0039] 実施形態は、任意のタイプのCDNでインプリメントすることができる。例えば、図1は、本発明の実施形態に従った、コンテンツをユーザー・デバイスへ届けるCDN100のブロック図を示す。CDN100は、例示のタイプのコンテンツ配信ネットワークとして示しており、限定することを意図していない。図1に示すように、CDN100は、元サーバー102と第1および第2のキャッシング・サーバー104aおよび104bを含む。更に、図1に示すように、CDN100は、第1〜第4のユーザー・デバイス106a〜106dへコンテンツを届ける。図1では、1つの元サーバー102と、2つのキャッシング・サーバー104aおよび104bと、4つのユーザー・デバイス106a〜106dとが例示目的で示されているが、図1のこれらの構成の任意の数のものが存在することができ、任意の数のものとしては、1以上の追加の元サーバー、1以上の追加のキャッシング・サーバー、および/または1以上の追加のユーザー・デバイスが含まれ、数十、数百、数千、更にはそれより多数のサーバーおよび/またはユーザー・デバイスが含まれる。実施形態では、キャッシング・サーバー104aおよび104bは、キャッシング・サーバー・クラスター(また、オプションとして、更なるキャッシング・サーバー)に含まれるようにすること、または含まれないようにすることができ、また、任意の数のキャッシング・サーバー・クラスターが存在することができる。
[0040] ユーザー・デバイス106a〜106dのそれぞれは、任意のタイプの静止型または移動型の計算デバイスとすることができ、デスクトップ・コンピューター(例えば、パーソナル・コンピューターなど)、モバイルのコンピューターまたは計算デバイス(例えば、Palmデバイス、RIM Blackberryデバイス、パーソナル・デジタル・アシスタント(PDA)、ラップトップ・コンピューター、ノートブック・コンピューター、タブレット・コンピューター(例えば、AppleiPad)、ネットブックなど)、スマート・フォン(例えば、AppleiPhone、GoogleAndroidフォン、MicrosoftWindowsフォンなど)、または他のタイプの計算デバイスを含む。
[0041] 図1に示すように、元サーバー102とキャッシング・サーバー104aおよび104bとは、ネットワーク108aを通じて通信するように結合され、キャッシング・サーバー104aおよび104bとユーザー・デバイス106a〜106dとは、ネットワーク108bを通じて通信するように結合されている。ネットワーク108aおよび108bは、別のネットワークとるすことも、1つのネットワークに含まれるようにすることもできる。ネットワーク108aおよび108bの例は、LAN(ローカル・エリア・ネットワーク)、WAN(ワイド・エリア・ネットワーク)、またはインターネットなどのようなネットワークの組み合わせを、含むことができる。ネットワーク108aおよび108bに含まれ得る通信リンクの例は、IEEE802.11ワイヤレスLAN(WLAN)ワイヤレス・リンク、Worldwide Interoperability for mcrowave Access(Wi−Max)リンク、セルラー・ネットワーク・リンク、ワイヤレス・パーソナル・エリア・ネットワーク(PAN)リンク(例えば、Bluetooth(登録商標)リンク)、イーサネット(登録商標)・リンク、USB(ユニバーサル・シリアル・バス)リンクなどを含む。元サーバー102とキャッシング・サーバー104aおよび104bとのそれぞれは、ここに記載した又は知られている任意のタイプの計算デバイスとすることができる。
[0042] 図1に示すように、ユーザー・デバイス106a〜106dのそれぞれは、クライアント・アプリケーション110a〜110dのうちの対応するものを含む。クライアント・アプリケーション110a〜110dは、ユーザー・デバイス106a〜106dで実行され、CDN100を通じてコンテンツへアクセスするアプリケーションである。クライアント・アプリケーション110a〜110dの例は、ウェブ・ブラウザー、メディア・プレーヤー(例えば、ビデオ・プレーヤー、イメージ・ビューワー、オーディオ・プレーヤーなど)、および他のタイプのクライアント・アプリケーションを含む。図1に示すように、元サーバー102は、ストレージに、クライアント・アプリケーション110a〜110dによりアクセスを望まれ得るコンテンツ112を格納する。コンテンツ112は任意のタイプのコンテンツとすることができ、ウェブ・オブジェクト(例えば、テキスト、グラフィックス/イメージ/ビデオ、URL(ユニフォーム・リソース・ロケーター)、スクリプトなど)、ダウンロード可能オブジェクト(例えば、メディア・ファイル、ソフトウェア、ドキュメントなど)、アプリケーション、ライブ・ストリーミング・メディア、およびデータベース・データを含む。クライアント・アプリケーション110a〜110dは、幾つかの場合には、元サーバー102においてコンテンツ112へ直接にアクセスすることができる。更に、キャッシング・サーバー104aおよび104bのそれぞれは、コンテンツ112の一部を、キャッシュ・コンテンツ114aおよびキャッシュ・コンテンツ114bとしてそれぞれキャッシュすることができる。従って、クライアント・アプリケーション110a〜110dは、幾つかの場合、キャッシング・サーバー104aおよび104bにおいて、コンテンツ112を、キャッシュ・コンテンツ114aおよびキャッシュ・コンテンツ114bとしてアクセスすることができ、コンテンツ112を元サーバー102から直接に得る必要がない。この直接に得ることは、ボトルネックであり得る。
[0043] 例えば、図1に示すように、ユーザー・デバイス106aのクライアント・アプリケーション110aは、コンテンツ・リクエスト116をキャッシング・サーバー104aへ、送ることができる。コンテンツ・リクエスト116は、クライアント・アプリケーション110aにより将来要求されると予測されたコンテンツと、クライアント・アプリケーション110aにより直接に望まれるコンテンツとを示す。このように、クライアント・アプリケーション110aは、将来に要求し得るコンテンツ、従って、キャッシング・サーバー104aによりキャッシュされることが望ましいコンテンツを、キャッシング・サーバー104aに伝える。図1の実施形態では、コンテンツ・リクエスト116が、クライアント・アプリケーション110aにより望まれているコンテンツと、クライアント・アプリケーション110aにより将来に要求されると予測されたコンテンツとの双方を示すことに、留意されたい。別の実施形態では、コンテンツ・リクエスト116は、クライアント・アプリケーション110aにより将来に要求されると予測されたコンテンツを含むことができ、クライアント・アプリケーション110aにより望まれているコンテンツは、クライアント・アプリケーション110aからキャッシング・サーバー104aへ送られる別のリクエストで示すことができる。
[0044] キャッシング・サーバー104aは、コンテンツ・リクエスト116で示された予測される将来のコンテンツを要求するものであり元サーバー102へ送られるコンテンツ・リクエスト118を、作成することができる。クライアント・アプリケーション110aにより要求された望まれるコンテンツが、まだキャッシング・サーバー104aにキャッシュされていない場合、キャッシング・サーバー104aは、望まれるコンテンツをコンテンツ・リクエスト118で示すこと、または元サーバー102(又は他の元サーバー)へ望まれるコンテンツに関する別個のリクエストを送ることができる。元サーバー102は、コンテンツ112のコンテンツを、コンテンツ・リクエスト118に対する応答120で、キャッシング・サーバー104aへ送ることができる。応答120は、望まれるコンテンツと、予測される将来のコンテンツとを含むことができる。代替的に、望まれるコンテンツと、予測される将来のコンテンツとを、別個の伝送で元サーバー102からキャッシング・サーバー104aへ送ること、または望まれるコンテンツと、予測される将来のコンテンツとを、異なる元サーバーから送ることができる。キャッシング・サーバー104aは、望まれるコンテンツと、予測される将来のコンテンツとを、キャッシュ・コンテンツ114aとしてキャッシュすることができ、望まれるコンテンツを、望まれるコンテンツ122としてクライアント・アプリケーション110aへ送ることができる。クライアント・アプリケーション110aが、キャッシング・サーバー104aからのコンテンツを続いて要求し、そのコンテンツが、予測された将来のコンテンツであった場合、キャッシング・サーバー104aは、予測された将来のコンテンツを含むキャッシュ・コンテンツ114aを、クライアント・アプリケーション110aへ送ることができる。クライアント・アプリケーション110b〜110dは、キャッシング・サーバー104aおよび104bの一方または双方と、同様にインタラクションすることができ、予測される将来のコンテンツをキャッシング・サーバー104aおよび104bにおいてキャッシュすることにより、従来技術の場合よりも効率的な様式で元サーバー102のコンテンツを受け取ることができる。
[0045] 上述のように、実施形態において、応答を速くするために、クライアント・アプリケーションは、将来アクセスされるコンテンツを予測することができ、予測されたコンテンツをキャッシング・サーバーでキャッシュすることができる。実施形態では、図1のクライアント・アプリケーション110a〜110dは、将来アクセスされるコンテンツを予測することができ、その予測された将来のコンテンツを、キャッシュされるように、キャッシング・サーバー104aおよび104bへ示すことができる。例えば、図2は、例示の実施形態に従ったCDN200のブロック図を示す。図2に示すように、CDN200は、元サーバー102と、キャッシング・サーバー202と、ユーザー・デバイス106aとを含む。キャッシング・サーバー202は、図1のキャッシング・サーバー104aおよび104bの1つの例である。図2に示すように、ユーザー・デバイス106aはクライアント・アプリケーション204を含み、クライアント・アプリケーション204は追加のコンテンツ予測手段208を含む。クライアント・アプリケーション204は、図1のクライアント・アプリケーション110a〜110dの1つの例である。図2において、クライアント・アプリケーション204は、後に要求され得るコンテンツを予測するように構成され、予測されたコンテンツはキャッシング・サーバー202により取得されてキャッシュされる。
[0046] 以下で、図2を、図3と関連させて説明する。図3は、例示の実施形態に従った、クライアント・アプリケーションにより将来要求され得るコンテンツをキャッシング・サーバーにキャッシュさせるためのプロセスを提供するフローチャート300を示す。実施形態では、フローチャート300は、図2のキャッシング・サーバー202により行うことができる。1つの実施形態では、フローチャート300は、キャッシュ・ストレージを共有する複数のキャッシング・サーバーが共同で行うことができる。更に、フローチャート300における元サーバー102に関する通信は、1つの元サーバーまたは複数の元サーバーを用いて行うことができる。更なる構造および動作の実施形態は、フローチャート300およびキャッシング・サーバー202に関する後の記載に基づいて、当業者には明らかとなる。
[0047] フローチャート300はステップ302で開始する。ステップ302において、ユーザー・デバイスのクライアント・アプリケーションから、望まれるコンテンツに関するリクエストを受け取る。リクエストは、望まれるコンテンツと関連しておりクライアント・アプリケーションにより続いて要求され得る追加のコンテンツを示す。例えば、図2に示すように、キャッシング・サーバー202は、ユーザー・デバイス106aのクライアント・アプリケーション204から、第1の望まれるコンテンツのリクエスト210を受け取ることができる。第1の望まれるコンテンツのリクエスト210は、望まれるコンテンツに関するリクエストであり、望まれるコンテンツは、例えば、クライアント・アプリケーション204を用いてユーザーが見ているマップのマップ・タイル、クライアント・アプリケーション204を用いてユーザーが見ている一連のイメージ中のイメージ、クライアント・アプリケーション204を用いてユーザーが見ているビデオ・オブジェクト(例えば、ビデオ・ファイル)のビデオ・フレーム、クライアント・アプリケーション204を用いてユーザーが再生しているオーディオ・オブジェクト(例えば、オーディオ・ファイル)のオーディオ・フレーム、クライアント・アプリケーション204を用いてユーザーが見ているウェブ・ページのコンテンツ・アイテム、および/またはここの何れかの場所で記載されている又は知られている他のコンテンツなどである。
[0048] 更に、第1の望まれるコンテンツのリクエスト210は、望まれるコンテンツと関連しておりクライアント・アプリケーション204により続いて要求され得る追加のコンテンツのインジケーションを含む。実施形態では、クライアント・アプリケーション204の追加のコンテンツ予測手段208は、望まれるコンテンツと関連しておりクライアント・アプリケーション204により続いて要求され得る追加のコンテンツを、予測する。例えば、予測される追加のコンテンツは、ユーザーにより見られているマップにおいてのユーザーにより後続して見られると予測される1以上の追加のマップ・タイル、ユーザーにより見られている一連のイメージにおいてのユーザーにより後続して見られると予測される1以上の追加のイメージ、ユーザーにより見られているビデオ・オブジェクトにおいてのユーザーにより後続して見られると予測される1以上の追加のビデオ・フレーム、ユーザーにより再生されているオーディオ・オブジェクトにおいてのユーザーにより後続して再生されると予測される1以上の追加のオーディオ・フレーム、ウェブ・ページにより参照されており後続して見られると予測される1以上の追加のコンテンツ・アイテムなどであり得る。予測される追加のコンテンツのインジケーションは、クライアント・アプリケーション204による第1の望まれるコンテンツのリクエスト210に含まれる。
[0049] 第1の望まれるコンテンツのリクエスト210(およびそれに対する応答(1以上))は、クライアント・アプリケーション204とキャッシング・サーバー202との間での1以上の通信接続(例えば、TCP接続)に含まれ得ることに、留意されたい。クライアント・アプリケーション204とキャッシング・サーバー202との間で任意の数の接続を形成することができ、各接続は、望まれるコンテンツに関するリクエストを含むことができ、且つ/又は1以上の予測される追加のコンテンツ・アイテムを示すことができる。幾つかの場合、望まれるコンテンツは既にキャッシング・サーバー202でキャッシュされているが、予測される将来のコンテンツはまだキャッシュされていない。そのような場合、予測される将来のコンテンツのみを、キャッシング・サーバー202は元サーバーに要求する(即ち、キャッシング・サーバー202で既にキャッシュされている望まれるコンテンツを、元サーバーへ要求する必要はない)。
[0050] 図3に戻ると、ステップ304において、少なくとも、示された追加のコンテンツに関するリクエストを、元サーバーへ送る。例えば、図2に示すように、キャッシング・サーバー202は、第1の望まれるコンテンツのリクエスト210において示された追加のコンテンツを示すサーバー・リクエスト212を、送ることができる。サーバー・リクエスト212は、元サーバー102により受け取られる。望まれるコンテンツがまだキャッシング・サーバー202によりキャッシュされていない場合、キャッシング・サーバー202は、オプションとして、元サーバー102へ、第1の望まれるコンテンツのリクエスト210において示される望まれるコンテンツに関するリクエストを、送ることができる。実施形態では、サーバー・リクエスト212は、予測された追加のコンテンツに関するリクエストと、望まれるコンテンツに関するリクエストとの双方を、含むことができる。
[0051] ステップ306において、元サーバーから、追加のコンテンツを受け取る。例えば、サーバー・リクエスト212に応じて、元サーバー102は、要求された場合には、望まれるコンテンツを含むサーバー応答214を送ることができる。例えば、元サーバー102は、元サーバー102と関連するストレージ内の、望まれるコンテンツへアクセスすることができる。キャッシング・サーバー202は、元サーバー102からサーバー応答214を受け取る。更に、元サーバー102は、元サーバー102と関連するストレージ内の、予測された追加のコンテンツへアクセスすることができ、その予測された追加のコンテンツを、サーバー応答214または別個の応答で、キャッシング・サーバー202へ送ることができる。
[0052] ステップ308において、望まれるコンテンツは、ユーザー・デバイスにおけるクライアント・アプリケーションへ送られる。例えば、図2に示すように、キャッシング・サーバー202は、第1の望まれるコンテンツの応答216で、望まれるコンテンツをクライアント・アプリケーション204へ送ることができる。
[0053] ステップ310において、追加のコンテンツがキャッシュされる。例えば、図2に示すように、キャッシング・サーバー202はストレージ222を含むことができ、元サーバー102からサーバー応答214で受け取った予測される追加のコンテンツは、キャッシュ・コンテンツ224としてストレージ222にキャッシュすることができる。ストレージ222は、コンテンツをキャッシュするための1以上の任意のタイプのストレージ機構を含むことができ、ストレージ機構は、磁気ディスク(例えば、ハード・ディスク・ドライブ内)、光ディスク(例えば、光ディスク・ドライブ内)、磁気テープ(例えば、テープ・ドライブ内)、RAM(ランダム・アクセス・メモリ)デバイスなどのようなメモリ・デバイス、および/または任意の他の適切なタイプのストレージ機構などを含む。更に、実施形態では、ストレージ222は、複数のキャッシング・サーバーで共有されることができる。
[0054] フローチャート300によると、クライアント・アプリケーションは、CDNへ、将来望まれ得る追加のコンテンツの予測を知らせており、予測された追加のコンテンツは、CDN(例えば、CDNのキャッシング・サーバー402)にプリキャッシングされる。このプリキャッシングは、実際に続いて要求されるコンテンツのキャッシュ・ヒット率を増加させ、それにより、エンド・ユーザ・エクスペリエンス全体を改善する。全てのプリキャッシングされたコンテンツが必ずしも使用されるわけではなく、オプションとして、プリキャッシング・リクエストは、優先度が、通常のCDNコンテンツ・リクエストより下に設定され得ることに、留意されたい。そのような優先度設定の例示の実施形態は、後に更に説明する。プリキャッシングの利点は、スペアの容量がある場合に、それをより良く活用してユーザ・エクスペリエンス全体を改善することである。優先度設定(例えば、可能性インジケーター)の使用は、プリキャッシングの最適化を援助する。
[0055] 例えば、図4は、例示の実施形態に従った、以前にキャッシュしたコンテンツをクライアント・アプリケーションへ提供するためのプロセスを提供するフローチャート400を示す。例えば、実施形態では、フローチャート400は、図3のフローチャート300に続くことができる。以下で、フローチャート400を、図2と関連させて説明する。
[0056] フローチャート400はステップ402で開始する。ステップ402において、クライアント・アプリケーションから、追加のコンテンツに関するリクエストを含む第2のリクエストが受け取られる。例えば、図2に示すように、キャッシング・サーバー202は、ユーザー・デバイス106aのクライアント・アプリケーション204から、第2の望まれるコンテンツのリクエスト218を受け取ることができる。第2の望まれるコンテンツのリクエスト218は、クライアント・アプリケーション204のためのコンテンツ(例えば、マップ・タイル、イメージ、ビデオ、オーディオ、ウェブ・ページなど)に関するリクエストであり、そのコンテンツは、クライアント・アプリケーション204により将来要求される可能性があると以前に予測されたものであり、且つ第1の望まれるコンテンツのリクエスト210(または他の以前の望まれるコンテンツのリクエスト)により示されたものである。
[0057] ステップ404において、キャッシュされた追加のコンテンツは、ユーザー・デバイスにおけるクライアント・アプリケーションへ供給される。実施形態では、キャッシング・サーバー202は、第2の望まれるコンテンツのリクエスト218を分析して、その中で要求している何れかのコンテンツがキャッシング・サーバー202(例えば、ストレージ222内)で既にキャッシュされているかどうかを、判定することができる。例えば、実施形態では、キャッシング・サーバー202は、ストレージ222にキャッシュされたコンテンツへコンテンツ識別子(例えば、ハッシュ値などのような識別番号など)をマップする、キャッシュされたコンテンツのマップ(cached content map)または他のデータ構造へ、アクセスすることができる。キャッシング・サーバー202は、望まれるコンテンツに関しての第2の望まれるコンテンツのリクエスト218で受け取ったコンテンツ識別子と、キャッシュされたコンテンツのマップ内のコンテンツ識別子とを比較して、望まれるコンテンツが既にキャッシュされているかどうかを判定する。望まれるコンテンツに対してのコンテンツ識別子が、キャッシュされたコンテンツのマップ内で見つかった場合、その望まれるコンテンツは、キャッシング・サーバー202で既にキャッシュされている。そのような場合、キャッシング・サーバー202は、ストレージ222内のキャッシュされたコンテンツ(例えば、キャッシュ・コンテンツ224として)へアクセスすることができ、そのキャッシュされたコンテンツを、キャッシュ・コンテンツ応答220の送信で、クライアント・アプリケーション204へ供給することができる。
[0058] 第2の望まれるコンテンツのリクエスト218で示された望まれるコンテンツが、まだキャッシング・サーバー202でキャッシュされていない場合、フローチャート300(図3)のステップ304および306と関連して先に述べたように、キャッシング・サーバー202は、元サーバー102へ、望まれるコンテンツを要求することができる。更に、第2の望まれるコンテンツのリクエスト218は、オプションとして、第1の望まれるコンテンツのリクエスト210の場合と同様の様式で、続いて望まれる可能性があると追加のコンテンツ予測手段208により予測された更なる追加のコンテンツを、示すことができる。そのような場合、キャッシング・サーバー202は、フローチャート300のステップ304、306、および310と関連して先に述べた様式と同様に、元サーバー102へ、示された更なる追加のコンテンツを要求することができ、後続のコンテンツ・リクエストのために、その示された更なる追加のコンテンツをストレージ222にキャッシュすることができる。
[0059] クライアント・アプリケーションおよびキャッシング・サーバーに関する例示の実施形態は、以下のサブセクションで説明する。
A. 例示のクライアント・アプリケーションの実施形態
[0060] 上述のように、実施形態では、クライアント・アプリケーション(例えば、クライアント・アプリケーション204)は、応答を速くするために、将来アクセスされるコンテンツを予測することができ、予測されたコンテンツをキャッシング・サーバーでキャッシュすることができる。例えば、図5は、例示の実施形態に従った、クライアント・アプリケーションのための、望まれるコンテンツを要求して受け取るため、および将来に要求され得るコンテンツを、キャッシュするために示すためのプロセスを提供するフローチャート500を示す。実施形態では、フローチャート500は、図2のクライアント・アプリケーション204により行うことができる。フローチャート500は、図6と関連させて説明する。図6は、クライアント・アプリケーション204の例示の実施形態を含むユーザー・デバイス600のブロック図を示す。図6に示すように、クライアント・アプリケーション204は、通信インターフェース602および追加のコンテンツ予測手段208を含み、通信インターフェース602は、リクエスト・フォーマッター604を含む。更なる構造および動作の実施形態は、フローチャート500および図6のクライアント・アプリケーション204に関する後の記載に基づいて、当業者には明らかとなる。
[0061] フローチャート500はステップ502で開始する。ステップ502において、望まれるコンテンツに関する第1リクエストが作成され、第1リクエストは、望まれるコンテンツと関連しておりクライアント・アプリケーションにより続いて要求され得る追加のコンテンツを示す。例えば、図6に示すように、クライアント・アプリケーション204は、第1の望まれるコンテンツのリクエスト210を作成することができ、これは、上述のように、望まれるコンテンツに関するリクエストである。更に、上述のように、第1の望まれるコンテンツのリクエスト210は、望まれるコンテンツと関連しておりクライアント・アプリケーション204により続いて要求され得る追加のコンテンツのインジケーションを含む。
[0062] 実施形態では、クライアント・アプリケーション204の追加のコンテンツ予測手段208が、望まれるコンテンツと関連しておりクライアント・アプリケーション204により続いて要求され得る追加のコンテンツを、予測する。例えば、図6に示すように、追加のコンテンツ予測手段208は、望まれるコンテンツのインジケーション606を受け取ることができる。望まれるコンテンツのインジケーション606は、クライアント・アプリケーション204の内部で作成すること、および/またはクライアント・アプリケーション204により提供されるユーザー・インターフェースへユーザーにより入力することができる。望まれるコンテンツのインジケーション606は、表示、再生、またはインタラクションされることが望まれるコンテンツを示す。例えば、望まれるコンテンツのインジケーション606は、マップ・タイル、ビデオ・フレーム、オーディオ・フレーム、イメージ、ウェブ・ページなどのうちの1以上のものを、含むことができる(例えば、URL、ファイル名などによる)。追加のコンテンツ予測手段208は、望まれるコンテンツのインジケーション606により示される望まれるコンテンツに基づいて追加のコンテンツを予測することができ、予測された追加のコンテンツのインジケーション608として、予測された追加のコンテンツを出力することができる。
[0063] 例えば、望まれるコンテンツのインジケーション606が、望まれるコンテンツとして、見られているマップのマップ・タイルを示す場合、追加のコンテンツ予測手段208は、マップにおけるユーザーにより続いて見られる1以上の追加のマップ・タイルを、予測することができる。そのような場合、追加のコンテンツ予測手段208は、予測される追加のコンテンツのインジケーション608を作成して1以上のマップ・タイルを示すことができ、1以上のマップ・タイルは、示されたマップ・タイルと空間的に隣接するマップ・タイル、示されたマップ・タイル内のマップ・タイル(ズーム・イン)、示されたマップ・タイルを含むマップ・タイル(ズーム・アウト)、および/またはマップにおけるユーザーにより続いて見られそうな他のマップ・タイルである。
[0064] 別の例では、望まれるコンテンツのインジケーション606が、望まれるコンテンツとして、一連のイメージにおけるイメージを示す場合、追加のコンテンツ予測手段208は、一連のイメージにおけるユーザーにより続いて見られる1以上の追加のイメージを、予測することができ、追加のイメージは、一連のイメージにおける、示されたイメージに隣接する(時間的または空間的に)1以上の後続するイメージ(一連のイメージにおける残りの全てを含む)、示されたイメージの一部であるイメージ(例えば、ズーム・イン・イメージ)、示されたイメージ全体を含むイメージ(例えば、ズーム・アウト・イメージ)などである。
[0065] 別の例では、望まれるコンテンツのインジケーション606が、望まれるコンテンツとして、ビデオのビデオ・フレームを示す場合、追加のコンテンツ予測手段208は、ビデオにおけるユーザーにより続いて見られる1以上の追加のビデオ・フレームを、予測することができ、追加のビデオ・フレームは、ビデオにおける1以上の後続するビデオ・フレーム(ビデオの残りの全てを含む)などである。
[0066] 更に別の例では、望まれるコンテンツのインジケーション606が、望まれるコンテンツとして、オーディオのオーディオ・フレームを示す場合、追加のコンテンツ予測手段208は、オーディオにおけるユーザーにより続いて再生される1以上の追加のオーディオ・フレームを、予測することができ、追加のオーディオ・フレームは、オーディオにおける1以上の後続するオーディオ・フレーム(オーディオの残りの全てを含む)などである。
[0067] 更に別の例では、望まれるコンテンツのインジケーション606が、望まれるコンテンツとして、ウェブ・ページを示す場合、追加のコンテンツ予測手段208は、ユーザーにより続いて見られる1以上の追加のウェブ・ページまたは他のウェブ・オブジェクト(例えば、イメージ、ビデオ、オーディオなど)を、予測することができ、追加のウェブ・ページまたは他のウェブ・オブジェクトは、示されたウェブ・ページ内でリンクされる1以上のウェブ・ページまたは他のウェブ・オブジェクト、示されたウェブ・ページを含むウェブ・サイトの1以上のウェブ・ページなどである。
[0068] 図6に示されるように、通信インターフェース602は、望まれるコンテンツのインジケーション606と、予測された追加のコンテンツのインジケーション608とを受け取る。実施形態では、リクエスト・フォーマッター604は、望まれるコンテンツのインジケーション606により示される、望まれるコンテンツと、予測された追加のコンテンツのインジケーション608により示される、予測される追加のコンテンツとを要求するために、1以上のリクエストを作成する。通信インターフェース602は、リクエスト・フォーマッター604により作成されたリクエスト(1以上)を、第1の望まれるコンテンツのリクエスト210としてクライアント・アプリケーション204から送るように、構成される。実施形態では、リクエスト・フォーマッター604は、リクエスト(1以上)が、特定の通信技術で望まれる任意のフォーマットを有するように、作成することができる。
[0069] 例えば、1つの実施形態では、リクエスト・フォーマッター604は、HTTP(ハイパーテキスト・トランスファー・プロトコル)リクエスト・メッセージの形のリクエストを作成することができる。そのような実施形態では、HTTPリクエスト・メッセージは、望まれるコンテンツを要求するように構成されることができ、予測される追加のコンテンツは、HTTPリクエスト・メッセージにおいて任意の適切な様式で示すことができ、例えば、ヘッダーにおいて示されるようにできる。例えば、例示のHTTPリクエスト・メッセージの一部を以下に示す。
GET /images/logo.png HTTP/1.1
・・・
HINTS:<URL1>=20;<URL2>=60
・・・
この例では、HTTPリクエスト・メッセージは、望まれるコンテンツとしてウェブ・オブジェクト「/images/logo.png」をサーバーへ要求するリクエスト・ラインを含む。更に、例示のHTTPリクエスト・メッセージはHTTPヘッダー「HINTS」を含み、これは、予測される追加のコンテンツとして、2つのURL、即ち、URL1およびURL2を示す。この例では、「HINTS」において、「URL1」および「URL2」のそれぞれは、対応する予測された追加のコンテンツに対する完全なURL(例えば、http://tv.msn.com/tv/article.aspx?news=xyz”など)と、置換され得る。上記の例示のヘッダーでは2つのURLが示されているが、予測される追加のコンテンツの任意の数のアイテムを、このようにしてURLにより又は他の識別子により、ヘッダー内で示すことができる。
[0070] 従って、実施形態では、リクエスト・フォーマッター604は、望まれるコンテンツを示す(例えば、「GET」命令を用いる)、およびヘッダー(例えば、「HINTS」または予測される追加のコンテンツに対しての他の所定タイプのヘッダー)において予測される追加のコンテンツを示す、HTTPリクエスト・メッセージを作成することができる。別の実施形態では、望まれるコンテンツと予測される追加のコンテンツとは、リクエスト・フォーマッター604により、リクエストにおいて別の方法で示すことができる。上記の例ではHTTPリクエスト・メッセージにおいて1つの「HINTS」ヘッダーが現れ得るが、複数の「HINTS」ヘッダーが現れ得ることに、留意されたい。更に、実施形態では、HTTPリクエスト・メッセージは、何れの望まれるコンテンツも示さずに、予測された追加のコンテンツを示すことができる(即ち、予測された追加のコンテンツのみが指定/要求される)。そのようなHTTPリクエスト・メッセージでは、「GET」命令は、予測された追加のコンテンツを指定するために用いることができ、「HINTS」または他のヘッダーは、使わないようにすることができ、また、望まれたコンテンツはキャッシュされるがクライアントへはまだ返されていないことをキャッシング・サーバーに示すためのヘッダー(例えば、「CACHEONLY」ヘッダー)が現れるようにできる。
[0071] 通信インターフェース602は、第1の望まれるコンテンツのリクエスト210をキャッシング・サーバーへ送ることができる。実施形態では、通信インターフェース602は、HTTPメッセージで第1の望まれるコンテンツのリクエスト210を送るように構成すること、および/または当業者に知られているであろう別の方法でリクエストを通信するように構成することができる。
[0072] 図5に戻って参照すると、ステップ504において、望まれるコンテンツに関する第1リクエストに応じてその望まれるコンテンツを元サーバーから取得したキャッシング・サーバーから、望まれるコンテンツが受け取られる。例えば、図6に示すように、通信インターフェース602は、第1の望まれるコンテンツのリクエスト210に応じての第1の望まれるコンテンツの応答216を、キャッシング・サーバーから受け取ることができる。第1の望まれるコンテンツの応答216は、リクエスト210で要求された、望まれるコンテンツを含む。クライアント・アプリケーション204は、受け取った望まれたコンテンツを表示すること、再生すること、および/または受け取った望まれたコンテンツとユーザー・デバイス600のユーザーがインタラクションできるように、することができる。
[0073] ステップ506において、追加のコンテンツのための第2リクエストが作成される。例えば、図6に示すように、クライアント・アプリケーション204は、第2の望まれるコンテンツのリクエスト218を作成することができる。上述のように、第2の望まれるコンテンツのリクエスト218は、クライアント・アプリケーション204のためのコンテンツ(例えば、マップ・タイル、イメージ、ビデオ、オーディオ、ウェブ・ページなど)に関するリクエストであり、そのコンテンツは、クライアント・アプリケーション204により将来要求される可能性があると以前に予測されたものであり、且つ第1の望まれるコンテンツのリクエスト210により、そのように示されたものである。第2の望まれるコンテンツのリクエスト218は、第1の望まれるコンテンツのリクエスト210と同様に作成することができる。例えば、追加のコンテンツ予測手段208は、第2の望まれるコンテンツのインジケーション606を受け取ることができ、これは、表示、再生、またはインタラクションすることが望まれているコンテンツを示す。追加のコンテンツ予測手段208は、オプションとして、第2の望まれるコンテンツのインジケーション606により示される望まれるコンテンツに基づいて、追加のコンテンツを予測することができ、その予測した追加のコンテンツを、第2の予測した追加のコンテンツのインジケーション608として出力することができる。通信インターフェース602は、第2の望まれるコンテンツのインジケーション606を受け取り、オプションとして、第2の予測された追加のコンテンツのインジケーション608を受け取る。実施形態では、リクエスト・フォーマッター604は、第2の望まれるコンテンツに関するリクエストを作成し、オプションとして、作成したリクエストに第2の予測された追加のコンテンツを含める。通信インターフェース602は、リクエストを、第2の望まれるコンテンツのリクエスト218としてクライアント・アプリケーション204から送るように、構成される。
[0074] ステップ508において、望まれるコンテンツに関するリクエストに応じて元サーバーから追加のコンテンツを取得してその追加のコンテンツをキャッシュしたキャッシング・サーバーから、追加のコンテンツを受け取る。例えば、図6に示すように、通信インターフェース602は、キャッシュされたコンテンツの応答220を受け取ることができ、応答220は、第2の望まれるコンテンツのリクエスト218で示された望まれるコンテンツとして、キャッシング・サーバーからのキャッシュされたコンテンツを含む。キャッシング・サーバーは、望まれるコンテンツを元サーバーから以前に獲得し、後に要求され得るという場合には、その望まれるコンテンツをキャッシュしている。
[0075] 上述のように、キャッシュするためのコンテンツに関するリクエストは、オプションとして、優先度が、通常のCDNコンテンツ・リクエストより下に設定され得る。このように、実際に要求されているコンテンツは、単にキャッシュすることを目的として要求されているコンテンツの前に、要求することができる。また、キャッシュすることを目的として要求されており実際に要求される可能性が高いコンテンツは、キャッシュすることを目的として要求されており実際に要求される可能性が低いコンテンツの前に、キャッシュすることができる。
[0076] 例えば、図7は、例示の実施形態に従った、追加のコンテンツ優先度設定手段702を含む追加のコンテンツ予測手段208のブロック図を示す。追加のコンテンツ優先度設定手段702は、予測された追加のコンテンツを分析して、それがクライアント・アプリケーションにより実際に続いて要求される可能性の大きさを判定するように、構成される。例えば、実施形態では、追加のコンテンツ優先度設定手段702は、図8に示すステップ802に従って動作することができる。ステップ802において、追加のコンテンツがクライアント・アプリケーションにより続いて要求され得る可能性を示す可能性インジケーションが、作成される。実施形態では、それぞれの予測された追加のコンテンツ・アイテムに対して、追加のコンテンツ優先度設定手段702は、追加のコンテンツがクライアント・アプリケーション204により続いて要求され得る可能性を示す対応する可能性インジケーションを、作成することができる。作成された可能性インジケーションは、対応する予測された追加のコンテンツ・アイテムと関連させることができ、キャッシング・サーバーへ送られる望まれるコンテンツのリクエストに含ませることができる。キャッシング・サーバーは、可能性インジケーションを用いて、予測された追加のコンテンツ・アイテムのキャッシングの優先度を、他のコンテンツと相対して設定することができる。更に、キャッシング・サーバーは、予測されたコンテンツを要求するときに、元サーバーへ可能性インジケーションを送ることができ、それにより、元サーバーは、キャッシング・サーバーへの予測されたコンテンツの提供の優先度を設定することができる。
[0077] 追加のコンテンツ優先度設定手段702は、見られているコンテンツおよび/またはユーザーの挙動に基づくことを含めての、任意の様式で可能性インジケーションを作成することができる。例えば、可能性インジケーションは、様々なコンテンツ・タイプに対して異なって作成することができる(例えば、マップ・タイルなどと比較して、ビデオ・フレームへ高い可能性インジケーションの値を割り当てる)。別の実施形態では、追加のコンテンツ優先度設定手段702により、可能性インジケーションは、実際に要求されたコンテンツに対する近接性(例えば、時間および/または空間において)に基づいて、予測された追加のコンテンツに対して異なって作成することができる。例えば、マップの例では、現在見られているマップ・タイルに隣接するマップ・タイルには、その見られているマップ・タイルとの間に1以上のマップ・タイルが介在して離れているマップ・タイルと比べて、大きい値の可能性インジケーションを割り当てることができる。ビデオ・ストリームのすぐ次のビデオ・フレームには、ビデオ・ストリームの更に後ろのビデオ・フレーム(例えば、時間的に後でありビデオ・フレーム内に位置するビデオ・フレーム)と比べて、比較的高い値を有する可能性インジケーションを割り当てることができる。イメージ・ストリームのイメージおよび/またはオーディオ・ストリームのオーディオ・フレームは、実際のインプリメントに応じて、同様に及び/又は異なって扱うことができる。ウェブ・ページでは、ウェブ・ページの最上部の近くに位置するコンテンツ・アイテム(例えば、URL)へ、ウェブ・ページの最下部の近くに位置するコンテンツ・アイテムと比べて、高い値の可能性インジケーションを割り当てることができる。実施形態では、可能性インジケーションは、特定のインプリメントに関して望まれるように、様々な方法で作成することができ、任意の適切な値および値の範囲(例えば、数的な範囲、テキスト的な範囲(例えば、「高」、「中」、「低」など)など)を有することができる。ユーザーの挙動に関しては、ユーザーがマップで特定の方向にパンしているとき、その方向のマップ・タイルが将来に要求される可能性は、他のタイルの可能性よりも高く、従って、大きい可能性インジケーションを割り当てることができる。ユーザーがビデオまたはオーディオを早送りするとき、「次」のフレームは複数フレーム先であり得、従って、ストリームにおける複数フレーム先のフレームへ、より近いところにあるフレームと比べて、比較的高い値を有する可能性インジケーションを割り当てることができる。
[0078] 例えば、先に示した例示のHTTPメッセージでは、20という値を有する可能性インジケーションがURL1に対して作成され、60という値を有する可能性インジケーションがURL2に対して作成されている。そのような例では、可能性インジケーションは、1〜100の範囲の値を有することができ、可能性の値が低いことは、対応する予測された追加のコンテンツ・アイテムが、クライアント・アプリケーションにより将来に実際に要求される可能性が低いことを意味し、可能性の値が高いことは、対応する予測された追加のコンテンツ・アイテムが、クライアント・アプリケーションにより将来に実際に要求される可能性が高いことを意味する。従って、この例では、URL2が、URL1と比べて、クライアント・アプリケーションにより将来に要求される可能性が高く、従って、URL1の前にキャッシュされ得る。
B. 例示のキャッシング・サーバーの実施形態
[0079] 図9は、例示の実施形態に従った、キャッシング・サーバー902のブロック図を示す。キャッシング・サーバー902は、図2に示すキャッシング・サーバー202の例である。図2に示すように、キャッシング・サーバー902は、コンテンツ取得モジュール904、コンテンツ・リクエスト・パーサー906、コンテンツ・プロバイダー・モジュール908、およびストレージ222を含む。キャッシング・サーバー902は、様々な方法で、予測された将来のコンテンツをプリキャッシングすることができる。例えば、キャッシング・サーバー902は、実施形態において、フローチャート300および400を行うことができる。
[0080] 例えば、コンテンツ・リクエスト・パーサー906はフローチャート300のステップ302を行うことができ、そのステップで、望まれるコンテンツに関するリクエストが、ユーザー・デバイスのクライアント・アプリケーションから受け取られ、そのリクエストは、望まれるコンテンツと関連しておりクライアント・アプリケーションにより続いて要求され得る追加のコンテンツを、示す。コンテンツ・リクエスト・パーサー906は、第1の望まれるコンテンツのリクエスト210を受け取って解析して、何れの望まれるコンテンツも何れの予測された追加のコンテンツも、識別することができる。コンテンツ・リクエスト・パーサー906は、第1の識別された望まれるコンテンツおよび予測された追加のコンテンツ912を、コンテンツ取得モジュール904へ送る。
[0081] コンテンツ取得モジュール904はフローチャート300のステップ304を行うことができ、そのステップで、示された追加のコンテンツに関するリクエストが元サーバーへ送られる。図9に示すように、コンテンツ取得モジュール904は、サーバー・リクエスト212を元サーバーへ送ることができ、これは、予測された追加のコンテンツを示し、また、望まれるコンテンツを示すことができる(既にキャッシュされていない場合)。コンテンツ取得モジュール904は、予測された追加のコンテンツに関するリクエストと望まれるコンテンツに関するリクエストとの双方をサーバー・リクエスト212に含めること、またはそれらを別個の通信で送ることができる。
[0082] コンテンツ取得モジュール904はフローチャート300のステップ306を行うことができ、そのステップで、望まれるコンテンツおよび追加のコンテンツが元サーバーから取得される。コンテンツ取得モジュール904は、元サーバーから、望まれるコンテンツ(要求された場合)と予測された追加のコンテンツとを含むサーバー応答214を受け取ること、または望まれるコンテンツと予測された追加のコンテンツとを別個の通信で受け取ることができる。
[0083] コンテンツ・プロバイダー・モジュール908はフローチャート300のステップ308を行うことができ、そのステップで、望まれるコンテンツがユーザー・デバイスのクライアント・アプリケーションへ送られる。図9に示すように、コンテンツ取得モジュール904は、取得した望まれるコンテンツ914を送ることができ、これは、元サーバーからサーバー応答214で取得した望まれるコンテンツを含む。コンテンツ・プロバイダー・モジュール908は、取得した望まれるコンテンツ914を受け取ることができ、望まれるコンテンツを、第1の望まれるコンテンツの応答216でクライアント・アプリケーションへ送ることができる。
[0084] コンテンツ取得モジュール904はフローチャート300のステップ310を行うことができ、そのステップで、追加のコンテンツがキャッシュされる。図9に示すように、コンテンツ取得モジュール904は、予測された追加のコンテンツを、キャッシュ・コンテンツ224としてストレージ222にキャッシュする。
[0085] コンテンツ・リクエスト・パーサー906は、フローチャート400(図4)のステップ402を行うことができ、そのステップで、クライアント・アプリケーションから、追加のコンテンツに関するリクエストを含む第2のリクエストが受け取られる。図9に示すように、コンテンツ・リクエスト・パーサー906は、クライアント・アプリケーションから、第2の望まれるコンテンツのリクエスト218を、受け取ることができる。コンテンツ・リクエスト・パーサー906は、第2の望まれるコンテンツのリクエスト218を受け取って解析して、何れの望まれるコンテンツも何れの予測された追加のコンテンツも、識別することができる。コンテンツ・リクエスト・パーサー906は、第2の識別された望まれるコンテンツおよび予測された追加のコンテンツ916を、コンテンツ取得モジュール904へ送る。図9の例では、第2の識別された望まれるコンテンツおよび予測された追加のコンテンツ916は、第1の識別された望まれるコンテンツおよび予測された追加のコンテンツ912における予測された追加のコンテンツを、望まれるコンテンツとして含む。
[0086] コンテンツ取得モジュール904およびコンテンツ・プロバイダー・モジュール908は、フローチャート400のステップ404を行うことができ、そのステップで、キャッシュされた追加のコンテンツがユーザー・デバイスのクライアント・アプリケーションへ供給される。コンテンツ取得モジュール904は、第2の識別された望まれるコンテンツおよび予測された追加のコンテンツ916を分析して、この中で要求された何れかのコンテンツがストレージ222へ既にキャッシュされているかどうかを、判定することができる。例えば、実施形態では、コンテンツ取得モジュール904は、ストレージ222にキャッシュされたコンテンツへコンテンツ識別子をマップする、キャッシュされたコンテンツのマップまたは他のデータ構造へ、アクセスすることができる。コンテンツ取得モジュール904が、望まれるコンテンツがストレージ222へ既にキャッシュされていると判定した場合、コンテンツ取得モジュール904は、ストレージ222のキャッシュされたコンテンツ(例えば、キャッシュ・コンテンツ224として)へアクセスすることができ、キャッシュされたコンテンツをキャッシュ・コンテンツ918としてコンテンツ・プロバイダー・モジュール908へ提供することができる。
[0087] 第2の識別された望まれるコンテンツおよび予測された追加のコンテンツ916において示される望まれるコンテンツが、まだストレージ222へキャッシュされていないと判定した場合、上述のように、コンテンツ取得モジュール904は、その望まれるコンテンツを元サーバーへ要求することができる。更に、第2の識別された望まれるコンテンツおよび予測された追加のコンテンツ916は、オプションとして、後に要求されると予測された更なる追加のコンテンツを示すことができる。そのような場合、上述のように、コンテンツ取得モジュール904は、示された更なる追加のコンテンツを元サーバーへ要求することができ、後のリクエストのために、示された更なる追加のコンテンツをストレージ222にキャッシュすることができる。
[0088] コンテンツ取得モジュール904、コンテンツ・リクエスト・パーサー906、およびコンテンツ・プロバイダー・モジュール908は、HTTPメッセージなどを含めての当業者には知られている任意の適切な通信プロトコルおよびフォーマットに従って、リクエストを作成するように及び応答を受け取るように構成できることに、留意されたい。
[0089] 更に、上述のように、キャッシュするためのコンテンツに関するリクエストは、オプションとして、通常のCDNコンテンツ・リクエストと相対して優先度を設定することができる。例えば、図10は、例示の実施形態に従った、リクエスト優先度設定手段1002を含む図9のコンテンツ取得モジュール904のブロック図を示す。リクエスト優先度設定手段1002は、キャッシュするためのコンテンツに関するリクエストの優先度を設定するように構成される。例えば、実施形態では、リクエスト優先度設定手段1002は、図11に示すステップ1102に従って動作することができる。ステップ1102において、元サーバーへの、示された追加のコンテンツに関するリクエストの送信は、そのリクエストで受け取られた可能性インジケーションに基づいて優先度が設定される。例えば、実施形態では、予測された追加のコンテンツ・アイテムのそれぞれに対して、リクエスト優先度設定手段1002は、他のコンテンツと相対しての、予測された追加のコンテンツ・アイテムを要求することの優先度を、クライアント・アプリケーション204から受け取った対応する可能性インジケーションに基づいて、設定することができる。
[0090] 例えば、実施形態では、リクエスト優先度設定手段1002は、予測された追加のコンテンツ(例えば、識別子による)および対応する可能性インジケーションをリストする優先度リストまたは他のデータ構造を、作成して維持することができる。リクエスト優先度設定手段1002は、可能性インジケーションによりリストを順序付けすること、またはリストを構築することができ、それにより、コンテンツ取得モジュール904は、優先度が設定された様式で、可能性インジケーションに従って、予測された追加のコンテンツを要求する。予測された追加のコンテンツおよび可能性インジケーションは、1つのクライアント・アプリケーションに対して、または複数のクライアント・アプリケーションに対して、リストすることができる。従って、このようにして、コンテンツ取得モジュール904は、1つのクライアント・アプリケーションに対して、または複数のクライアント・アプリケーションに対して、元サーバーへのリクエストの優先度を設定することができる。
[0091] 例えば、先に示した例示のHTTPメッセージに関しては、リクエスト優先度設定手段1002は、URL1およびURL2とそれらの対応する可能性インジケーションとを含む予測された追加のコンテンツのリストを、維持する(例えば、必要に応じて格納およびアップデートする)ことができる。URL2は60という値の可能性インジケーションを有するので、URL2は、20という値の可能性インジケーションを有するURL1よりも、優先度が高く設定される。従って、この例では、コンテンツ取得モジュール904は、リクエスト優先度設定手段1002により維持される優先度に従って、元サーバーからURL1のコンテンツを取得する前に、元サーバーからURL2のコンテンツを取得する。
[0092] 更に、実施形態では、コンテンツ取得モジュール904は、コンテンツに関するリクエストの優先度を設定するために、追加および/または代替の情報、例えば、使用可能なストレージ容量、使用可能なネットワーク容量、使用可能な処理(例えば、CPU)能力などを、用いることができる。更に、実施形態では、キャッシング・サーバーは、元サーバーへ、予測された将来のコンテンツを要求するときに、可能性インジケーションを送ることができ、それにより、元サーバーは、他のコンテンツと相対しての、予測されたコンテンツをキャッシング・サーバーへ送信することの優先度を、設定することができる(例えば、予測された将来のコンテンツに関するリクエストの優先度を、直ちに望まれるコンテンツに関するリクエストより下に設定する)。従って、実施形態では、元サーバーは、可能性インジケーション(示すもの)および/または追加/代替の情報に基づいてキャッシング・サーバーへの予測されたコンテンツの送信の優先度を設定する、リクエスト優先度設定手段1002と類似のリクエスト優先度設定手段を、含むことができる。
III. 例示の計算デバイスの実施形態
[0093] クライアント・アプリケーション110a〜110d、クライアント・アプリケーション204、追加のコンテンツ予測手段208、通信インターフェース602、リクエスト・フォーマッター604、追加のコンテンツ優先度設定手段702、コンテンツ取得モジュール904、コンテンツ・リクエスト・パーサー906、コンテンツ・プロバイダー・モジュール908、リクエスト優先度設定手段1002、フローチャート300、フローチャート400、フローチャート500、ステップ802、およびステップ1102は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせでインプリメントすることができる。例えば、クライアント・アプリケーション110a〜110d、クライアント・アプリケーション204、追加のコンテンツ予測手段208、通信インターフェース602、リクエスト・フォーマッター604、追加のコンテンツ優先度設定手段702、コンテンツ取得モジュール904、コンテンツ・リクエスト・パーサー906、コンテンツ・プロバイダー・モジュール908、リクエスト優先度設定手段1002、フローチャート300、フローチャート400、フローチャート500、ステップ802、および/またはステップ1102は、1以上のプロセッサーで実行されるように構成されたコンピューター・プログラム・コード/命令/ロジックとしてインプリメントすることができる。代替的に、クライアント・アプリケーション110a〜110d、クライアント・アプリケーション204、追加のコンテンツ予測手段208、通信インターフェース602、リクエスト・フォーマッター604、追加のコンテンツ優先度設定手段702、コンテンツ取得モジュール904、コンテンツ・リクエスト・パーサー906、コンテンツ・プロバイダー・モジュール908、リクエスト優先度設定手段1002、フローチャート300、フローチャート400、フローチャート500、ステップ802、および/またはステップ1102は、ハードウェア・ロジック/電気回路としてインプリメントすることができる。例えば、実施形態において、クライアント・アプリケーション110a〜110d、クライアント・アプリケーション204、追加のコンテンツ予測手段208、通信インターフェース602、リクエスト・フォーマッター604、追加のコンテンツ優先度設定手段702、コンテンツ取得モジュール904、コンテンツ・リクエスト・パーサー906、コンテンツ・プロバイダー・モジュール908、リクエスト優先度設定手段1002、フローチャート300、フローチャート400、フローチャート500、ステップ802、および/またはステップ1102のうちの1以上のものは、システム・オン・チップ(SoC)で共にインプリメントすることができる。SoCは集積回路チップを含むことができ、集積回路チップは、その機能を実行するために、プロセッサー(例えば、マイクロコントローラー、マイクロプロセッサー、デジタル信号プロセッサー(DSP)など)、メモリ、1以上の通信インターフェース、および/または更なる回路および/または埋め込まれたファームウェアのうちの1以上のものを含む。
[0094] 図12は、本発明の実施形態をインプリメントすることができるコンピューター1200の例示の実装を示す。例えば、元サーバー102、キャッシング・サーバー104aおよび104b、ユーザー・デバイス106a〜106d、キャッシング・サーバー202、ユーザー・デバイス600、およびキャッシング・サーバー902のそれぞれは、コンピューター1200と類似でありコンピューター1200の1以上のフィーチャーおよび/または代替のフィーチャーを含む1以上のコンピューター・システムにおいて、インプリメントすることができる。コンピューター1200は、例えば、従来のパーソナル・コンピューター、モバイル・コンピューター、サーバー、またはワークステーションの形の汎用計算デバイスとすることができ、また、コンピューター1200は、特定用途向け計算デバイスとすることもできる。ここで提供されるコンピューター1200の説明は、例示のために提供されるものであり、限定することを意図していない。本発明の実施形態は、当業者には知られているであろう更なるタイプのコンピューター・システムで実施することもできる。
[0095] 図12に示すように、コンピューター1200は、1以上のプロセッサー1202、システム・メモリ1204、およびシステム・メモリ1204を含む様々なシステム・コンポーネントをプロセッサー1202へ結合するバス1206を含む。バス1206は、任意の幾つかのタイプのバス構造のうちの1以上のものを表し、それは、メモリ・バスまたはメモリ・コントローラー、周辺バス、アクセラレーテッド・グラフィックス・ポート、および任意の様々なバス構造を用いるプロセッサーまたはローカルのバスを含む。システム・メモリ1204は、リード・オンリー・メモリ(ROM)1208およびランダム・アクセス・メモリ(RAM)1210を含む。ベーシック入出力システム(BIOS)1212は、ROM1208に格納される。
[0096] コンピューター1200はまた、ハード・ディスクに対しての読み出しおよび書き込みを行うハード・ディスク・ドライブ1214と、取り外し可能磁気ディスク1218に対しての読み出しおよび書き込みを行う磁気ディスク・ドライブ1216と、CD ROM、DVD ROM、または他の光媒体などのような取り外し可能光ディスク1222に対しての読み出しおよび書き込みを行う光ディスク・ドライブ1220とのうちの1以上のドライブを有する。ハード・ディスク・ドライブ1214、磁気ディスク・ドライブ1216、および光ディスク・ドライブ1220は、それぞれ、ハード・ディスク・ドライブ・インターフェース1224、磁気ディスク・ドライブ・インターフェース1226、および光ドライブ・インターフェース1228により、バス1206に接続される。ドライブと、それらと関連するコンピューター可読媒体とは、コンピューターのためのコンピューター可読命令、データ構造、プログラム・モジュール、および他のデータの不揮発性ストレージを提供する。ハード・ディスク、取り外し可能磁気ディスク、および取り外し可能光ディスクを記載したが、他のタイプのコンピューター可読ストレージ媒体、例えば、フラッシュ・メモリ・カード、デジタル・ビデオ・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)などを、データを格納するために用いることができる。
[0097] 多数のプログラム・モジュールを、ハード・ディスク、磁気ディスク、光ディスク、ROM、またはRAMに格納することができる。それらのプログラムは、オペレーティング・システム1230、1以上のアプリケーション・プログラム1232、他のプログラム・モジュール1234、およびプログラム・データ1236を含む。アプリケーション・プログラム1232またはプログラム・モジュール1234は、例えば、クライアント・アプリケーション110a〜110d、クライアント・アプリケーション204、追加のコンテンツ予測手段208、通信インターフェース602、リクエスト・フォーマッター604、追加のコンテンツ優先度設定手段702、コンテンツ取得モジュール904、コンテンツ・リクエスト・パーサー906、コンテンツ・プロバイダー・モジュール908、リクエスト優先度設定手段1002、フローチャート300、フローチャート400、フローチャート500、ステップ802、および/またはステップ1102(フローチャート300、400、および500の任意のステップを含む)、及び/又はここで説明した更なる実施形態をインプリメントするためのコンピューター・プログラム・ロジック(例えば、コンピューター・プログラム・コード)を、含むことができる。
[0098] ユーザーは、キーボード1238やポインティング・デバイス1240などのような入力デバイスを通じて、コンピューター1200へ、コマンドおよび情報を入力することができる。他の入力デバイス(示さず)としては、マイクロフォン、ジョイスティック、ゲーム・パッド、サテライト・ディッシュ、スキャナーなどが含まれ得る。これらおよび他の入力デバイスは、バス1206と結合されたシリアル・ポート・インターフェース1242を通じてプロセッサー1202と接続されることが多いが、他のインターフェース、例えば、パラレル・ポート、ゲーム・ポート、またはユニバーサル・シリアル・バス(USB)などにより接続されることもできる。
[0099] また、ディスプレイ・デバイス1244は、ビデオ・アダプター1246などのようなインターフェースを介してバス1206へ接続される。コンピューター1200は、モニターに加えて、スピーカーやプリンターなどのような他の周辺出力デバイス(示さず)を含むこともできる。
[0100] コンピューター1200は、アダプターまたはネットワーク・インターフェース1250、モデム1252、またはネットワークを介しての通信を確立するための他の手段を介して、ネットワーク1248(例えば、インターネット)と接続される。内部または外部にあり得るモデム1252は、図12に示すように、シリアル・ポート・インターフェース1242を介してバス1206と接続すること、またはパラレル・インターフェースを含めての別のインターフェース・タイプを用いてバス1206と接続することができる。
[0101] ここで用いられる「コンピューター・プログラム媒体」、「コンピューター可読媒体」、および「コンピューター可読ストレージ媒体」という用語は、ハード・ディスク・ドライブ1214と関連するハード・ディスク、取り外し可能磁気ディスク1218、取り外し可能光ディスク1222などのような媒体、およびフラッシュ・メモリ・カード、デジタル・ビデオ・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)などのような他の媒体を一般的に指すように、用いられる。そのようなコンピューター可読ストレージ媒体は、通信媒体とは区別され重ならない(通信媒体を含まない)。通信媒体は、典型的には、搬送波などのような変調されるデータ信号で、コンピューター可読命令、データ構造、プログラム・モジュール、または他のデータを実現する。「変調されるデータ信号」という用語は、信号内で情報をエンコードするように、その信号の特性のうちの1以上の特性が設定または変更される信号を意味する。限定ではなく例として、通信媒体は、音響、RF、赤外線、および他のワイヤレス媒体などのようなワイヤレス媒体を含む。実施形態はまた、そのような通信媒体にも向けたものである。
[0102] 上述のように、コンピューター・プログラムおよびモジュール(アプリケーション・プログラム1232および他のプログラム1234を含む)は、ハード・ディスク、磁気ディスク、光ディスク、ROM、またはRAMに格納することができる。また、そのようなコンピューター・プログラムは、ネットワーク・インターフェース1250、シリアル・ポート・インターフェース1242、または任意の他のインターフェース・タイプを介して、受け取ることができる。そのようなコンピューター・プログラムは、アプリケーションにより実行またはロードされると、ここで説明した本発明の実施形態のフィーチャーをコンピューター1200がインプリメントすることを可能にする。従って、そのようなコンピューター・プログラムは、コンピューター1200のコントローラーを表す。
[0103] また、本発明は、任意のコンピューター使用可能媒体に格納されるソフトウェアを含むコンピューター・プログラム製品に関する。そのようなソフトウェアは、1以上のデータ処理デバイスで実行されたとき、データ処理デバイス(1以上)に、ここで説明したように動作を行わせる。本発明の実施形態は、現在知られている又は将来の任意のコンピューター使用可能媒体またはコンピューター可読媒体を用いる。コンピューター可読媒体の例は、限定ではないが、RAM、ハード・ドライブ、フロッピー(登録商標)・ディスク、CD ROM、DVD ROM、ジップ・ディスク、テープ、磁気ストレージ・デバイス、光ストレージ・デバイス、MEM、ナノ技術ベースのストレージ・デバイスなどのようなストレージ媒体を含む。
IV. まとめ
[0104] 上記で様々な実施形態について説明したが、それらの実施形態は単なる例として示したものであり、限定ではないことを理解すべきである。添付の特許請求の範囲で定めた本発明の精神および範囲から外れることなく、実施形態内で形態や詳細の様々な変更を行えることが、当業者(1以上)には理解されるであろう。従って、本発明の幅および範囲は、上記の例示の実施形態の何れかにより限定すべきではなく、特許請求の範囲および特許請求の範囲の等価物にのみ従って定めるべきである。

Claims (10)

  1. キャッシング・サーバーにおける方法であって、
    ユーザー・デバイスのクライアント・アプリケーションからの望まれるコンテンツに関するリクエストと、前記望まれるコンテンツに関連しており前記クライアント・アプリケーションにより続いて要求され得る追加のコンテンツを示すものとを、受け取るステップと、
    少なくとも示された前記追加のコンテンツに関するリクエストを元サーバーへ送るステップと、
    前記元サーバーから前記追加のコンテンツを受け取るステップと、
    前記ユーザー・デバイスの前記クライアント・アプリケーションへ、前記望まれるコンテンツを送るステップと、
    前記追加のコンテンツをキャッシュするステップと
    を含む方法。
  2. 請求項1に記載の方法であって、
    前記クライアント・アプリケーションから、前記追加のコンテンツに関するリクエストを含む第2のリクエストを受け取るステップと、
    キャッシュされた前記追加のコンテンツを、前記ユーザー・デバイスの前記クライアント・アプリケーションへ供給するステップと
    を更に含む方法。
  3. 請求項2に記載の方法であって、前記第2のリクエストは、第1の前記追加のコンテンツに関連しており前記クライアント・アプリケーションにより続いて要求され得る第2の追加のコンテンツを示し、
    示された第2の前記追加のコンテンツに関するリクエストを、前記元サーバーへ送るステップと、
    前記元サーバーから、第2の前記追加のコンテンツを受け取るステップと、
    第2の前記追加のコンテンツをキャッシュするステップと
    を更に含む方法。
  4. 請求項1に記載の方法であって、前記の追加のコンテンツを示すものは、前記追加のコンテンツが前記クライアント・アプリケーションにより続いて要求される可能性を示す可能性を示すものを含み、
    少なくとも示された前記追加のコンテンツに関するリクエストを元サーバーへ送る前記ステップは、
    前記の可能性を示すもの、使用可能なストレージ容量、使用可能なネットワーク容量、または使用可能な処理能力のうちの少なくとも1つに基づいて、前記元サーバーへの、示された前記追加のコンテンツに関するリクエストの送信の優先度を設定するステップ
    を含む、方法。
  5. 請求項1に記載の方法であって、前記クライアント・アプリケーションから受け取った望まれるコンテンツに関する前記リクエストは、HTTP(ハイパーテキスト・トランスファー・プロトコル)メッセージであり、前記HTTPメッセージはヘッダーで前記追加のコンテンツを示す、方法。
  6. 請求項1に記載の方法であって、前記望まれるコンテンツは第1のイメージを含み、前記追加のコンテンツは第2のイメージであり、前記第2のイメージは、前記第1のイメージと空間的に隣接するか、前記第1のイメージと時間的に隣接するか、前記第1のイメージの一部であるか、または前記第1のイメージを含む、方法。
  7. 請求項1に記載の方法であって、望まれるコンテンツに関する前記リクエストは、前記の追加のコンテンツを示すものから分離して、前記クライアント・アプリケーションから受け取る、方法。
  8. キャッシング・サーバーであって、
    ユーザー・デバイスのクライアント・アプリケーションからの望まれるコンテンツに関するリクエストと、前記望まれるコンテンツに関連しており前記クライアント・アプリケーションにより続いて要求され得る追加のコンテンツを示すものとを受け取るコンテンツ・リクエスト・パーサーと、
    少なくとも示された前記追加のコンテンツに関するリクエストを元サーバーへ送り、前記元サーバーから前記追加のコンテンツを受け取り、前記追加のコンテンツをストレージにキャッシュするコンテンツ取得モジュールと、
    前記望まれるコンテンツを、前記ユーザー・デバイスの前記クライアント・アプリケーションへ送るコンテンツ・プロバイダー・モジュールと
    を含むキャッシング・サーバー。
  9. 請求項8に記載のキャッシング・サーバーであって、前記コンテンツ・リクエスト・パーサーは、前記クライアント・アプリケーションから、前記追加のコンテンツに関するリクエストを含む第2リクエストを受け取り、前記コンテンツ・プロバイダー・モジュールは、キャッシュされた前記追加のコンテンツを前記クライアント・アプリケーションへ供給する、キャッシング・サーバー。
  10. コンピューター・プログラム・ロジックが記録されたコンピューター可読媒体を含むコンピューター・プログラム製品であって、
    請求項1から7のうちの何れかをプロセッサーに行わせることを可能にするためのコンピューター・プログラム・ロジック手段
    を含むコンピューター・プログラム製品。
JP2014547304A 2011-12-16 2012-12-07 アプリケーション駆動のcdnのプリキャッシング Active JP6073366B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/328,444 US9294582B2 (en) 2011-12-16 2011-12-16 Application-driven CDN pre-caching
US13/328,444 2011-12-16
PCT/US2012/068326 WO2013090126A1 (en) 2011-12-16 2012-12-07 Application-driven cdn pre-caching

Publications (3)

Publication Number Publication Date
JP2015509229A true JP2015509229A (ja) 2015-03-26
JP2015509229A5 JP2015509229A5 (ja) 2016-01-28
JP6073366B2 JP6073366B2 (ja) 2017-02-01

Family

ID=47972169

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014547304A Active JP6073366B2 (ja) 2011-12-16 2012-12-07 アプリケーション駆動のcdnのプリキャッシング

Country Status (13)

Country Link
US (2) US9294582B2 (ja)
EP (1) EP2791815B1 (ja)
JP (1) JP6073366B2 (ja)
KR (1) KR101997305B1 (ja)
CN (1) CN103024045B (ja)
AU (1) AU2012352651B2 (ja)
BR (1) BR112014014404A2 (ja)
CA (1) CA2857330A1 (ja)
ES (1) ES2687767T3 (ja)
HK (1) HK1181930A1 (ja)
MX (1) MX346689B (ja)
RU (1) RU2632410C2 (ja)
WO (1) WO2013090126A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018531454A (ja) * 2015-10-07 2018-10-25 グーグル エルエルシー 非ブラウザアプリケーションにおけるコンテンツの統合

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102222086B (zh) * 2011-05-18 2014-11-26 广州市动景计算机科技有限公司 基于移动终端的网页阅读方法、网页阅读装置及移动终端
US9294582B2 (en) 2011-12-16 2016-03-22 Microsoft Technology Licensing, Llc Application-driven CDN pre-caching
US9582603B1 (en) 2012-02-27 2017-02-28 Amazon Technologies, Inc. Managing preloading of data on client systems
US9747386B1 (en) * 2012-08-10 2017-08-29 Amazon Technologies, Inc. User-perceived performance through browser hints
US10264090B2 (en) * 2013-02-27 2019-04-16 Pavlov Media, Inc. Geographical data storage assignment based on ontological relevancy
US10120350B2 (en) * 2013-03-11 2018-11-06 Fisher-Rosemount Systems, Inc. Background collection of diagnostic data from field instrumentation devices
EP2963880B1 (en) * 2013-04-10 2019-01-09 Huawei Technologies Co., Ltd. Data sending and processing method and router
GB2516115A (en) * 2013-07-12 2015-01-14 Canon Kk Methods and devices for exchanging data
KR102077495B1 (ko) * 2013-07-17 2020-02-14 한국전자통신연구원 웹 서버 및 웹 요구사항 예측을 이용한 웹 서버의 성능 향상 방법
US10042768B1 (en) 2013-09-21 2018-08-07 Avago Technologies General Ip (Singapore) Pte. Ltd. Virtual machine migration
US9983801B1 (en) * 2013-09-21 2018-05-29 Avago Technologies General Ip (Singapore) Pte. Ltd. Priority queueing for low latency storage networks
US9547598B1 (en) * 2013-09-21 2017-01-17 Avego Technologies General Ip (Singapore) Pte. Ltd. Cache prefill of cache memory for rapid start up of computer servers in computer networks
US9262541B2 (en) * 2013-10-18 2016-02-16 Google Inc. Distance based search ranking demotion
EP2876863B1 (en) * 2013-11-22 2016-08-10 Alcatel Lucent Delivery and storage of content within a network
CN104954396B (zh) * 2014-03-25 2018-09-07 华为技术有限公司 资源下载的方法与资源下载的装置
CN104052808A (zh) * 2014-06-13 2014-09-17 乐视网信息技术(北京)股份有限公司 基于cdn的数字内容获取方法及系统
CN104022923A (zh) * 2014-06-27 2014-09-03 北京奇艺世纪科技有限公司 一种网络接口装置、系统及网络数据访问方法
US20160035007A1 (en) * 2014-07-30 2016-02-04 Kobo Inc. Using a user wishlist to automate the acquisition and rendering of a content item
US10506027B2 (en) * 2014-08-27 2019-12-10 Tensera Networks Ltd. Selecting a content delivery network
US10154072B2 (en) * 2014-09-17 2018-12-11 Microsoft Technology Licensing, Llc Intelligent streaming of media content
US9983959B2 (en) 2015-06-29 2018-05-29 Microsoft Technology Licensing, Llc Erasure coding of data within a group of storage units based on connection characteristics
KR102367792B1 (ko) * 2015-09-11 2022-02-28 아마존 테크놀로지스, 인크. 에지 위치들에서 맞춤형 이벤트-트리거된 컴퓨터의 조작을 위한 시스템, 방법 및 컴퓨터-판독가능한 스토리지 매체
US11895212B2 (en) 2015-09-11 2024-02-06 Amazon Technologies, Inc. Read-only data store replication to edge locations
JP2017058787A (ja) * 2015-09-14 2017-03-23 株式会社東芝 無線通信装置、通信装置、無線通信システム
US10116713B2 (en) 2016-03-31 2018-10-30 Jamdeo Canada, Ltd. System and methods for content streaming with a content buffer
US20170331914A1 (en) * 2016-05-16 2017-11-16 Aterlo Networks Inc. System and method for optimizing online video streaming to a user
CN106027642A (zh) * 2016-05-19 2016-10-12 乐视控股(北京)有限公司 用于确定cdn节点磁盘数量的方法及系统
FR3053199A1 (fr) * 2016-06-27 2017-12-29 Orange Serveur de statistiques pour optimisation de requetes client-serveur
US20180081893A1 (en) * 2016-09-19 2018-03-22 Ebay Inc. Prediction-based instant search
CN106506857A (zh) * 2016-11-30 2017-03-15 努比亚技术有限公司 一种业务定制方法、终端及服务器
WO2018111246A1 (en) * 2016-12-13 2018-06-21 Google Llc Systems and methods for prefetching content items
US10594771B2 (en) * 2017-02-09 2020-03-17 International Business Machines Corporation Distributed file transfer with high performance
EP3598697B1 (en) * 2017-04-14 2022-01-19 Huawei Technologies Co., Ltd. Content deployment method and distribution controller
US10645133B2 (en) 2017-07-12 2020-05-05 Loon Llc Method and system for delivering content over transient access networks
FR3075541A1 (fr) * 2017-12-20 2019-06-21 Orange Procede de distribution d'un contenu dans un reseau de distribution de contenus, entite d'origine et entites de distribution correspondantes
US10771590B2 (en) * 2018-03-07 2020-09-08 Ciena Corporation Systems and methods for intelligent routing and content placement in information centric networks
CN109359095B (zh) * 2018-09-11 2021-07-16 东华大学 一种大数据快速读取的dlk方法
US20200097412A1 (en) * 2018-09-26 2020-03-26 International Business Machines Corporation Predictive dynamic contextual cache loading
US11579763B2 (en) * 2019-01-15 2023-02-14 Fujifilm Medical Systems U.S.A., Inc. Smooth image scrolling with disk I/O activity optimization and enhancement to memory consumption
US11341097B2 (en) * 2019-10-16 2022-05-24 Microsoft Technology Licensing, Llc Prefetching based on historical use and real-time signals
US20210173888A1 (en) * 2019-12-08 2021-06-10 Akamai Technologies Inc. Proxy server caching of database content
US11451603B2 (en) * 2020-02-25 2022-09-20 Disney Enterprises, Inc. Selective pre-caching of media streams
US11544560B2 (en) 2020-04-10 2023-01-03 Microsoft Technology Licensing, Llc Prefetching and/or computing resource allocation based on predicting classification labels with temporal data
CN112182070B (zh) * 2020-10-13 2022-06-14 安徽极玩云科技有限公司 基于云计算的Elasticsearch查询管理系统
CN115297095B (zh) * 2022-08-08 2024-03-08 上海哔哩哔哩科技有限公司 回源处理方法、装置、计算设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003114824A (ja) * 2001-10-04 2003-04-18 Canon I-Tech Inc 分散処理システム
US7975025B1 (en) * 2008-07-08 2011-07-05 F5 Networks, Inc. Smart prefetching of data over a network

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5991306A (en) 1996-08-26 1999-11-23 Microsoft Corporation Pull based, intelligent caching system and method for delivering data over a network
US6584498B2 (en) * 1996-09-13 2003-06-24 Planet Web, Inc. Dynamic preloading of web pages
US6038601A (en) * 1997-07-21 2000-03-14 Tibco, Inc. Method and apparatus for storing and delivering documents on the internet
CN1108685C (zh) * 1997-08-06 2003-05-14 塔奇勇公司 预取对象的分布系统和方法
US6199154B1 (en) 1997-11-17 2001-03-06 Advanced Micro Devices, Inc. Selecting cache to fetch in multi-level cache system based on fetch address source and pre-fetching additional data to the cache for future access
US6173318B1 (en) * 1997-12-16 2001-01-09 Intel Corporation Method and apparatus for pre-fetching data for an application using a winsock client layered service provider and a transparent proxy
US6085226A (en) * 1998-01-15 2000-07-04 Microsoft Corporation Method and apparatus for utility-directed prefetching of web pages into local cache using continual computation and user models
US6959318B1 (en) * 1998-03-06 2005-10-25 Intel Corporation Method of proxy-assisted predictive pre-fetching with transcoding
SE514376C2 (sv) * 1998-09-24 2001-02-19 Mirror Image Internet Inc Ett internet-cachningssystem samt ett förfarande och anordning i ett sådant system
US6542964B1 (en) 1999-06-02 2003-04-01 Blue Coat Systems Cost-based optimization for content distribution using dynamic protocol selection and query resolution for cache server
US20020152305A1 (en) * 2000-03-03 2002-10-17 Jackson Gregory J. Systems and methods for resource utilization analysis in information management environments
US6854018B1 (en) * 2000-03-20 2005-02-08 Nec Corporation System and method for intelligent web content fetch and delivery of any whole and partial undelivered objects in ascending order of object size
US6701316B1 (en) 2000-04-07 2004-03-02 Nec Corporation Method and apparatus for intelligent network bandwidth and system resource utilization for web content fetch and refresh
US7113935B2 (en) * 2000-12-06 2006-09-26 Epicrealm Operating Inc. Method and system for adaptive prefetching
US7877463B2 (en) * 2001-04-10 2011-01-25 Citrix Systems, Inc. Method and systems for providing access to dynamic content via static pages
JP2002373109A (ja) * 2001-06-13 2002-12-26 Nec Corp データ先読みシステムおよび先読み方法
US7437438B2 (en) * 2001-12-27 2008-10-14 Hewlett-Packard Development Company, L.P. System and method for energy efficient data prefetching
US7343396B2 (en) * 2002-06-20 2008-03-11 Fineground Networks Precomputation of web documents
US7953820B2 (en) * 2002-09-11 2011-05-31 Hughes Network Systems, Llc Method and system for providing enhanced performance of web browsing
US20040088375A1 (en) * 2002-11-01 2004-05-06 Sethi Bhupinder S. Method for prefetching Web pages to improve response time networking
US7359395B2 (en) * 2003-06-16 2008-04-15 Packeteer, Inc. Pre-fetch communication systems and methods
US20050138143A1 (en) * 2003-12-23 2005-06-23 Thompson Blake A. Pre-fetching linked content
CN100553209C (zh) 2004-08-19 2009-10-21 诺基亚公司 为控制网络上多媒体数据的部署而对目录服务器数据进行高速缓存
US20060294223A1 (en) * 2005-06-24 2006-12-28 Microsoft Corporation Pre-fetching and DNS resolution of hyperlinked content
US8019811B1 (en) 2006-04-06 2011-09-13 Versata Development Group, Inc. Application state server-side cache for a state-based client-server application
US7685255B2 (en) * 2006-04-24 2010-03-23 Blue Coat Systems, Inc. System and method for prefetching uncacheable embedded objects
US20080201332A1 (en) * 2007-02-20 2008-08-21 Souders Steven K System and method for preloading content on the basis of user context
US7941609B2 (en) * 2007-02-23 2011-05-10 Microsoft Corporation HTTP acceleration by prediction and pre-fetching
US8504775B2 (en) * 2007-03-12 2013-08-06 Citrix Systems, Inc Systems and methods of prefreshening cached objects based on user's current web page
US7757002B2 (en) * 2007-03-23 2010-07-13 Sophos Plc Method and systems for analyzing network content in a pre-fetching web proxy
US20080301300A1 (en) * 2007-06-01 2008-12-04 Microsoft Corporation Predictive asynchronous web pre-fetch
US20090089401A1 (en) 2007-10-01 2009-04-02 Microsoft Corporation Server-controlled distribution of media content
WO2009126839A2 (en) 2008-04-09 2009-10-15 Level 3 Communications, Llc Content delivery in a network
EP2439493A1 (en) 2008-05-09 2012-04-11 Research in Motion Limited Predictive downloading of map data
US9390167B2 (en) * 2010-07-29 2016-07-12 Soundhound, Inc. System and methods for continuous audio matching
US8103768B2 (en) 2009-04-14 2012-01-24 At&T Intellectual Property I, Lp Network aware forward caching
US20100281224A1 (en) * 2009-05-01 2010-11-04 International Buisness Machines Corporation Prefetching content from incoming messages
US8140646B2 (en) * 2009-06-04 2012-03-20 Microsoft Corporation Network application performance enhancement using speculative execution
US8886760B2 (en) * 2009-06-30 2014-11-11 Sandisk Technologies Inc. System and method of predictive data acquisition
US20110131341A1 (en) 2009-11-30 2011-06-02 Microsoft Corporation Selective content pre-caching
US8577961B2 (en) * 2010-01-28 2013-11-05 Qualcomm Innovation Center, Inc. Methods and apparatus for obtaining content with reduced access times
WO2011139305A1 (en) * 2010-05-04 2011-11-10 Azuki Systems, Inc. Method and apparatus for carrier controlled dynamic rate adaptation and client playout rate reduction
US8788762B2 (en) * 2010-09-30 2014-07-22 Nokia Corporation Methods and apparatuses for data resource provision
US20120233199A1 (en) * 2011-03-10 2012-09-13 Jenkins Jeffrey R Intelligent Web Caching
US8341245B1 (en) * 2011-09-26 2012-12-25 Google Inc. Content-facilitated speculative preparation and rendering
US9294582B2 (en) 2011-12-16 2016-03-22 Microsoft Technology Licensing, Llc Application-driven CDN pre-caching

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003114824A (ja) * 2001-10-04 2003-04-18 Canon I-Tech Inc 分散処理システム
US7975025B1 (en) * 2008-07-08 2011-07-05 F5 Networks, Inc. Smart prefetching of data over a network

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6016045907; 新熊 亮一 Ryoichi SHINKUMA: 'ワイヤレスWWWアクセスにおける階層化先読み伝送方式 Hierarchical Prefetching for Wireless WWW Acce' 電子情報通信学会技術研究報告 Vol.100 No.193 IEICE Technical Report 第100巻, 20000712, p.127-132, 社団法人電子情報通信学会 The Institute of Electro *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018531454A (ja) * 2015-10-07 2018-10-25 グーグル エルエルシー 非ブラウザアプリケーションにおけるコンテンツの統合

Also Published As

Publication number Publication date
RU2014124150A (ru) 2015-12-20
JP6073366B2 (ja) 2017-02-01
AU2012352651B2 (en) 2017-09-28
US10182127B2 (en) 2019-01-15
AU2012352651A1 (en) 2014-07-03
EP2791815A4 (en) 2015-08-12
CA2857330A1 (en) 2013-06-20
CN103024045A (zh) 2013-04-03
RU2632410C2 (ru) 2017-10-04
MX2014007165A (es) 2014-08-29
WO2013090126A1 (en) 2013-06-20
ES2687767T3 (es) 2018-10-29
US20130159383A1 (en) 2013-06-20
KR20140102220A (ko) 2014-08-21
US9294582B2 (en) 2016-03-22
MX346689B (es) 2017-03-29
HK1181930A1 (zh) 2013-11-15
BR112014014404A2 (pt) 2017-06-13
EP2791815A1 (en) 2014-10-22
US20160173639A1 (en) 2016-06-16
KR101997305B1 (ko) 2019-07-05
EP2791815B1 (en) 2018-06-27
CN103024045B (zh) 2015-12-02

Similar Documents

Publication Publication Date Title
JP6073366B2 (ja) アプリケーション駆動のcdnのプリキャッシング
JP2015509229A5 (ja)
US11194882B1 (en) Behavior based optimization for content presentation
US11025747B1 (en) Content request pattern-based routing system
CN107251525B (zh) 用于支持移动设备用户的预测内容预取服务的分布式服务器架构
KR102294326B1 (ko) 연결 해제의 기간을 위한 애플리케이션 데이터의 프리페치
WO2020199751A1 (zh) 用于加载页面图片的方法、装置和电子设备
US9785608B2 (en) Predictive, multi-layer caching architectures
US20120303818A1 (en) Edge-based resource spin-up for cloud computing
US20160072911A1 (en) Physical location influenced caching
CN107197359B (zh) 视频文件缓存方法及装置
US9594846B2 (en) Client side caching
US10341454B2 (en) Video and media content delivery network storage in elastic clouds
US20140337708A1 (en) Method and apparatus for providing web browsing service
KR20150011087A (ko) 컨텐츠 전송 서비스를 위한 분산 캐싱 관리 방법 및 이를 위한 중앙 관리 장치
JP7477251B2 (ja) シングル・ページ・アプリケーションのキャッシャビリティの改善方法、システム、プログラム
KR20120016335A (ko) 오프라인 실행을 위한 웹 페이지 사전 캐싱 시스템 및 방법
KR20120016334A (ko) 오프라인 실행을 위한 웹 페이지 사전 캐싱 시스템 및 방법
JP2008293281A (ja) キャッシュ装置、サーバ、キャッシュシステム、キャッシュ方法、及びプログラム
KR20150010415A (ko) 분산 캐싱을 위한 컨텐츠 전송 서비스 방법 및 중계 장치

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150528

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151204

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151204

TRDD Decision of grant or rejection written
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161130

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161202

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170104

R150 Certificate of patent or registration of utility model

Ref document number: 6073366

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250