以下は、コンピューティングデバイス上で実行されるアプリケーションによって表示するためにコンテンツアイテムをプリフェッチするための方法、装置、およびシステムに関連する様々な概念およびそれらの実施形態のより詳細な説明である。上で導入され、下でより詳細に検討される様々な概念は、説明される概念が実装のいかなる特定の方法にも限定されないので、多数の方法のいずれかで実装されるてよい。
本開示は、コンピューティングデバイス上で実行されるアプリケーションの表示ページ内の動的にロードされるコンテンツアイテムの低レイテンシーの表示のための技術に関する。特に、本開示は、アプリケーションに前のコンテンツスロットの要求パラメータを使用してコンテンツスロットのためのコンテンツをプリフェッチさせ、プリフェッチされたコンテンツをアプリケーションのローカルキャッシュに記憶し、コンテンツスロットにコンテンツを挿入する指示に応答してローカルキャッシュからプリフェッチされたコンテンツを取り出すことによって、コンピューティングデバイス上で実行されるアプリケーションのコンテンツスロット内に表示するためのコンテンツアイテムをプリフェッチするための技術に関する。一部の実装において、コンテンツスロットは、コンピュータが実行可能なコードを含む。
ポータブルコンピューティングデバイス上で実行されるモバイルアプリケーション内では、画像、ビデオ、またはその他の表示可能なコンテンツなどの動的にロードされるコンテンツアイテムが、アプリケーションの表示ページ上のその他のコンテンツアイテム(たとえば、アプリケーションのインタラクティブなユーザインターフェースの部分と並んでニュースフィード内に示されるネイティブのコンテンツアイテムなど)と一貫性がある特定のルックアンドフィールを実現するために、概して表示ページの中に埋め込まれる。その他の例において、動的にロードされるコンテンツアイテムは、ユーザがアプリケーションを使用している間の論理的休止(logical break)中に挿入されてよく、画面全体を占めるか、アプリケーションの通常のユーザインターフェースをオーバレイしてよい。これらの場合のいずれにおいても、コンテンツアイテムができる限り少ない遅延でレンダリングされることが重要である。たとえば、コンテンツアイテムがまだロードされていないフィードの異なる部分にユーザがナビゲートするとき、コンテンツアイテムは、ユーザエクスペリエンスにいかなる悪影響も与えないために可能な限り早くレンダリングされるべきである。同じことが、オーバレイされたコンテンツアイテムまたはインタースティシャルコンテンツアイテムに当てはまり、ブランク画面部分がしばらく表示されるとユーザエクスペリエンスが損なわれる。(たとえば、モバイル低電力デバイスのための)低速で高レイテンシーのデータ接続が原因で、モバイル通信デバイス上での動的にロードされるデータアイテムの高速なレンダリングを難しくする技術的制約が存在する。
したがって、本開示の技術的な問題は、モバイルコンピューティングデバイス上で実行されるアプリケーション内の動的にロードされるコンテンツアイテムの表示の遅延またはレイテンシーを減らすための技術を提供することである。
本開示は、必要とされるときに迅速に取り出し、レンダリングするために第2のコンテンツアイテムがモバイルデバイスのローカルにキャッシュされ得るように、第1のコンテンツアイテムが再生を終了した後または第1のコンテンツアイテムがレンダリングされた後に第2のコンテンツアイテムを要求することによってこれらの課題に対処する。第2のコンテンツアイテムを要求する際、第1のコンテンツアイテムの要求に関連するパラメータ(たとえば、位置、時刻、デバイスがセルラーネットワークまたはWiFiによって接続されているかどうか、前のコンテンツスロットに関連するパラメータなど)が、第2のコンテンツアイテムの要求において繰り返される。アプリケーションは、後で(たとえば、アプリケーション内でコンテンツスロットを検出することに応じて)コンテンツアイテムが必要だと決定するとき、コンテンツサーバからの第2のコンテンツアイテムを要求する比較的長いプロセスを経る代わりに、ローカルにキャッシュされた第2のコンテンツアイテムを取り出してよい。
図1は、コンピューティングデバイス上で実行されるアプリケーションによって表示するためにコンテンツアイテムをプリフェッチするための環境の1つの実装を示すブロック図である。環境100は、少なくとも1つのデータ処理システム110を含む。データ処理システム110は、少なくとも1つのプロセッサ(または処理回路)およびメモリを含み得る。メモリは、プロセッサ上で実行されるときにプロセッサに本明細書において説明される動作のうちの1つまたは複数を実行させるプロセッサが実行可能な命令を記憶する。プロセッサは、マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)など、またはこれらの組合せを含み得る。メモリは、プロセッサにプログラム命令を与えることができる電子、光、磁気、または任意のその他のストレージまたは送信デバイスを含むことができるがこれに限定されない。メモリは、フロッピーディスク、CD-ROM、DVD、磁気ディスク、メモリチップ、ASIC、FPGA、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、電気的消去可能ROM (EEPROM)、消去可能プログラマブルROM (EPROM)、フラッシュメモリ、光学式媒体、またはプロセッサが命令を読むことができる任意のその他の好適なメモリをさらに含み得る。命令は、任意の好適なコンピュータプログラミング言語からのコードを含み得る。データ処理システム110は、様々な機能を実行することができる1つまたは複数のコンピューティングデバイスまたはサーバを含み得る。一部の実装において、データ処理システム110は、コンテンツの選択をホストするように構成されたコンテンツ選択システムを含み得る。一部の実装において、データ処理システム110は、コンテンツ選択システムを含まず、ネットワーク105を介してコンテンツ選択システムと通信するように構成される。
ネットワーク105は、インターネット、ローカルエリアネットワーク、ワイドネットワーク、メトロエリアネットワーク、またはその他のエリアネットワークなどのコンピュータネットワーク、イントラネット、衛星ネットワーク、音声またはデータモバイル電話通信ネットワークなどのその他のコンピュータネットワーク、およびこれらの組合せを含み得る。環境100のデータ処理システム110は、ネットワーク105を介して、たとえば、少なくとも1つのコンテンツプロバイダコンピューティングデバイス115、少なくとも1つのコンテンツ発行元コンピューティングデバイス120、または少なくとも1つのクライアントデバイス125と通信することができる。ネットワーク105は、クライアントデバイス125と、データ処理システム110と、1つまたは複数のコンテンツソース、たとえば、とりわけウェブサーバ、広告サーバとの間で情報を中継する任意の形態のコンピュータネットワークであってよい。たとえば、ネットワーク105は、インターネット、および/またはローカルエリアネットワーク(LAN)、ワイドネットワーク(WAN)、セルラーネットワーク、衛星ネットワーク、もしくはその他の種類のデータネットワークなどのその他の種類のデータネットワークを含んでよい。ネットワーク105は、ネットワーク105内でデータを受信および/または送信するように構成される任意の数のコンピューティングデバイス(たとえば、コンピュータ、サーバ、ルータ、ネットワークスイッチなど)も含み得る。ネットワーク105は、任意の数の有線および/またはワイヤレス接続をさらに含み得る。たとえば、クライアントデバイス125は、ネットワーク105内のその他のコンピューティングデバイスに(たとえば、光ファイバケーブル、CAT5ケーブルなどによって)結線されるトランシーバと(たとえば、WiFi、セルラー、無線などによって)ワイヤレスで通信し得る。
コンテンツプロバイダコンピューティングデバイス115は、クライアントデバイス125において情報リソース上に表示するためのコンテンツなどのコンテンツアイテムを提供するためにコンテンツプロバイダエンティティによって運用されるサーバまたはその他のコンピューティングデバイスを含み得る。コンテンツプロバイダコンピューティングデバイス115によって提供されるコンテンツは、主コンテンツ、たとえば、コンテンツ発行元コンピューティングデバイス120によって提供されるコンテンツを含むウェブサイトまたはウェブページなどの情報リソース上に表示するための第三者のコンテンツアイテムまたはクリエイティブを含み得る。コンテンツアイテムは、検索結果ウェブページ上にも表示され得る。たとえば、コンテンツプロバイダコンピューティングデバイス115は、ウェブページの主コンテンツが会社により提供されている会社のウェブページなどのコンテンツウェブページのコンテンツスロット内に表示するため、または検索エンジンによって提供される検索結果のランディングページ上にもしくは情報フィード内に表示するためのその他のコンテンツアイテムを提供するかまたはその他のコンテンツアイテムのソースであり得る。コンテンツプロバイダコンピューティングデバイス115に関連するコンテンツアイテムは、スマートフォンまたはその他のクライアントデバイス125上の(ゲームアプリケーション、全地球測位システム(GPS)もしくは地図アプリケーション、またはその他の種類のアプリケーションなどの)アプリケーションの実行の一部として表示されるコンテンツなどの、ウェブページ以外の情報リソース上に表示され得る。
コンテンツ発行元コンピューティングデバイス120は、ネットワーク105を介して表示するための主コンテンツを提供するためにコンテンツ発行エンティティによって運用されるサーバまたはその他のコンピューティングデバイスを含み得る。たとえば、コンテンツ発行元コンピューティングデバイス120は、ウェブページ上に表示するための主コンテンツを提供するウェブページオペレータを含み得る。主コンテンツは、コンテンツ発行元コンピューティングデバイス120によって提供されるコンテンツ以外のコンテンツを含むことができ、ウェブページは、コンテンツプロバイダコンピューティングデバイス115からの第三者のコンテンツアイテムの表示のために構成されたコンテンツスロットを含み得る。たとえば、コンテンツ発行元コンピューティングデバイス120は、会社のウェブサイトを運用することができ、ウェブサイトのウェブページ上に表示するためのその会社についてのコンテンツを提供することができる。ウェブページは、コンテンツプロバイダコンピューティングデバイス115の広告などの第三者のコンテンツアイテムの表示のために構成されたコンテンツスロットを含み得る。一部の実装において、コンテンツ発行元コンピューティングデバイス120は、検索エンジンウェブサイトを運用する検索エンジンの運用者の検索エンジンコンピューティングデバイス(たとえば、サーバ)を含む。検索エンジンウェブページの主コンテンツ(たとえば、結果またはランディングウェブページ)は、検索の結果と、コンテンツプロバイダコンピューティングデバイス115からのコンテンツアイテムなどの、コンテンツスロット内に表示される第三者のコンテンツアイテムとを含み得る。一部の実装において、コンテンツ発行元コンピューティングデバイス120は、ビデオコンテンツを提供するためのサーバを含み得る。
クライアントデバイス125は、コンテンツ発行元コンピューティングデバイス120によって提供されるコンテンツ(たとえば、主ウェブページコンテンツまたはその他の情報リソース)およびコンテンツプロバイダコンピューティングデバイス115によって提供されるコンテンツ(たとえば、ウェブページのコンテンツスロット内に表示するために構成された第三者のコンテンツアイテム)などのデータを表示するためにネットワーク105を介して通信するように構成されたコンピューティングデバイスを含み得る。クライアントデバイス125、コンテンツプロバイダコンピューティングデバイス115、およびコンテンツ発行元コンピューティングデバイス120は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、携帯情報端末、モバイルデバイス、コンシューマコンピューティングデバイス、サーバ、クライアント、デジタルビデオレコーダ、テレビ用セットトップボックス、ビデオゲームコンソール、またはネットワーク105を介して通信するように構成された任意のその他のコンピューティングデバイスを含み得る。クライアントデバイス125は、エンドユーザがコンテンツを受け取る要求を送ることができる通信デバイスであり得る。要求は、検索エンジンへの要求であってよく、要求は、検索クエリを含み得る。一部の実装において、要求は、ウェブページにアクセスする要求を含み得る。
コンテンツプロバイダコンピューティングデバイス115、コンテンツ発行元コンピューティングデバイス120、およびクライアントデバイス125は、プロセッサおよびメモリ、すなわち、処理回路を含み得る。メモリは、プロセッサ上で実行されるときにプロセッサに本明細書において説明される動作のうちの1つまたは複数を実行させる機械命令を記憶する。プロセッサは、マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)など、またはこれらの組合せを含み得る。メモリは、プロセッサにプログラム命令を与えることができる電子、光、磁気、または任意のその他のストレージまたは送信デバイスを含ことができるがこれに限定されない。メモリは、フロッピーディスク、CD-ROM、DVD、磁気ディスク、メモリチップ、ASIC、FPGA、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、電気的消去可能ROM (EEPROM)、消去可能プログラマブルROM (EPROM)、フラッシュメモリ、光学式媒体、またはプロセッサが命令を読むことができる任意のその他の好適なメモリをさらに含み得る。命令は、任意の好適なコンピュータプログラミング言語からのコードを含み得る。
コンテンツプロバイダコンピューティングデバイス115、コンテンツ発行元コンピューティングデバイス120、およびクライアントデバイス125は、1つまたは複数のユーザインターフェースデバイスを含み得る。概して、ユーザインターフェースデバイスは、感覚情報(たとえば、ディスプレイ上の視覚化、1つもしくは複数の音など)を生成することによってユーザにデータを運び、および/またはユーザから受け取られた感覚情報を電子信号に変換する任意の電子デバイス(たとえば、キーボード、マウス、ポインティングデバイス、タッチスクリーンディスプレイ、マイクロフォンなど)を指す。1つまたは複数のユーザインターフェースデバイスは、様々な実装によれば、コンテンツプロバイダコンピューティングデバイス115、コンテンツ発行元コンピューティングデバイス120、およびクライアントデバイス125のハウジングの内部にある(たとえば、組み込み型ディスプレイ、マイクロフォンなど)か、またはコンテンツプロバイダコンピューティングデバイス115、コンテンツ発行元コンピューティングデバイス120、およびクライアントデバイス125のハウジングの外にあってよい(たとえば、ユーザコンピューティングデバイス115に接続されたモニタ、ユーザコンピューティングデバイス115に接続されたスピーカなど)。たとえば、コンテンツプロバイダコンピューティングデバイス115、コンテンツ発行元コンピューティングデバイス120、およびクライアントデバイス125は、ネットワーク105を介して1つもしくは複数のコンテンツソースからおよび/またはデータ処理システム110から受信されたウェブページデータを使用してウェブページを視覚的に表示する電子ディスプレイを含み得る。一部の実装においては、コンテンツ掲載キャンペーンマネージャまたは第三者のコンテンツプロバイダが、コンテンツプロバイダコンピューティングデバイス115を介してデータ処理システム110と通信することができる。一部の実装において、第三者のコンテンツプロバイダは、コンテンツプロバイダコンピューティングデバイス115のユーザインターフェースデバイス上に表示されたユーザインターフェースを介してデータ処理システム110と通信することができる。
データ処理システム110は、少なくとも1つのサーバを含み得る。たとえば、データ処理システム110は、少なくとも1つのデータセンターまたはサーバファーム内に置かれた複数のサーバを含み得る。一部の実装において、データ処理システム110は、第三者のコンテンツ掲載システム、たとえば、広告サーバまたは広告掲載システムを含み得る。データ処理システム110は、少なくとも1つのコンテンツ要求モジュール130、少なくとも1つのコンテンツ選択モジュール135、少なくとも1つのスクリプトプロバイダモジュール140、および少なくとも1つのデータベース145を含み得る。コンテンツ要求モジュール130、コンテンツ選択モジュール135、およびスクリプトプロバイダモジュール140は、それぞれ、ネットワーク105を介してデータベース145およびその他のコンピューティングデバイス(たとえば、コンテンツプロバイダコンピューティングデバイス115、コンテンツ発行元コンピューティングデバイス120、またはクライアントデバイス125)と通信するように構成された少なくとも1つの処理ユニット、サーバ、仮想サーバ、回路、エンジン、エージェント、アプライアンス、またはプログラマブル論理アレーなどのその他の論理デバイスを含み得る。
コンテンツ要求モジュール130、コンテンツ選択モジュール135、およびスクリプトプロバイダモジュール140は、少なくとも1つのコンピュータプログラムまたは少なくとも1つのスクリプトを含むかまたは実行することができる。コンテンツ要求モジュール130、コンテンツ選択モジュール135、およびスクリプトプロバイダモジュール140は、別々の構成要素、単一の構成要素、またはデータ処理システム110の一部であり得る。コンテンツ要求モジュール130、コンテンツ選択モジュール135、およびスクリプトプロバイダモジュール140は、1つまたは複数のスクリプトを実行するように構成された1つまたは複数のプロセッサなどのソフトウェアとハードウェアとの組合せを含み得る。
また、データ処理システム110は、1つまたは複数のコンテンツリポジトリまたはデータベース145を含み得る。データベース145は、データ処理システム110のローカルにあってよい。一部の実装において、データベース145は、データ処理システム110の遠隔にあることができるが、ネットワーク105を介してデータ処理システム110と通信することができる。データベース145は、とりわけ、クライアントデバイス125にサービスを提供するためのウェブページ、ウェブページの一部、第三者のコンテンツアイテム、およびプリフェッチスクリプトを含み得る。
プリフェッチスクリプトは、コンピュータが実行可能な命令を含み得る。コンピュータが実行可能な命令は、とりわけ、ハイパーテキストマークアップ言語(HTML)、拡張可能ハイパーテキストマークアップ言語(XHTML)、拡張可能マークアップ言語(XML)、カスケーディングスタイルシート(CSS)、およびJavaScript(登録商標)などのスクリプトを含み得る。コンピュータが実行可能な命令は、コンテンツ要求モジュール130によって受信されるコンテンツの要求をクライアントデバイス125に送信させたアプリケーションなどのクライアントデバイス125のアプリケーション内で実行され得る。アプリケーションは、たとえば、インターネットブラウザ、モバイルアプリケーション、ゲームアプリケーション、GPSアプリケーション、またはコンピュータが実行可能な命令を読み、実行することができる任意のその他のコンピュータプログラムを含み得る。
一部の実装において、プリフェッチスクリプトは、その後使用するためにクライアントデバイス125のローカルに記憶するためにクライアントデバイス125にデータ処理システム110からコンテンツアイテムをプリフェッチさせるように構成される。たとえば、プリフェッチスクリプトは、クライアントデバイス125にクライアントデバイス上に1つまたは複数のローカルキャッシュを作成させることができる。プリフェッチスクリプトは、クライアントデバイス125にコンテンツの1つまたは複数の要求を生成させることができる。プリフェッチスクリプトは、クライアントデバイス125にコンテンツの要求に応答してコンテンツを受信させ、受信されたコンテンツを生成されたローカルキャッシュに記憶させることができる。プリフェッチスクリプトは、クライアントデバイス125にアプリケーション内のコンテンツスロットを特定することに応じてコンテンツの後続の要求を生成させ、コンテンツスロットに挿入するためのコンテンツアイテムをローカルキャッシュから取り出させることができる。一部の実装において、ローカルキャッシュに記憶されるコンテンツアイテムは、後続のコンテンツスロットにおいてサービスを提供するように記憶される。
一部の実装において、プリフェッチスクリプトは、クライアントデバイス125のプロセッサによって実行されるときにクライアントデバイスのアプリケーションに(a)アプリケーションの環境内に表示するためのコンテンツの第1の要求を送信することであって、コンテンツの第1の要求が、表示するための第1のコンテンツアイテムを決定するために使用される第1のパラメータを含む、送信することと、(b)関連するメモリ要素に第1のパラメータを記憶することと、(c)第1のコンテンツアイテムを受信することと、(d)コンピューティングデバイス上で実行されるアプリケーションの環境内に第1のコンテンツアイテムを表示することと、(e)第1のコンテンツアイテムを表示することに応じてメモリ要素からコンテンツの第1の要求の第1のパラメータを取り出すことと、(f)コンテンツの第1の要求の取り出された第1のパラメータを含むコンテンツの後続の要求を送信することと、(g)コンテンツの後続の要求に応答して後続のコンテンツアイテムを受信することと、(h)アプリケーションに固有のローカルキャッシュ構造に後続のコンテンツアイテムを記憶することと、(i)アプリケーションの環境内に表示するためのコンテンツの第2の要求を送信することであって、コンテンツの第2の要求が、表示するための第2のコンテンツアイテムを決定するために使用される第2のパラメータを含み得る、送信することと、(j)第2の要求に応答してローカルキャッシュ構造から後続のコンテンツアイテムを取り出すことと、(k)第2の要求に応答してコンピューティングデバイス上のアプリケーションの環境内に後続のコンテンツアイテムを表示することとを行わせることができるコンピュータが実行可能な命令を含み得る。プリフェッチスクリプトに関するさらなる詳細は、図2、図3、および図4に関連して本明細書においてさらに与えられる。プリフェッチスクリプトに関連するシステムの一例が、図2に示される。
コンテンツ要求モジュール130は、クライアントデバイス125からコンテンツの要求を受信することができる。コンテンツの要求は、情報リソースの要求、1つもしくは複数の第三者のコンテンツアイテムの要求、スクリプト(たとえば、プリフェッチスクリプト)の要求、またはこれらの組合せを含み得る。一部の実装において、コンテンツの要求は、第三者のコンテンツの要求を含み得る。一部の実装において、第三者のコンテンツの要求は、第三者のコンテンツが表示されるべき情報リソースのアドレスまたは識別子を含み得る。また、第三者のコンテンツの要求は、コンテンツの要求に応答して提供するコンテンツを決定するためにデータ処理システム110によって使用され得る1つまたは複数のパラメータを含むかまたは特定し得る。たとえば、パラメータは、要求されたコンテンツを挿入すべきコンテンツスロットのサイズを特定し得る。パラメータは、情報リソースに関連するコンテンツの種類、要求された第三者のコンテンツの種類(たとえば、テキスト、画像、ビデオなど)、クライアントデバイスの情報、要求された第三者のコンテンツアイテムに関するサイズ情報、クライアントデバイス125に関連するネットワークの種類(たとえば、セルラーネットワーク、WiFiなど)、クライアントデバイス125におけるアプリケーションに関連するアプリケーションID、アプリケーションIDに関連する属性(たとえば、デバイスの設定、クライアントデバイスの種類など)、クライアントデバイス125の現在のもしくは過去の位置、またはこれらの組合せを特定し得る。一部の実装において、要求は、プリフェッチスクリプトなどのスクリプトを特定し得る。
一部の実装において、コンテンツの要求は、情報リソースの要求を含み得る。情報リソースの要求は、情報リソースのアドレスまたは識別子を含み得る。たとえば、情報リソースの要求は、ウェブページなどの特定のリソースのURL (たとえば、「http://www.example.com」)を含み得る。情報リソースの要求は、(デバイスの種類、デバイス識別子、またはこれらの組合せなどの)クライアントデバイスの情報も含み得る。
コンテンツ選択モジュール135は、コンテンツの受信された要求に応答してクライアントデバイス125に送信されるコンテンツを決定するように構成され得る。コンテンツ選択モジュール135は、コンテンツの要求に含まれる情報またはパラメータに基づいてクライアントデバイス125に送信されるコンテンツを決定し得る。たとえば情報リソースの要求を受信すると、コンテンツ選択モジュール135は、クライアントデバイスに送信するためのコンテンツを決定するためにコンテンツの要求内の情報リソースのアドレスまたは識別子を使用し得る。1つまたは複数の第三者のコンテンツアイテムの要求を受信する場合、コンテンツ選択モジュール135は、第三者のコンテンツアイテムが提示されるべきである情報リソースに関するアドレスもしくは識別子、情報リソースに関するコンテンツの種類情報(たとえば、スポーツ、ニュース、音楽、映画、旅行など)、第三者のコンテンツアイテムが表示されるべきであるスロットのサイズ情報、クライアントデバイスの情報(たとえば、デバイスの種類、デバイスの識別子、デバイスの位置など)、情報リソースに関連するコンテンツの種類、要求された第三者のコンテンツの種類(たとえば、テキスト、画像、ビデオなど)、クライアントデバイス125に関連するネットワークの種類(たとえば、セルラーネットワーク、WiFiなど)、クライアントデバイス125におけるアプリケーションに関連するユーザID、クライアントIDに関連する属性(たとえば、デバイスの設定、クライアントデバイスの種類など)、クライアントデバイス125の現在のもしくは過去の位置、またはこれらの組合せに基づいて第三者のコンテンツアイテムを選択し得る。一部の実装において、コンテンツ選択モジュール135は、コンテンツ選択システムと通信し、クライアントデバイスから受信された第三者のコンテンツの要求に含まれるコンテンツ選択システムの情報を提供し得る。また、コンテンツ選択モジュール135は、第三者のコンテンツの要求に含まれる情報を提供することに応じてコンテンツ選択システムから1つまたは複数の第三者のコンテンツアイテムを受信し得る。一部の実装において、コンテンツ選択モジュール135は、データベース145にアクセスし、クライアントデバイス125に送信するためのコンテンツを取り出し得る。
一部の実装において、コンテンツ選択モジュール135は、コンテンツの要求に応答して、スクリプトがクライアントデバイス125に送信されるべきか否かを判定するように構成され得る。コンテンツ選択モジュール135は、コンテンツの要求の種類(たとえば、情報リソースの要求、第三者のコンテンツの要求、もしくはプリフェッチスクリプトの要求)、コンテンツの要求内のインジケータ(たとえば、プリフェッチスクリプトを示すインジケータ)、コンテンツの要求内の情報リソース識別子、またはこれらの組合せに基づいてスクリプトがクライアントデバイス125に送信されるべきか否かを判定し得る。
一部の実装において、コンテンツの要求は、コンテンツの要求を含み得る。コンテンツの要求は、コンテンツを要求する命令を含むコンテンツスロットを検出することに応じてクライアントデバイスにおいて生成され得る。コンテンツの要求は、識別子を含み得る。一部の実装において、デバイスの識別子は、特定のアプリケーションに対して一意であってよく、したがって、特定のクライアントデバイスにインストールされた特定のアプリケーションに割り当てられた一意の識別子であってよい。一部の実装において、識別子は、要求がそこから受信されたコンピューティングデバイスを一意に特定するデバイスの識別子であってよい。
一部の実装において、コンテンツ選択モジュール135は、識別子を含むコンテンツの要求を受信し、識別子を使用してプリフェッチスクリプトを送信すべきかどうかを判定し得る。コンテンツ選択モジュール135は、プリフェッチスクリプトを受信したアプリケーションまたはデバイスの情報を含むデータベースを維持し得る。コンテンツ選択モジュール135は、要求に含まれる識別子を使用し、アプリケーションまたはデバイスがプリフェッチスクリプトを前に受信したかどうかを判定するために識別子を使用してデータベース内のルックアップを実行し得る。コンテンツ選択モジュール135またはスクリプトプロバイダモジュール140は、アプリケーションが実行されているクライアントデバイスにプリフェッチスクリプトを送信することに応じて、プリフェッチスクリプトを受信したアプリケーションまたはデバイスの情報を更新するためにデータベースを更新し得る。
スクリプトがクライアントデバイス125に送信されるべきであると判定すると、コンテンツ選択モジュール135は、コンテンツの要求、またはクライアントデバイスにプリフェッチスクリプトを提供する指示をスクリプトプロバイダモジュール140に転送し得る。一部の実装において、コンテンツ選択モジュール135は、プリフェッチスクリプトなどのスクリプトと一緒にクライアントデバイス125に送信する第三者のコンテンツアイテムを選択し得る。
スクリプトプロバイダモジュール140は、プリフェッチスクリプトを提供する指示を受信し、クライアントデバイス125に(またはクライアントデバイス125に送信するための別のエンティティに)プリフェッチスクリプトを送信するように構成され得る。スクリプトプロバイダモジュール140は、プリフェッチスクリプトをメモリ要素内に維持し得る。スクリプトプロバイダモジュール140は、クライアントデバイスに提供するプリフェッチスクリプトの適合するバージョンを選択するために、要求がそこから受信されたクライアントデバイスおよび/またはアプリケーションを判定し得る。一部の実装において、プリフェッチスクリプトは、特定のアプリケーションに固有であってよく、またはクライアントデバイス上で実行される特定のオペレーティングシステムに固有であってよい。スクリプトプロバイダモジュール140は、プリフェッチスクリプトを送信すべきアプリケーションおよび/またはクライアントデバイスに基づいて適切なプリフェッチスクリプトを選択し得る。
一部の実装において、プリフェッチスクリプトは、第三者のコンテンツアイテムと別々にまたは一緒にクライアントデバイス125に送信され得る。たとえば、スクリプトプロバイダモジュール140、コンテンツ選択モジュール135、またはデータ処理システム110の別のエンティティが、クライアントデバイス125に第三者のコンテンツアイテムを送信する前に第三者のコンテンツアイテムにプリフェッチスクリプトを含めることができる。一部の実装においては、スクリプトプロバイダモジュール140、コンテンツ選択モジュール135、またはデータ処理システム110の別のエンティティが、クライアントデバイス125に要求された情報リソースと一緒にプリフェッチスクリプトを送信することができる。
図2は、一部の実装によるコンテンツをプリフェッチするためのシステム200の例を示すブロック図である。システム200は、アプリケーション205、情報リソース210、アプリケーション起動検出モジュール225、要求生成モジュール230、ローカルキャッシュ管理モジュール235、およびコンテンツアイテム管理モジュール240を含み得る。一部の実装において、アプリケーション起動検出モジュール225、要求生成モジュール230、ローカルキャッシュ管理モジュール235、およびコンテンツアイテム管理モジュール240は、プリフェッチスクリプト220内のモジュールであってよい。一部の実装において、アプリケーション起動検出モジュール225、要求生成モジュール230、ローカルキャッシュ管理モジュール235、およびコンテンツアイテム管理モジュール240を含むプリフェッチスクリプト220は、コンテンツ管理モジュール215内のモジュールであってよい。コンテンツ管理モジュール215は、本明細書において説明されるようにクライアントデバイス125に動作を実行させるためにアプリケーション205において命令を実行するためにデータ処理システム110によって供給されるスクリプト、モジュール、サブモジュールなどに専用であることができるアプリケーション205内のモジュールであってよい。
一部の実装において、クライアントデバイス125のプリフェッチスクリプト220は、データ処理システム110のスクリプトプロバイダモジュール140によって提供される。プリフェッチスクリプト220は、データ処理システム110によってクライアントデバイス125から受信されたコンテンツの要求に応答してクライアントデバイス125に提供され得る。一部の実装において、データ処理システム110は、クライアントデバイス125がプリフェッチスクリプト220を含むかどうかを判定する。たとえば、データ処理システム110は、データ処理システム110に記憶されたデータ構造(たとえば、テーブル)においてコンテンツの要求に含まれるクライアントデバイス125の識別子のルックアップを実行し得る。別の例として、データ処理システム110は、プリフェッチスクリプト220がクライアントデバイス125に存在するかどうかを示すコンテンツの要求に含まれるフラグまたはその他のインジケータを検出またはスキャンし得る。
プリフェッチスクリプト220は、下で図6に示されるプロセッサなどのコンピューティングデバイスの1つまたは複数のプロセッサによって走らされるかまたはその他の方法で実行され得る。一部の実装においては、アプリケーション起動検出モジュール225、要求生成モジュール230、ローカルキャッシュ管理モジュール235、およびコンテンツアイテム管理モジュール240のいずれかが、アプリケーション205、コンテンツ管理モジュール215、情報リソース210、またはプリフェッチスクリプト220の一部であることができる。
アプリケーション205は、たとえば、情報リソース210、アプリケーション起動検出モジュール225、要求生成モジュール230、ローカルキャッシュ管理モジュール235、およびコンテンツアイテム管理モジュール240に含まれるコンピュータが実行可能な命令などのコンピュータが実行可能な命令を実行するかまたはその他の方法で呼び出すことができるインターネットブラウザ、モバイルアプリケーション、ゲームアプリケーション、GPSアプリケーション、または任意のその他のコンピュータプログラムを含み得る。アプリケーション205は、コンテンツ発行元120のサーバ、コンテンツプロバイダ115のサーバ、またはデータ処理システム110のサーバなどの情報リソースをホストするサーバから情報リソース210を取得するかまたは受け取り得る。たとえば、アプリケーション205は、情報リソース210のアドレスまたは識別子を含む要求をサーバに送信し、それに応じて、情報リソース210を受け取り得る。一部の実装において、アプリケーション205は、クライアントデバイス上で実行されるコンテンツ発行元のネイティブアプリケーションを含み得る。情報リソース210は、1つまたは複数のコンテンツの部分(またはコンテンツ要素)を含み得る。情報リソース210は、1つまたは複数のコンテンツ要素の位置を指定し得る。一部の実装において、情報リソース210は、主コンテンツに関する部分および第三者のコンテンツまたはコンテンツアイテムに関する部分を含み得る。
ここで図1および図2をまとめて参照すると、一部の実装において、クライアントデバイス125上のアプリケーション205において実行されるアプリケーション起動検出モジュール225は、クライアントデバイス125に、アプリケーション205がクライアントデバイス125上で起動したという指示をデータ処理システム110に送信させ得る。一部の実装において、プリフェッチスクリプト220は、アプリケーション205が起動するとアプリケーション205にルーチンを実行させる命令を含み得る。ルーチンは、アプリケーション205が起動したという指示をアプリケーション起動検出モジュール225に与える命令のセットを含み得る。したがって、続いて、アプリケーション起動検出モジュール225が、クライアントデバイス125に、アプリケーション205が起動したという指示をデータ処理システム110に送信させ得る。
一部の実装において、クライアントデバイス125上で実行される要求生成モジュール230は、データ処理システム110に送信されるコンテンツの要求をクライアントデバイス125に生成させ得る。一部の実装において、クライアントデバイス125上で実行されるローカルキャッシュ管理モジュール235は、クライアントデバイス125に、アプリケーション205に関連する1つまたは複数のローカルキャッシュ245a、245b、245cを生成させるか、削除させるか、修正させるか、またはその他の方法で維持させ得る。ローカルキャッシュ245a、245b、245cは、データ処理システム110から取り出された1つまたは複数のコンテンツアイテムをクライアントデバイス125のローカルに記憶するように構成され得る。
一部の実装において、クライアントデバイス125上で実行されるローカルキャッシュ管理モジュール235は、クライアントデバイス125に、アプリケーション205に関連するローカルキャッシュ245aを作成させ得る。ローカルキャッシュ245aは、アプリケーション205に関連して使用するために割り当てられたクライアントデバイス125におけるストレージ要素であり、データ処理システム110から受信された1つまたは複数のコンテンツアイテムを(たとえば、一時的に)記憶するように構成され得る。一部の実装において、ローカルキャッシュ245aは、データ処理システム110へのアプリケーションによるコンテンツの要求に応答して作成される。ローカルキャッシュ管理モジュール235は、ローカルキャッシュ245aがクライアントデバイス125のメモリ要素内に作成され得るように、クライアントデバイス125にルーチンの実行によりローカルキャッシュ245aを作成させることができる。ルーチンは、ローカルキャッシュ245aを作成するようにクライアントデバイス125のオペレーティングシステムに命令することができる。たとえば、キャッシュ管理モジュール235は、クライアントデバイス125にローカルキャッシュ245aのための所定の量のメモリを割り当てさせることができる。所定の量のメモリは、ローカルキャッシュ管理モジュール235によって指定され得、プリフェッチスクリプト220のコードに対する周期的な更新によってデータ処理システム110により調整され得る。一部の実装において、ローカルキャッシュ管理モジュール235は、クライアントデバイス125に、作成時にパラメータに応じてそれぞれの作成されるローカルキャッシュの構成を変えさせることができる。たとえば、ローカルキャッシュ245aがビデオであるコンテンツアイテムを記憶することになる場合、ローカルキャッシュ管理モジュール235は、クライアントデバイス125に、ローカルキャッシュ245aが静止画を記憶することになる場合よりも多くのメモリをローカルキャッシュ245aに割り当てさせることができる。
クライアントデバイス125にローカルキャッシュ245aを作成させることに応じて、クライアントデバイス125は、作成されたローカルキャッシュ245aのローカルの位置を示す情報をローカルキャッシュ管理モジュール235に送信することができ、したがって、アプリケーション205は、その後、ローカルキャッシュ245aにアクセスすることができる。一部の実装において、ローカルキャッシュ245aは、アプリケーション205がシャットダウンされるときに、ローカルキャッシュ245aおよびローカルキャッシュ245aに記憶されたコンテンツがクライアントデバイス125によってローカルキャッシュ245aのために割り当てられたメモリ要素内に維持されるように永続的である。
したがって、クライアントデバイス125上で実行されるローカルキャッシュ管理モジュール235は、クライアントデバイス125に、コンテンツの要求に関連するパラメータに基づいてローカルキャッシュ245aに構成を割り当てさせることができる。たとえば、1つまたは複数のパラメータ(たとえば、コンテンツスロットIDの値)を含むコンテンツの要求を生成すると、ローカルキャッシュ管理モジュール235は、クライアントデバイス125に要求のパラメータに基づいてキャッシュを構築および構成させることができる(たとえば、コンテンツスロットIDを含む後続の受信されたコンテンツアイテムが同じコンテンツスロットIDを用いて構成されたローカルキャッシュに記憶され得るようにコンテンツスロットIDの値を含む構成を有するローカルキャッシュ)。
ローカルキャッシュ245aの構成は、アプリケーション205によってその後表示するためにローカルキャッシュ245aに記憶されるべきであるコンテンツの種類および分類を決定することができる。たとえば、コンテンツアイテムがアプリケーション205によって表示される特定のコンテンツスロットの識別子をコンテンツの要求が含む場合、ローカルキャッシュ管理モジュール235は、クライアントデバイス125に、コンテンツの要求内で特定された特定のコンテンツスロットに対応するローカルキャッシュを作成させることができる。したがって、特定のコンテンツスロットがアプリケーション205によってその後検出されるとき、コンテンツアイテム管理モジュール240は、クライアントデバイス125に、特定のコンテンツスロットに対応するローカルキャッシュに記憶されたコンテンツアイテムにアクセスさせ、特定のコンテンツスロット内に表示するプリフェッチされたコンテンツアイテムを取り出させることができる。したがって、アプリケーション205は、各ローカルキャッシュがローカルキャッシュに記憶されるコンテンツの種類を制御する異なる構成を含むようにして複数のローカルキャッシュ(たとえば、ローカルキャッシュ245a、245b、および245c)に関連付けられ得る(たとえば、アプリケーション205の異なるコンテンツスロット識別子が、異なるローカルキャッシュに関する異なる構成であってよい)。たとえば、第1のローカルキャッシュ245aが、第1のコンテンツスロットの識別子を含むコンテンツスロットの第1の種類に一致するコンテンツスロット内で提供されるコンテンツアイテムを記憶するように構成されてよく、第2のローカルキャッシュ245bが、第2のコンテンツスロットの識別子を含むコンテンツスロットの第2の種類に一致するコンテンツスロット内で提供されるコンテンツアイテムを記憶するように構成されてよく、第1のコンテンツスロットに適合するコンテンツアイテムが、第1のローカルキャッシュに記憶され、第2のコンテンツスロットに適合するコンテンツアイテムが、第2のローカルキャッシュに記憶される。
一部の実装において、ローカルキャッシュ245aに関連する構成は、上で検討されたように、コンテンツスロット識別子の他にコンテンツの要求に含まれる任意のパラメータであり得る。たとえば、構成は、クライアントデバイスが接続されるネットワークの種類(たとえば、セルラーネットワーク、WiFiネットワークなど)、クライアントデバイス125の特徴(たとえば、デバイスの設定、クライアントデバイスの種類など)、コンテンツの要求に関連するキーワードまたは対象(たとえば、スポーツ、政治、テクノロジーなど)、クライアントデバイス125の現在のまたは過去の位置、(たとえば、コンテンツアイテムが異なる部分においてアプリケーションにシームレスに統合され得るような)アプリケーション205の異なる部分のテキストのおよび視覚的なコンテンツなどであるがこれらに限定されない要求パラメータを含み得る。
一部の実装において、ローカルキャッシュ245a、245b、245cを作成すると、クライアントデバイス125は、ローカルキャッシュ245a、245b、245cの各々の位置情報を送信することができ、したがって、コンテンツアイテム管理モジュール240は、クライアントデバイス125にローカルキャッシュ245a、245b、245cにアクセスさせるかまたはその他の方法でローカルキャッシュ245a、245b、245cを管理させることができる。たとえば、クライアントデバイス125上で実行されるコンテンツアイテム管理モジュール240は、クライアントデバイス125にローカルキャッシュ245a、245b、245cからコンテンツアイテムを取り出させることができる。クライアントデバイス125上で実行されるコンテンツアイテム管理モジュール240は、クライアントデバイス125にローカルキャッシュ245a、245b、245cに記憶されたコンテンツアイテムを削除させることができる。クライアントデバイス125上で実行されるコンテンツアイテム管理モジュール240は、クライアントデバイス125に、いつ(たとえば、アプリケーション205内でコンテンツスロットを検出することに応じて)取り出し、表示すべきかを決定させることができる。
一部の実装においては、複数のローカルキャッシュの代わりに、ローカルキャッシュ管理モジュール235およびコンテンツアイテム管理モジュール240は、クライアントデバイス125に単一のローカルキャッシュを作成させ、管理させることができる。コンテンツアイテム管理モジュール240は、クライアントデバイス125に、表示するために単一のローカルキャッシュに記憶された1つまたは複数のコンテンツアイテムにアクセスさせることができる。一部の実装において、単一のローカルキャッシュは、コンテンツアイテムに関連するパラメータに関係なく様々なコンテンツアイテムを記憶するように構成される(たとえば、単一のローカルキャッシュは、汎用のローカルキャッシュである)。
一部の実装において、単一のローカルキャッシュは、前の要求のパラメータに基づいてコンテンツアイテムを記憶するように構成される。たとえば、単一のローカルキャッシュは、コンテンツの前の要求のパラメータに対応する構成を含むことができ、コンテンツアイテム管理モジュール240は、クライアントデバイス125にそのクライアントデバイス125が単一のローカルキャッシュからコンテンツアイテムを取り出した後に単一のローカルキャッシュを削除させることができる。したがって、ローカルキャッシュ管理モジュール235は、その後、クライアントデバイス125に、コンテンツの新しい要求のパラメータに基づいて前の単一のローカルキャッシュを置き換えるために新しい単一のローカルキャッシュを作成させることができる。したがって、クライアントデバイス125のローカルメモリが、適切なときにローカルキャッシュを作成および削除することによって節約され得る。
アプリケーション起動検出モジュール225、要求生成モジュール230、ローカルキャッシュ管理モジュール235、コンテンツアイテム管理モジュール240、およびローカルキャッシュ245a、245b、245cに関するさらなる詳細が、下に示される。
図3は、一部の実施形態による、アプリケーション205が実行されるかまたは走らされるクライアントデバイス125において情報リソース内に表示するためにコンテンツアイテムをプリフェッチするプロセスを示すシーケンス図である。アプリケーション205が、関連するローカルキャッシュ245aとともに示され、アプリケーション205およびローカルキャッシュ245aの様々な状態が、以下で説明されるようにイベントに応じて段階A〜Fに示される。
一部の実装において、アプリケーション205は、段階Aにおいてクライアントデバイス125上で起動され、走っていることがある。アプリケーション205の起動に応じて、クライアントデバイス125上のアプリケーション205において実行されるアプリケーション起動検出モジュール225は、クライアントデバイス125に、アプリケーション205がクライアントデバイス125上で起動したという指示を送信させることができる。一部の実装においては、起動の指示を受信することに応じて、コンテンツ選択モジュール135が、クライアントデバイス125に、アプリケーション205においてその後表示するためにクライアントデバイス125のローカルに(たとえば、ローカルキャッシュ245a、245b、245cのうちの1つまたは複数に)記憶される1つまたは複数の初期コンテンツアイテムを送信させることができる。一部の実装において、初期コンテンツアイテムに関連するパラメータは、クライアントデバイス125のアプリケーション205によってなされた前の要求のパラメータに基づき得る。たとえば、初期コンテンツアイテムに関連するパラメータは、アプリケーション205が前回閉じられる前にアプリケーション205によって送信された最後のコンテンツアイテムの要求のパラメータに対応し得る。初期コンテンツアイテムに関連するパラメータは、要求をするクライアントデバイスの種類、クライアントデバイスにサービスを提供するネットワークの種類、クライアントデバイスの最新の知られている位置、時刻などであるがこれらに限定されないその他のまたは追加的なパラメータに基づき得る。
段階Aにおいて、クライアントデバイス125は、コンテンツアイテムを記憶するための前に作成されたローカルキャッシュ245aを既に含み得る。一部の実装において、クライアントデバイス125上で実行される要求生成モジュール230は、クライアントデバイス125に、コンテンツの第1の要求301を生成させ、ネットワーク105を介してデータ処理システム110のコンテンツ要求モジュール130にコンテンツの第1の要求301を送信させ得る。一部の実装において、コンテンツの第1の要求301は、クライアントデバイス125によって受信されるコンテンツアイテムの種類を示す1つまたは複数のパラメータを含む。コンテンツの第1の要求301のパラメータは、要求されたコンテンツを挿入すべきコンテンツスロットのサイズを特定し得る。パラメータは、情報リソースに関連するコンテンツの種類、要求された第三者のコンテンツの種類(たとえば、テキスト、画像、ビデオなど)、クライアントデバイスの情報、要求された第三者のコンテンツアイテムに関するサイズ情報、クライアントデバイス125に関連するネットワークの種類(たとえば、セルラーネットワーク、WiFiなど)、クライアントデバイス125におけるアプリケーションに関連するアプリケーションID、アプリケーションIDに関連する属性(たとえば、デバイスの設定、クライアントデバイスの種類など)、クライアントデバイス125の現在のもしくは過去の位置、またはこれらの組合せをさらに特定し得る。
コンテンツの第1の要求301に応答して、データ処理システム110のコンテンツ選択モジュール135は、第1のコンテンツアイテム302を選択し、第1のコンテンツアイテム302をクライアントデバイス125に送信するために、コンテンツの第1の要求301内の受信されたパラメータを使用する。それから、第1のコンテンツアイテム302が、アプリケーション205によってその後取り出すためにローカルキャッシュ245aのローカルに記憶され得る。たとえば、アプリケーション205は、クライアントデバイス125に第1のコンテンツアイテム302を受信させ、(たとえば、コンテンツの第1の要求301の要求識別子を第1のコンテンツアイテム302に含まれる応答識別子とマッチングすることによって、またはコンテンツの第1の要求301のコンテンツスロット識別子を第1のコンテンツアイテム302に含まれるコンテンツスロット識別子とマッチングすることによって)第1のコンテンツアイテム302がコンテンツの第1の要求301に一致すると特定させるように構成された命令を含み得る。たとえば、コンテンツの第1の要求301を送信する際に、要求生成モジュール230は、クライアントデバイス125に、コンテンツの要求301が生成されるコンテンツスロットのコンテンツスロット識別子を要求に含めさせることができる。そして今度は、コンテンツアイテム管理モジュール240が、クライアントデバイス125に、受信された第1のコンテンツアイテム302のコンテンツスロット識別子を判定させることができ、識別子をその特定のコンテンツスロット識別子のために構成されるローカルキャッシュの構成とマッチングすることができる。マッチングされると、コンテンツアイテム管理モジュール240は、クライアントデバイス125に、一致するコンテンツスロット識別子を有するローカルキャッシュに受信された第1のコンテンツアイテム302を記憶させることができる。一部の実装において、クライアントデバイスに送信されるコンテンツアイテムを含むコンテンツの要求に対する応答は、クライアントデバイスまたはコンテンツアイテム管理モジュール240がコンテンツアイテムを記憶すべきローカルキャッシュを決定するために使用することができる何らかの特定するデータを含み得る。一部の実装において、クライアントデバイスは、コンテンツアイテムを記憶すべきローカルキャッシュを特定するローカルキャッシュ識別子をコンテンツの要求に含めるように構成され得る。このようにして、データ処理システム110は、コンテンツアイテム管理モジュール240が記憶するためにローカルキャッシュ識別子に対応するローカルキャッシュにコンテンツアイテムをルーティングし得るように応答にローカルキャッシュ識別子を含めることができる。一部の実装において、応答は、応答が対応する要求を特定することができ、コンテンツアイテム管理モジュール240は、コンテンツアイテム管理ポリシーに従ってコンテンツアイテムが記憶されるべきローカルキャッシュを要求から決定することができる。
段階Bにおいて、クライアントデバイス125のローカルキャッシュ245aが、アプリケーション205によって取り出すために第1のコンテンツアイテム302を記憶する。一部の実装において、ローカルキャッシュ245aは、クライアントデバイス125上で実行されるローカルキャッシュ管理モジュール235がクライアントデバイス125にローカルキャッシュ245a内の第1のコンテンツアイテム302を削除させる前に所定の継続時間の間第1のコンテンツアイテム302を記憶するように構成される。一部の実装において、所定の継続時間は、望むとおりに構成可能であり、たとえば、20分に設定され得る。たとえば、所定の継続時間は、クライアントデバイス125上で実行されるローカルキャッシュ管理モジュール235がクライアントデバイス125にローカルキャッシュ245aに記憶された第1のコンテンツアイテム302に付与させる鮮度(freshness)スコアに基づくことができる。一部の実装において、スコアは、時間に基づくことができ(たとえば、第1のコンテンツアイテム302がローカルキャッシュ245aに長く記憶されればされるほど鮮度スコアは低くなる)、第1のコンテンツアイテム302が含むデータの種類に基づくことができ、たとえば、ローカルにキャッシュされるコンテンツアイテムの鮮度スコアの下落率は、第1のコンテンツアイテム302が含むデータの種類に基づいて異なることができる(たとえば、天気情報が相対的により長い時間ローカルキャッシュ245aに記憶されることを許される一方、株価情報は株式の変動しやすい性質が原因で相対的に少ない時間を与えることがある)。一部の実装において、クライアントデバイス125上で実行されるローカルキャッシュ管理モジュール235は、クライアントデバイス125に、第1のコンテンツアイテム302の鮮度スコアをクライアントデバイス125に記憶された閾値と比較することによってローカルキャッシュ245aから第1のコンテンツアイテム302を削除させる。たとえば、鮮度スコアが閾値以下である場合、第1のコンテンツアイテム302が削除され得る。
一部の実装において、クライアントデバイス125上で実行されるコンテンツ管理モジュール240は、クライアントデバイス125に、アプリケーション205内の第1のコンテンツスロット310の存在を検出させ得る。第1のコンテンツスロット310は、第1のコンテンツスロット310内に表示するコンテンツアイテムを受信するように構成されたアプリケーション205の表示の中の位置を含み得る。第1のコンテンツスロット310の検出に応じて、クライアントデバイス125上で実行されるコンテンツ管理モジュール240は、クライアントデバイス125にローカルキャッシュ245aから記憶された第1のコンテンツアイテム302を取り出させ、クライアントデバイス125によって表示するために第1のコンテンツスロット310に第1のコンテンツアイテム302を挿入させることができる。一部の実装において、ローカルキャッシュ245aは、コンテンツの第1の要求301に含まれるパラメータ、たとえば、第1のコンテンツスロット310の識別子に対応するパラメータに対応する構成を含むように構成される。したがって、一部の実装において、ローカルキャッシュ245aに記憶されたコンテンツアイテムは、第1のコンテンツスロット310に適合するコンテンツアイテム(たとえば、第1のコンテンツスロット310の識別子に一致するスロット識別子を含むコンテンツアイテム)であり得る。
段階Cでは、一部の実装において、クライアントデバイス125上で実行されるコンテンツ管理モジュール240が、クライアントデバイス125に、ローカルキャッシュ245aに記憶された第1のコンテンツアイテム302を第1のコンテンツスロット310に挿入させ、表示させることができる。一部の実装において、クライアントデバイス125上で実行されるコンテンツ管理モジュール240は、クライアントデバイス125に、第1のコンテンツアイテム302が第1のコンテンツスロット310内に表示されるときにまたは表示されることに応じてローカルキャッシュ245aから第1のコンテンツアイテム302を削除させることができる。さらに、一部の実装においては、第1のコンテンツアイテム302が第1のコンテンツスロット310内に表示されるときにまたは表示されることに応じて、クライアントデバイス125上で実行されるコンテンツ管理モジュール240が、クライアントデバイス125にコンテンツの第2のまたは後続の要求303を送信させることができ、これは、上述のコンテンツの第1の要求301の送信と同様であってよい。一部の実装において、コンテンツの第2の要求303は、通常行われるようにコンテンツアイテムスロットの検出に応答する代わりに、第1のコンテンツスロット310における第1のコンテンツアイテム302の表示に応じて送信される。
一部の実装において、コンテンツの第2の要求303は、コンテンツの第1の要求301のパラメータと同じまたは同様のパラメータを含み、したがって、コンテンツの第2の要求303に応答してデータ処理システム110から受信されるコンテンツアイテムは、第1のコンテンツアイテム302と同様の特徴(たとえば、同様の対象、同様の視覚的特徴、同様のサイジングなど)を有してよい。一部の実装において、クライアントデバイス125は、コンテンツの第1の要求301をネットワーク105に送信するとき、コンテンツの第2の要求303を送信するときに取り出すためにおよびコンテンツの第2の要求303に関連して使用されるためにコンテンツの第1の要求301に関連する1つまたは複数のパラメータを記憶することができる。一部の実装において、コンテンツの第1の要求301の1つまたは複数のパラメータは、クライアントデバイス125において別個のメモリ要素に記憶され得る。
要求に応答して、クライアントデバイス125上で実行されるコンテンツ管理モジュール240は、クライアントデバイス125に(たとえば、ネットワーク105を介してデータ処理システム110から)第2のコンテンツアイテム304を受信させることができる。第2のコンテンツアイテム304は、アプリケーション205によって呼び出されるときに取り出されるプリフェッチされたコンテンツアイテムとしてローカルキャッシュ245aに記憶される。コンテンツの第1の要求301およびコンテンツの第2の要求303が同じまたは同様のパラメータを含むので、第1のコンテンツアイテム302および第2のコンテンツアイテム304は同様の特徴を有してよい。たとえば、第1のコンテンツアイテム302と第2のコンテンツアイテム304との両方が、同じコンテンツスロット(たとえば、コンテンツスロット310)に適合する、同様の対象(たとえば、スポーツ、政治など)を対象とする、同じサイズを有する、ある種のユーザ(たとえば、男性、年配者、専門家など)を対象とする、これらの組合せなどであってよい。一部の実装において、コンテンツの要求のパラメータは、第1のコンテンツアイテム302および第2のコンテンツアイテム304がアプリケーション205の同じセクションのテキストおよび外観にシームレスに統合され得るようにアプリケーションの表示の環境のテキストのおよび視覚的なコンテンツに基づく。
一部の実装において、クライアントデバイス125は、複数のコンテンツアイテムがローカルキャッシュ245aに記憶されるようにコンテンツの複数の要求を一度に送信することができる。たとえば、第1のコンテンツスロット310を検出することに応じて、クライアントデバイス125は、コンテンツの複数の第2の要求303をネットワーク105に送信し、ローカルキャッシュ245aに記憶される対応する第2のコンテンツアイテム304を受信することができる。
したがって、クライアントデバイス125上で実行されるコンテンツ管理モジュール240は、コンテンツアイテムが必要とされるときにクライアントデバイス125がネットワーク105を介してデータ処理システム110と通信しなければならないのとは対照的に、プリフェッチされたコンテンツアイテムがクライアントデバイス125によってローカルで比較的迅速にアクセスされ得るように、クライアントデバイス125に、アプリケーション205によってその後使用するためにコンテンツアイテムをプリフェッチさせることができる。したがって、アプリケーション205においてコンテンツアイテムを表示する際のレイテンシーが、削減され得る。さらに、たとえば、ローカルキャッシュ245aに記憶されるコンテンツアイテムが関連する有効継続時間(たとえば、20分)を有することができるので、コンテンツの相対的な鮮度が、コンテンツのプリフェッチにもかかわらず維持され得る。
段階Dにおいて、ローカルキャッシュ245aが、アプリケーション205によって取り出すために第2のコンテンツアイテム304を記憶する。一部の実装において、ローカルキャッシュ245aは、クライアントデバイス125上で実行されるローカルキャッシュ管理モジュール235がクライアントデバイス125にローカルキャッシュ245a内の第2のコンテンツアイテム304を削除させる前に所定の継続時間の間第2のコンテンツアイテム304を記憶するように構成される。一部の実装において、所定の継続時間は、望むとおりに構成可能であり、たとえば、20分に設定され得る。
一部の実装において、クライアントデバイス125上で実行されるコンテンツ管理モジュール240は、クライアントデバイス125に、アプリケーション205内の第2のコンテンツスロット320の存在を検出させ得る。第2のコンテンツスロット320は、段階Cにおいて第1のコンテンツアイテム302が表示された異なるコンテンツスロットであってよい。第2のコンテンツスロット320の検出に応じて、クライアントデバイス125上で実行されるコンテンツ管理モジュール240は、クライアントデバイス125にローカルキャッシュ245aから記憶された第2のコンテンツアイテム304を取り出させ、クライアントデバイス125によって表示するために第2のコンテンツスロット320に第2のコンテンツアイテム304を挿入させることができる。
段階Eでは、一部の実装において、クライアントデバイス125上で実行されるコンテンツ管理モジュール240が、クライアントデバイス125に、ローカルキャッシュ245aに記憶された第2のコンテンツアイテム304を第2のコンテンツスロット320に挿入させ、表示させることができる。一部の実装において、クライアントデバイス125上で実行されるコンテンツ管理モジュール240は、クライアントデバイス125に、第2のコンテンツアイテム304が第2のコンテンツスロット320内に表示されるときにまたは表示されることに応じてローカルキャッシュ245aから第2のコンテンツアイテム304を削除させることができる。さらに、一部の実装においては、第2のコンテンツアイテム304が第2のコンテンツスロット320内に表示されるときにまたは表示されることに応じて、クライアントデバイス125上で実行されるコンテンツ管理モジュール240が、クライアントデバイス125にコンテンツの後続の要求305を送信させることができ、これは、上述のコンテンツの第1の要求301およびコンテンツの第2の要求303の送信と同様であってよい。一部の実装において、コンテンツの後続の要求305は、通常行われるようにコンテンツアイテムスロットの検出に応答する代わりに、第2のコンテンツスロット320における第2のコンテンツアイテム304の表示に応じて送信される。一部の実装において、コンテンツの後続の要求305は、コンテンツの第2の要求303のパラメータと同じまたは同様のパラメータを含み、したがって、コンテンツの後続の要求305に応答してデータ処理システム110から受信されるコンテンツアイテムは、第2のコンテンツアイテム304と同様であってよい。
要求に応答して、クライアントデバイス125上で実行されるコンテンツ管理モジュール240は、クライアントデバイス125に(たとえば、ネットワーク105を介してデータ処理システム110から)後続のコンテンツアイテム306を受信させることができる。後続のコンテンツアイテム306は、アプリケーション205によって必要とされるときに取り出されるプリフェッチされたコンテンツアイテムとしてローカルキャッシュ245aに記憶される。コンテンツの第2の要求303およびコンテンツの後続の要求305は同じまたは同様のパラメータを含み得るので、第2のコンテンツアイテム304および後続のコンテンツアイテム306は、同様の特徴を有してよい。たとえば、第2のコンテンツアイテム304と後続のコンテンツアイテム306との両方が、同じコンテンツスロット(たとえば、コンテンツスロット310)に適合する、同様の対象(たとえば、スポーツ、政治など)を対象とする、同じサイズを有する、ある種のユーザ(たとえば、男性、年配者、専門家など)を対象とする、これらの組合せなどであってよい。
一部の実装において、段階A〜Eは、終了条件が満たされるまで繰り返される場合がある(たとえば、終了条件は、アプリケーション205がシャットダウンもしくは削除されることを含むことができ、またはアプリケーション205内のコンテンツフェッチ機能が無効化されることを含むことができる)。したがって、クライアントデバイス125は、新しいプリフェッチされたコンテンツがクライアントデバイス125においてパラメータに対応するローカルキャッシュに記憶され、置き換えられ得るように前の要求のパラメータに基づいてコンテンツを繰り返しプリフェッチすることができる。したがって、新しいコンテンツがアプリケーション205によって要求されるとき、クライアントデバイス125は、コンテンツスロットを検出した後、ネットワーク105を介してコンテンツをリアルタイムでフェッチするのとは対照的にローカルキャッシュからコンテンツを供給することができ、それによって、クライアントデバイス125におけるレイテンシーを削減する。
段階Fにおいて、アプリケーション205が、クライアントデバイス125のユーザによっていつでも再起動され得る。一部の実装において、ローカルキャッシュ245a、245b、245cは、アプリケーション205がシャットダウンされるか、閉じられるか、またはその他の方法で動作しなくなった後でさえもその中に記憶されたコンテンツアイテムを維持する永続的なローカルキャッシュである。たとえば、後続のコンテンツアイテム306は、段階Eにおいて受信され、ローカルキャッシュ245aに記憶されるが、アプリケーション205は、段階Eの後に閉じられ、再起動される。しかしアプリケーション205が再起動されるにもかかわらず、クライアントデバイス125は、後続のコンテンツアイテム306がアプリケーション205内のコンテンツスロット310の検出に応答してアクセスされ、表示され得るようにローカルキャッシュ245a内の後続のコンテンツアイテム306の記憶を維持する。したがって、一部の実装において、コンテンツをプリフェッチする上述の方法およびシステムは、再開することができる(たとえば、段階Aに戻ることができる)。
図4は、一部の実装による、表示するためにコンテンツアイテムをプリフェッチする方法400を示す流れ図である。概略的には、方法400は、クライアントデバイスがアプリケーションを起動すること(ブロック405)を含み得る。方法400は、クライアントデバイスがコンテンツの第1の要求を送信することであって、第1の要求が1つまたは複数のパラメータを含む、送信すること(ブロック410)と、それに応答して、データ処理システムが1つまたは複数の第1のパラメータを含む第1の要求を受信すること(ブロック415)とを含み得る。方法400は、データ処理システムが第1のパラメータに基づいて第1のコンテンツアイテムを選択することを含み得る(ブロック420)。方法400は、データ処理システムが第1のコンテンツアイテムをクライアントデバイスに送信すること(ブロック425)と、クライアントデバイスが第1のコンテンツアイテムを受信し、ローカルキャッシュに記憶すること(ブロック430)とを含み得る。方法400は、クライアントデバイスがアプリケーション内の第1のコンテンツスロットを検出すること(ブロック435)と、ローカルキャッシュから第1のコンテンツアイテムを取り出し、第1のコンテンツアイテムを表示すること(ブロック440)と、1つまたは複数の第2のパラメータを含むコンテンツの第2の要求を送信すること(ブロック445)とを含み得る。方法400は、データ処理システムが第2のパラメータを含む第2の要求を受信すること(ブロック450)と、第2のパラメータに基づいて第2のコンテンツアイテムを選択すること(ブロック455)と、第2のコンテンツアイテムをクライアントデバイスに送信すること(ブロック460)とを含み得る。方法400は、クライアントデバイスが第2のコンテンツアイテムを受信し、ローカルキャッシュに記憶すること(ブロック465)を含み得る。方法400は、クライアントデバイスがアプリケーション内の第2のコンテンツスロットを検出すること(ブロック470)と、ローカルキャッシュから第2のコンテンツアイテムを取り出し、第2のコンテンツアイテムを表示すること(ブロック475)と、1つまたは複数の第3のパラメータを含むコンテンツの第3の要求を送信すること(ブロック480)とを含み得る。
詳細には、方法400は、クライアントデバイスがアプリケーションを起動すること(ブロック405)を含み得る。たとえば、アプリケーションを起動すると、クライアントデバイス上で実行されるアプリケーション起動検出モジュールは、クライアントデバイスに、アプリケーションが起動したという指示をデータ処理システムに送信させることができる。一部の実装においては、起動の指示を受信することに応じて、コンテンツ選択モジュールが、クライアントデバイスに、アプリケーションにおいてその後表示するためにクライアントデバイスのローカルに(たとえば、ローカルキャッシュのうちの1つまたは複数に)記憶される1つまたは複数の初期コンテンツアイテムを送信させることができる。一部の実装において、初期コンテンツアイテムに関連するパラメータは、クライアントデバイスのアプリケーションによってなされた前の要求のパラメータに基づくことができる。たとえば、初期コンテンツアイテムに関連するパラメータは、アプリケーションが前回閉じられる前にアプリケーションによって送信された最後のコンテンツアイテムの要求のパラメータに対応することができる。初期コンテンツアイテムに関連するパラメータは、要求をするクライアントデバイスの種類、クライアントデバイスにサービスを提供するネットワークの種類、クライアントデバイスの最新の知られている位置、時刻などであるがこれらに限定されないその他のまたは追加的なパラメータに基づくことができる。
方法400は、クライアントデバイスがコンテンツの第1の要求を送信することであって、第1の要求が1つまたは複数のパラメータを含む、送信すること(ブロック410)と、それに応答して、データ処理システムが1つまたは複数の第1のパラメータを含む第1の要求を受信すること(ブロック415)とを含み得る。たとえば、クライアントデバイス上で実行される要求生成モジュールが、クライアントデバイスに、コンテンツの第1の要求を生成させ、ネットワークを介してデータ処理システムのコンテンツ要求モジュールに送信させることができる。一部の実装において、コンテンツの第1の要求は、クライアントデバイスによって受信されるコンテンツアイテムの種類を示す1つまたは複数のパラメータを含む。コンテンツの第1の要求のパラメータは、要求されたコンテンツを挿入すべきコンテンツスロットのサイズを特定し得る。パラメータは、情報リソースに関連するコンテンツの種類、要求された第三者のコンテンツの種類(たとえば、テキスト、画像、ビデオなど)、クライアントデバイスの情報、要求された第三者のコンテンツアイテムに関するサイズ情報、クライアントデバイスに関連するネットワークの種類(たとえば、セルラーネットワーク、WiFiなど)、クライアントデバイスにおけるアプリケーションに関連するアプリケーションID、アプリケーションIDに関連する属性(たとえば、デバイスの設定、クライアントデバイスの種類など)、クライアントデバイス125の現在のもしくは過去の位置、またはこれらの組合せをさらに特定し得る。
方法400は、データ処理システムが第1のパラメータに基づいて第1のコンテンツアイテムを選択することを含み得る(ブロック420)。たとえば、コンテンツの第1の要求に応答して、データ処理システムのコンテンツ選択モジュールは、第1のコンテンツアイテムを選択するためにコンテンツの第1の要求内の受信されたパラメータを使用する。
方法400は、データ処理システムが第1のコンテンツアイテムをクライアントデバイスに送信すること(ブロック425)と、クライアントデバイスが第1のコンテンツアイテムを受信し、ローカルキャッシュに記憶すること(ブロック430)とを含み得る。たとえば、それから、第1のコンテンツアイテムが、アプリケーションによってその後取り出すためにローカルキャッシュにローカルに記憶され得る。たとえば、アプリケーションは、クライアントデバイスに第1のコンテンツアイテムを受信させ、(たとえば、コンテンツの第1の要求の要求識別子を第1のコンテンツアイテムに含まれる応答識別子とマッチングすることによって、またはコンテンツの第1の要求のコンテンツスロット識別子を第1のコンテンツアイテムに含まれるコンテンツスロット識別子とマッチングすることによって)第1のコンテンツアイテムがコンテンツの第1の要求に一致することを特定させるように構成された命令を含み得る。たとえば、コンテンツの第1の要求を送信する際、要求生成モジュールは、クライアントデバイスに、コンテンツの要求が目的とするコンテンツスロットのコンテンツスロット識別子を要求に含めさせることができる。そして今度は、コンテンツアイテム管理モジュールが、クライアントデバイスに、受信された第1のコンテンツアイテムのコンテンツスロット識別子を判定させることができ、識別子をその特定のコンテンツスロット識別子のために構成されるローカルキャッシュの構成とマッチングすることができる。マッチングされると、コンテンツアイテム管理モジュールは、クライアントデバイスに、一致するコンテンツスロット識別子を有するローカルキャッシュに受信された第1のコンテンツアイテムを記憶させることができる。
第1のコンテンツアイテムは、クライアントデバイスによってその後取り出すためにローカルキャッシュにローカルに記憶され得る。一部の実装において、ローカルキャッシュは、クライアントデバイス上で実行されるローカルキャッシュ管理モジュールがクライアントデバイスにローカルキャッシュ内の第1のコンテンツアイテムを削除させる前に所定の継続時間の間第1のコンテンツアイテム302を記憶するように構成される。一部の実装において、所定の継続時間は、望むとおりに構成可能であり、たとえば、20分に設定され得る。たとえば、所定の継続時間は、クライアントデバイス上で実行されるローカルキャッシュ管理モジュールがクライアントデバイスにローカルキャッシュに記憶された第1のコンテンツアイテムに付与させる鮮度スコアに基づくことができる。一部の実装において、スコアは、時間に基づくことができ(たとえば、第1のコンテンツアイテムがローカルキャッシュに長く記憶されればされるほど鮮度スコアは低くなる)、第1のコンテンツアイテムが含むデータの種類に基づくことができ、たとえば、ローカルにキャッシュされるコンテンツアイテムの鮮度スコアの下落率は、第1のコンテンツアイテムが含むデータの種類に基づいて異なることがある(たとえば、天気情報が相対的により長い時間ローカルキャッシュに記憶されることを許される一方、株価情報は株式の変動しやすい性質が原因で相対的に少ない時間を与えることがある)。一部の実装において、クライアントデバイス上で実行されるローカルキャッシュ管理モジュールは、クライアントデバイスに、第1のコンテンツアイテムの鮮度スコアをクライアントデバイスに記憶された閾値と比較することによってローカルキャッシュから第1のコンテンツアイテムを削除させる。たとえば、鮮度スコアが閾値以下である場合、第1のコンテンツアイテムが削除され得る。
方法400は、クライアントデバイスがアプリケーション内の第1のコンテンツスロットを検出すること(ブロック435)と、ローカルキャッシュから第1のコンテンツアイテムを取り出し、第1のコンテンツアイテムを表示すること(ブロック440)と、1つまたは複数の第2のパラメータを含むコンテンツの第2の要求を送信すること(ブロック445)とを含み得る。たとえば、クライアントデバイス上で実行されるコンテンツ管理モジュールが、クライアントデバイスにアプリケーション内の第1のコンテンツスロットの存在を検出させることができる。第1のコンテンツスロットは、第1のコンテンツスロット内に表示するコンテンツアイテムを受信するように構成されたアプリケーションの表示の中の位置を含み得る。第1のコンテンツスロットの検出に応答して、クライアントデバイス上で実行されるコンテンツ管理モジュールは、クライアントデバイスにローカルキャッシュから記憶された第1のコンテンツアイテムを取り出させ、クライアントデバイスによって表示するために第1のコンテンツスロットに第1のコンテンツアイテムを挿入させることができる。一部の実装において、ローカルキャッシュは、コンテンツの第1の要求に含まれるパラメータ、たとえば、第1のコンテンツスロットの識別子に対応するパラメータに対応する構成を含むように構成される。したがって、一部の実装において、ローカルキャッシュに記憶されたコンテンツアイテムは、第1のコンテンツスロットに適合するコンテンツアイテム(たとえば、第1のコンテンツスロットの識別子に一致するスロット識別子を含むコンテンツアイテム)であり得る。
クライアントデバイス上で実行されるコンテンツ管理モジュールは、クライアントデバイスに、ローカルキャッシュに記憶された第1のコンテンツアイテムを第1のコンテンツスロットに挿入させ、表示させることができる。一部の実装において、クライアントデバイス上で実行されるコンテンツ管理モジュールは、クライアントデバイスに、第1のコンテンツアイテムが第1のコンテンツスロット内に表示されるときにまたは表示されることに応じてローカルキャッシュから第1のコンテンツアイテムを削除させることができる。さらに、一部の実装においては、第1のコンテンツアイテムが第1のコンテンツスロット内に表示されるときにまたは表示されることに応じて、クライアントデバイス上で実行されるコンテンツ管理モジュールが、クライアントデバイスにコンテンツの第2の要求を送信させることができ、これは、上述のコンテンツの第1の要求の送信と同様であってよい。一部の実装において、コンテンツの第2の要求は、通常行われるようにコンテンツアイテムスロットの検出に応答する代わりに、第1のコンテンツスロットにおける第1のコンテンツアイテムの表示に応じて送信される。
方法400は、データ処理システムが第2のパラメータを含む第2の要求を受信すること(ブロック450)と、第2のパラメータに基づいて第2のコンテンツアイテムを選択すること(ブロック455)と、第2のコンテンツアイテムをクライアントデバイスに送信すること(ブロック460)とを含み得る。一部の実装において、コンテンツの第2の要求は、コンテンツの第1の要求のパラメータと同じまたは同様のパラメータを含み、したがって、コンテンツの第2の要求に応答してデータ処理システムから受信されるコンテンツアイテムは、第1のコンテンツアイテムと同様の特徴(たとえば、同様の対象、同様の視覚的特徴、同様のサイジングなど)を有することがある。一部の実装において、クライアントデバイスは、コンテンツの第1の要求をネットワークに送信するとき、コンテンツの第2の要求を送信するときに取り出すためにおよびコンテンツの第2の要求に関連して使用されるためにコンテンツの第1の要求に関連する1つまたは複数のパラメータを記憶することができる。一部の実装において、コンテンツの第1の要求の1つまたは複数のパラメータは、クライアントデバイスにおいて別個のメモリ要素に記憶され得る。
方法400は、クライアントデバイスが第2のコンテンツアイテムを受信し、ローカルキャッシュに記憶すること(ブロック465)を含み得る。要求に応答して、クライアントデバイス上で実行されるコンテンツ管理モジュールは、クライアントデバイスに(たとえば、ネットワークを介してデータ処理システムから)第2のコンテンツアイテムを受信させることができる。第2のコンテンツアイテムは、アプリケーションによって呼び出されるときに取り出されるプリフェッチされたコンテンツアイテムとしてローカルキャッシュに記憶される。コンテンツの第1の要求およびコンテンツの第2の要求が同じまたは同様のパラメータを含むので、第1のコンテンツアイテムおよび第2のコンテンツアイテムは同様の特徴を有することがある。たとえば、第1のコンテンツアイテムと第2のコンテンツアイテムとの両方が、同じコンテンツスロット(たとえば、コンテンツスロット)に適合する、同様の対象(たとえば、スポーツ、政治など)を対象とする、同じサイズを有する、ある種のユーザ(たとえば、男性、年配者、専門家など)を対象とする、これらの組合せなどであることがある。一部の実装において、コンテンツの要求のパラメータは、第1のコンテンツアイテムおよび第2のコンテンツアイテムがアプリケーションの同じセクションのテキストおよび外観にシームレスに統合され得るようにアプリケーションの表示の環境のテキストのおよび視覚的なコンテンツに基づく。
方法400は、クライアントデバイスがアプリケーション内の第2のコンテンツスロットを検出すること(ブロック470)と、ローカルキャッシュから第2のコンテンツアイテムを取り出し、第2のコンテンツアイテムを表示すること(ブロック475)と、1つまたは複数の第3のパラメータを含むコンテンツの第3の要求を送信すること(ブロック480)とを含み得る。したがって、方法400は、コンテンツアイテムをプリフェッチし、クライアントデバイスにおいて表示するためにコンテンツアイテムをローカルに記憶するプロセスを、終了条件が満たされるまで継続し得る。
したがって、方法400は、コンテンツアイテムが必要とされるときにクライアントデバイスがネットワークを介してデータ処理システムと通信しなければならないのとは対照的に、プリフェッチされたコンテンツアイテムがクライアントデバイスによってローカルで比較的迅速にアクセスされ得るように、クライアントデバイスによってその後使用するためにコンテンツアイテムをプリフェッチすることを提供する。したがって、クライアントデバイスにおいてコンテンツアイテムを表示する際のレイテンシーが、削減され得る。さらに、たとえば、ローカルキャッシュに記憶されるコンテンツアイテムが削除される前の関連する有効継続時間(たとえば、20分)を有することができるので、コンテンツの相対的な鮮度が、コンテンツのプリフェッチにもかかわらず維持され得る。
図5は、一部の実装に従って(システム110、ならびにコンテンツ要求モジュール130、コンテンツ選択モジュール135、およびスクリプトプロバイダモジュール140などのシステム110の構成要素、またはクライアントデバイス125を含む)本明細書において検討されるコンピュータシステムのいずれかを実装するために使用され得る例示的なコンピュータシステム500の全体的なアーキテクチャを示す。コンピュータシステム500は、表示するためにネットワーク105を介して情報を与えるために使用され得る。図5のコンピュータシステム500は、メモリ525と通信可能なように結合された1つまたは複数のプロセッサ520、1つまたは複数の通信インターフェース505、ならびに1つまたは複数の出力デバイス510 (たとえば、1つまたは複数のディスプレイユニット)および1つまたは複数の入力デバイス515を含む。プロセッサ520は、データ処理システム110、またはコンテンツ要求モジュール130およびコンテンツ選択モジュール135などのシステム110のその他の構成要素に含まれ得る。
図5のコンピュータシステム500において、メモリ525は、任意のコンピュータ可読ストレージ媒体を含むことがあり、それぞれのシステムのための本明細書において説明される様々な機能を実装するためのプロセッサが実行可能な命令などのコンピュータ命令と、それらのシステムに関連する、それらのシステムによって生成される、または通信インターフェースもしくは入力デバイスを介して受信される任意のデータ(もしあれば)とを記憶してもよい。図1のシステム110を再び参照すると、データ処理システム110は、とりわけ、1つまたは複数のコンテンツユニットのインベントリの可用性、1つまたは複数のコンテンツユニットの予約に関連する情報を記憶するためのメモリ525を含み得る。メモリ525は、データベース145を含み得る。図5に示されたプロセッサ520は、メモリ525に記憶された命令を実行するために使用され、そのようにする際に、命令の実行によって処理および/または生成された様々な情報をメモリから読むかまたはメモリに書き込むことができる。
図5に示されたコンピュータシステム500のプロセッサ520は、命令の実行によって様々な情報を送信または受信するための通信インターフェース505に通信可能なように結合されるかまたは通信インターフェース505を制御することできる。たとえば、通信インターフェース505は、有線もしくはワイヤレスネットワーク、バス、またはその他の通信手段に結合され、したがって、コンピュータシステム500がその他のデバイス(たとえば、その他のコンピュータシステム)に情報を送信するかまたはその他のデバイス(たとえば、その他のコンピュータシステム)から情報を受信することを可能にし得る。図1のシステムに明示されていないが、1つまたは複数の通信インターフェースが、システム500の構成要素の間の情報の流れを促進する。一部の実装において、通信インターフェースは、コンピュータシステム500の少なくとも一部の態様にウェブサイトをアクセスポータルとして提供するように(たとえば、様々なハードウェア構成要素またはソフトウェア構成要素によって)構成され得る。通信インターフェース505の例は、ユーザがデータ処理システム110と通信し得るユーザインターフェース(たとえば、ウェブページ)を含む。
図5に示されたコンピュータシステム500の出力デバイス510は、たとえば、命令の実行に関連して様々な情報が見られるかまたはその他の方法で知覚されることを可能にするために提供され得る。入力デバイス515は、たとえば、ユーザが命令の実行中に手動の調整を行うか、選択を行うか、データを入力するか、またはプロセッサと様々な方法のいずれかでインタラクションすることを可能にするために提供され得る。本明細書において検討される様々なシステムのために使用され得る通常のコンピュータシステムのアーキテクチャに関連する追加的な情報が、本明細書においてさらに提供される。
本明細書に記載の対象の実装および動作は、本明細書で開示される構造およびそれらの構造的均等物を含むデジタル電子回路、または有形の媒体上に具現化されたコンピュータソフトウェア、ファームウェア、もしくはハードウェア、またはそれらのうちの1つもしくは複数の組合せで実装され得る。本明細書に記載の対象の実装は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置による実行のために、またはデータ処理装置の動作を制御するためにコンピュータストレージ媒体上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。プログラム命令は、データ処理装置による実行のために好適な受信機装置に送信するために情報を符号化するように生成される人為的に生成された伝播信号、たとえば、機械によって生成された電気的信号、光学的信号、または電磁的信号上に符号化され得る。コンピュータストレージ媒体は、コンピュータ可読ストレージデバイス、コンピュータ可読ストレージ基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはこれらのうちの1つもしくは複数の組合せであるか、あるいはこれらに含まれる得る。さらに、コンピュータストレージ媒体は、伝播信号ではないが、人為的に生成された伝播信号に符号化されたコンピュータプログラム命令の送信元または送信先を含み得る。コンピュータストレージ媒体は、1つまたは複数の別個の物理的構成要素または媒体(たとえば、複数のCD、ディスク、もしくはその他のストレージデバイス)であるか、またはこれらに含まれ得る。
本明細書において開示された特徴は、インターネット接続性を(たとえば、ケーブル、衛星、電波、またはその他の信号によって受け取られる)より旧来型のテレビ番組のソースと統合するように構成された処理モジュールを含み得るスマートテレビモジュール(またはコネクテッドテレビモジュール(connected television module)、ハイブリッドテレビモジュールなど)上に実装されてよい。スマートテレビモジュールは、テレビセットに物理的に組み込まれてよく、またはセットトップボックス、ブルーレイもしくはその他のデジタルメディアプレイヤー、ゲームコンソール、ホテルのテレビシステム、およびその他のコンパニオンデバイス(companion device)などの別個のデバイスを含ことができる。スマートテレビモジュールは、ウェブ、ローカルケーブルTVチャンネル、衛星TVチャンネルの、またはローカルのハードドライブに記憶されたビデオ、ムービー、写真、およびその他のコンテンツを視聴者が検索し、見つけることを可能にするように構成され得る。セットトップボックス(STB)またはセットトップユニット(STU)は、チューナを含み、テレビセットおよび信号の外部ソースに接続し得る情報家電デバイスを含んでよく、信号をコンテンツに変換し、そして、そのコンテンツが、テレビのスクリーンまたはその他のディスプレイデバイス上に表示される。スマートテレビモジュールは、ウェブブラウザおよび複数のストリーミングメディアサービスなどの複数の異なるアプリケーション、接続されたケーブルまたは衛星媒体のソース、その他のウェブ「チャンネル」などに関するアイコンを含むホーム画面または最上位の画面を提供するように構成され得る。スマートテレビモジュールは、ユーザに電子番組ガイドを提供するようにさらに構成され得る。スマートテレビモジュールに対するコンパニオンアプリケーション(companion application)は、利用可能な番組についての追加的な情報をユーザに提供すること、ユーザがスマートテレビモジュールを制御することを可能にすることなどのためにモバイルコンピューティングデバイス上で動作し得る。代替的な実装において、特徴は、ラップトップコンピュータもしくはその他のパーソナルコンピュータ、スマートフォン、その他のモバイル電話、ハンドヘルドコンピュータ、タブレットPC、またはその他のコンピューティングデバイス上に実装される得る。
本明細書に記載の動作は、1つもしくは複数のコンピュータ可読ストレージデバイスに記憶された、またはその他のソースから受信されたデータに対してデータ処理装置によって実行される動作として実装され得る。
用語「データ処理装置」、「データ処理システム」、「ユーザデバイス」、または「コンピューティングデバイス」は、例として、1つのプログラミング可能なプロセッサ、1台のコンピュータ、1つのシステムオンチップ、またはこれらの複数もしくは組合せを含む、データを処理するためのすべての種類の装置、デバイス、および機械を包含する。装置は、専用の論理回路、たとえば、FPGA (フィールドプログラマブルゲートアレイ)またはASIC (特定用途向け集積回路)を含み得る。装置は、ハードウェアに加えて、問題にしているコンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサのファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、またはこれらのうちの1つもしくは複数の組合せを構成するコードも含み得る。装置および実行環境は、ウェブサービスインフラストラクチャ、分散コンピューティングインフラストラクチャ、およびグリッドコンピューティングインフラストラクチャなどの様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。コンテンツ要求モジュール130およびコンテンツ選択モジュール135は、1つまたは複数のデータ処理装置、コンピューティングデバイス、またはプロセッサを含むかまたは共有することができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られる)は、コンパイラ型言語もしくはインタープリタ型言語、宣言型言語もしくは手続き型言語を含む任意の形態のプログラミング言語で記述可能であり、独立型プログラムとしての形態、またはモジュール、コンポーネント、サブルーチン、オブジェクト、もしくはコンピューティング環境内での使用に好適なその他の単位としての形態を含む任意の形態で展開され得る。コンピュータプログラムは、ファイルシステム内のファイルに対応する場合があるが、必ずそうであるとは限らない。プログラムは、その他のプログラムもしくはデータを保持するファイルの一部(たとえば、マークアップ言語の文書に記憶された1つもしくは複数のスクリプト)、問題にしているプログラムに専用の単一のファイル、または複数の連携されたファイル(たとえば、1つもしくは複数のモジュール、サブプログラム、もしくはコードの一部を記憶するファイル)に記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、または1つの場所に置かれるか、もしくは複数の場所に分散され、通信ネットワークによって相互に接続される複数のコンピュータ上で実行されるように展開され得る。
本明細書に記載のプロセスおよび論理フローは、入力データに対して演算を行い、出力を生成することによってアクションを行うために1つまたは複数のコンピュータプログラムを1つまたは複数のプログラミング可能なプロセッサが実行することによって実行され得る。また、プロセスおよび論理フローは、専用の論理回路、たとえば、FPGA (フィールドプログラマブルゲートアレイ)またはASIC (特定用途向け集積回路)によって実行されることができ、さらに、装置は、それらの専用の論理回路として実装され得る。
コンピュータプログラムの実行に好適なプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサとの両方、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。概して、プロセッサは、読み出し専用メモリ、またはランダムアクセスメモリ、またはこれらの両方から命令およびデータを受け取る。コンピュータの必須の要素は、命令に従ってアクションを実行するためのプロセッサ、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。また、概してコンピュータは、データを記憶するための1つまたは複数の大容量ストレージデバイス、たとえば、磁気ディスク、光磁気ディスク、もしくは光ディスクを含むか、またはこれらの大容量ストレージデバイスからデータを受信するか、もしくはこれらの大容量ストレージデバイスにデータを転送するか、もしくはそれら両方を行うために動作可能なように結合される。しかし、コンピュータは、そのようなデバイスを備えていなくてもよい。さらに、たとえば、コンピュータは、別のデバイス、たとえば、モバイル電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレイヤー、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブルストレージデバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)に組み込まれ得る。コンピュータプログラム命令およびデータを記憶するのに好適なデバイスは、例として、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば、内蔵ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD-ROMディスクおよびDVD-ROMディスクを含む、すべての形態の不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、専用の論理回路によって補完されるか、または専用の論理回路に組み込まれ得る。
ユーザとのインタラクションを行うために、本明細書に記載の対象の実装は、ユーザに対して情報を表示するためのディスプレイデバイス、たとえば、CRT (ブラウン管)、プラズマ、またはLCD (液晶ディスプレイ)モニタ、ならびにユーザがコンピュータに入力を与えることができるキーボードおよびポインティングデバイス、たとえば、マウスまたはトラックボールを有するコンピュータ上に実装され得る。その他の種類のデバイスが、ユーザとのインタラクションを行うためにやはり使用され得、たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば、視覚的フィードバック、聴覚的フィードバック、または触覚的フィードバックを含むことができ、ユーザからの入力は、音響、発話、または触覚による入力を含む任意の形態で受け取られる得る。加えて、コンピュータは、ユーザによって使用されるデバイスにドキュメントを送信し、そのデバイスからドキュメントを受信することによって、たとえば、ウェブブラウザから受信された要求に応答してユーザのクライアントデバイス上のウェブブラウザにウェブページを送信することによってユーザとインタラクションすることができる。
本明細書に記載の対象の実装は、バックエンド構成要素を、たとえば、データサーバとして含むか、またはミドルウェア構成要素、たとえば、アプリケーションサーバを含むか、またはフロントエンド構成要素、たとえば、ユーザが本明細書に記載の対象の実装とインタラクションすることができるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータを含むか、または1つもしくは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、もしくはフロントエンド構成要素の任意の組合せを含むコンピューティングシステムに実装され得る。システムの構成要素は、任意の形態または媒体のデジタルデータ通信、たとえば、通信ネットワークによって相互に接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、ならびにピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
システム500またはシステム110などのコンピューティングシステムは、クライアントおよびサーバを含み得る。たとえば、データ処理システム110は、1つまたは複数のデータセンターまたはサーバファーム内の1つまたは複数のサーバを含み得る。クライアントおよびサーバは、概して互いに離れており、通常は通信ネットワークを通じてインタラクションする。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行されており、互いにクライアント-サーバの関係にあるコンピュータプログラムによって生じる。一部の実装において、サーバは、(たとえば、クライアントデバイスとインタラクションするユーザに対してデータを表示し、そのようなユーザからユーザ入力を受信する目的で)クライアントデバイスにデータ(たとえば、HTMLページ)を送信する。クライアントデバイスにおいて生成されたデータ(たとえば、ユーザのインタラクションの結果)が、サーバにおいてクライアントデバイスから受信され得る。
本明細書は多くの特定の実装の詳細を含むが、これらは、いかなる発明の範囲または特許請求され得るものの範囲に対する限定とも見なされるべきでなく、むしろ、本明細書において説明されたシステムおよび方法の特定の実装に固有の特徴の説明と見なされるべきである。別々の実装に関連して本明細書に記載されている特定の特徴が、単一の実装に組み合わせて実装され得る。反対に、単一の実装に関連して説明されている様々な特徴が、複数の実装に別々に、または任意の適切な部分的組合せで実装され得る。さらに、特徴は、特定の組合せで動作するものとして上で説明されている場合があり、最初にそのように主張されてさえいる場合があるが、主張された組合せの1つまたは複数の特徴は、場合によっては組合せから削除され得、主張された組合せは、部分的組合せ、または部分的組合せの変形を対象とすることがある。
同様に、動作が図中に特定の順序で示されているが、これは、そのような動作が示された特定の順序でもしくは逐次的順序で実行されること、または所望の結果を達成するために示されたすべての動作が実行されることを必要とするものと理解されるべきでない。場合によっては、請求項に挙げられたアクションは、異なる順序で実行され、それでも所望の結果を達成することができる。加えて、添付の図面に示されたプロセスは、所望の結果を達成するために、必ずしも、示された特定の順序または逐次的順序である必要はない。
特定の状況においては、マルチタスクおよび並列処理が有利であることがある。さらに、上述の実装における様々なシステム構成要素の分割は、すべての実装においてそのような分割を必要とするものと理解されるべきでなく、説明されたプログラム構成要素およびシステムは、概して、単一のソフトウェア製品に一緒に統合されるか、または複数のソフトウェア製品にパッケージングされ得ることが理解されるべきである。たとえば、コンテンツ要求モジュール130およびコンテンツ選択モジュール135は、データ処理システム110の一部、単一のモジュール、1つもしくは複数の処理モジュールを有する論理デバイス、1つまたは複数のサーバ、あるいは検索エンジンの一部であってよい。
ここにいくつかの例示的な実装および実装を説明したが、以上は例示的であり、限定的でなく、例として提示されたことは明らかである。特に、本明細書において提示された例の多くは方法の行為またはシステムの要素の特定の組合せを含むが、それらの行為およびそれらの要素は、同じ目的を達成するためにその他の方法で組み合わされ得る。1つの実装にのみ関連して検討された行為、要素、および特徴は、その他の実装または実装において同様の役割から除外されるように意図されていない。
本明細書において使用された語法および術語は、説明を目的としており、限定と見なされるべきでない。本明細書における「〜を含む(including)」、「〜を含む(comprising)」、「〜を有する」、「〜を含む(containing)」、「〜を含む(involving)」、「〜によって特徴付けられる(characterized by)」、「〜ことを特徴とする(characterized in that)」、およびこれらの変化形の使用は、その後に列挙された項目、それらの項目の均等物、および追加的な項目、ならびにその後に列挙された項目だけからなる代替的な実装を包含するように意図される。1つの実装において、本明細書に記載のシステムおよび方法は、説明された要素、行為、または構成要素のうちの1つ、2つ以上のそれぞれの組合せ、またはすべてからなる。
本明細書において単数形で言及されたシステムおよび方法の実装または要素または行為へのすべての言及は、複数のこれらの要素を含む実装も包含してよく、本明細書における任意の実装または要素または行為への複数形のすべての言及は、単一の要素のみを含む実装も包含してよい。単数形または複数形の言及は、ここに開示されたシステムもしくは方法、それらの構成要素、行為、または要素を単一のまたは複数の構成に限定するように意図されていない。任意の情報、行為、または要素に基づいている任意の行為または要素への言及は、行為または要素が任意の情報、行為、または要素に少なくとも部分的に基づく実装を含み得る。
本明細書において開示された任意の実装は、任意のその他の実装と組み合わされてよく、「実装」、「いくつかの実装」、「代替的な実装」、「様々な実装」、「1つの実装」などの言及は、必ずしも相互排他的ではなく、実装に関連して説明された特定の特徴、構造、または特色が少なくとも1つの実装に含まれ得ることを示すように意図される。本明細書において使用されるそのような用語は、必ずしもすべてが同じ実装に言及していない。任意の実装は、本明細書において開示された態様および実装に合致する任意の方法で包括的または排他的に任意のその他の実装と組み合わされてよい。
「または(or)」との言及は、「または(or)」を使用して記載された任意の項が記載された項のうちの1つ、2つ以上、およびすべてのいずれかを示すように包括的であると見なされ得る。
図面、詳細な説明、または任意の請求項の技術的な特徴が後に参照符号が付されている場合、参照符号は、図面、詳細な説明、および請求項の理解しやすさを高めることのみを目的として含められたものである。したがって、参照符号があることもないことも、いかなる請求項の要素の範囲に対してのいかなる限定的な効果も持たない。
本明細書に記載のシステムおよび方法は、それらの特徴を逸脱することなくその他の特定の形態で具現化されてよい。本明細書において提供された例は情報リソースの表示を制御することに関するが、本明細書において説明されたシステムおよび方法は、その他の環境に適用され得る。上述の実装は、説明されたシステムおよび方法の限定ではなく、例示的である。したがって、本明細書に記載のシステムおよび方法の範囲は、上述の説明ではなく添付の請求項によって示され、請求項の均等の意味および範囲内に入る変更は、それに包含される。