(57)【特許請求の範囲】
【請求項１】
ユーザによるアクセスのためにニュース・フィード上に提示されるようにスケジュールされた第１のコンテンツ・アイテムを識別する工程であって、前記ニュース・フィードは、クライアント・デバイスのディスプレイ上に提示される、工程と、
前記第１のコンテンツ・アイテムに対する第１の優先度を決定する工程と、
前記第１のコンテンツ・アイテムが前記ユーザによるアクセスのために前記ニュース・フィード上に提示される前に、前記第１の優先度に基づいて、前記第１のコンテンツ・アイテムの少なくとも一部を第１のコンテンツ・サーバから前記クライアント・デバイスに対して事前ダウンロードする工程であって、事前ダウンロードされる前記第１のコンテンツ・アイテムの量は、前記第１の優先度に基づく、工程と、
前記ユーザによるアクセスのために前記ニュース・フィード上に提示されるようにスケジュールされた第２のコンテンツ・アイテムを識別する工程と、
前記第２のコンテンツ・アイテムに対する第２の優先度を決定する工程であって、前記第２の優先度は、前記第１の優先度よりも高い優先度である、工程と、
前記第１のコンテンツ・アイテムの前記少なくとも一部を前記第１のコンテンツ・サーバから前記クライアント・デバイスに対して前記事前ダウンロードする前に、前記第２の優先度に基づいて、前記第２のコンテンツ・アイテムの少なくとも一部を第２のコンテンツ・サーバから前記クライアント・デバイスに対して事前ダウンロードする工程であって、前記第２の優先度は、前記第１の優先度よりも高い優先度である、工程と、
前記ユーザによるアクセスのために前記ニュース・フィード上に前記第２のコンテンツ・アイテムを提示する工程であって、前記第２のコンテンツ・アイテムは、前記ニュース・フィード上において、前記第１のコンテンツ・アイテムが可視状態になるよりも前に前記ユーザにとって可視状態になるように提示される、工程と、を備えるコンピュータによる実施方法。
【請求項２】
前記第１のコンテンツ・アイテムの前記少なくとも一部が前記クライアント・デバイスに対して事前ダウンロードされた後に、前記ニュース・フィード上に前記第１のコンテンツ・アイテムを提示する工程をさらに備える、請求項１に記載のコンピュータによる実施方法。
【請求項３】
前記第１の優先度を決定する前記工程は、前記第１のコンテンツ・アイテムが前記ユーザにとって可視であるときに自動再生されるか否かに基づく、請求項１に記載のコンピュータによる実施方法。
【請求項４】
前記第１の優先度を決定する前記工程は、前記第１のコンテンツ・アイテムが広告に関連付けられているか否かに基づく、請求項１に記載のコンピュータによる実施方法。
【請求項５】
前記第１の優先度を決定する前記工程は、前記ユーザのプリファレンスに基づく、請求項１に記載のコンピュータによる実施方法。
【請求項６】
前記第１の優先度を決定する前記工程は、前記クライアント・デバイスのリソースの可用性に基づく、請求項１に記載のコンピュータによる実施方法。
【請求項７】
前記第１の優先度を前記決定する工程は、前記第１のコンテンツ・アイテムのコンテンツ・タイプに基づく、請求項１に記載のコンピュータによる実施方法。
【請求項８】
前記第１の優先度を決定する前記工程は、前記第１のコンテンツ・アイテムのメタデータに基づく、請求項１に記載のコンピュータによる実施方法。
【請求項９】
前記第１の優先度を決定する前記工程は、前記第１のコンテンツ・アイテムに関連付けられているソーシャル・ネットワーキング情報に基づく、請求項１に記載のコンピュータによる実施方法。
【請求項１０】
前記ソーシャル・ネットワーキング情報は、ソーシャル・ネットワーク上のソーシャル・ネットワーク・ユーザによる前記第１のコンテンツ・アイテムの「いいね」の量を含む、請求項９に記載のコンピュータによる実施方法。
【請求項１１】
前記ソーシャル・ネットワーキング情報は、ソーシャル・ネットワーク上のソーシャル・ネットワーク・ユーザによる前記第１のコンテンツ・アイテムの共有の量を含む、請求項９に記載のコンピュータによる実施方法。
【請求項１２】
前記ソーシャル・ネットワーキング情報は、ソーシャル・ネットワーク上のソーシャル・ネットワーク・ユーザによる前記第１のコンテンツ・アイテムに関連付けられているコメントの量を含む、請求項９に記載のコンピュータによる実施方法。
【請求項１３】
前記ソーシャル・ネットワーキング情報は、ソーシャル・ネットワーク上の前記第１のコンテンツ・アイテムに対して「いいね」を表明した１以上のソーシャル・ネットワーク・ユーザを識別する、請求項９に記載のコンピュータによる実施方法。
【請求項１４】
前記ソーシャル・ネットワーキング情報は、ソーシャル・ネットワーク上の前記第１のコンテンツ・アイテムを共有した１以上のソーシャル・ネットワーク・ユーザを識別する、請求項９に記載のコンピュータによる実施方法。
【請求項１５】
前記ソーシャル・ネットワーキング情報は、ソーシャル・ネットワーク上の前記第１のコンテンツ・アイテムに対してコメントした１以上のソーシャル・ネットワーク・ユーザを識別する、請求項９に記載のコンピュータによる実施方法。
【請求項１６】
前記ニュース・フィードは、ソーシャル・ネットワークに関係する、請求項１に記載のコンピュータによる実施方法。
【請求項１７】
少なくとも１つのプロセッサと、
命令を記憶したメモリと、を備え、前記命令は、前記少なくとも１つのプロセッサに、
ユーザによるアクセスのためにニュース・フィード上に提示されるようにスケジュールされた第１のコンテンツ・アイテムを識別する工程であって、前記ニュース・フィードは、クライアント・デバイスのディスプレイ上に提示される、工程と、
前記第１のコンテンツ・アイテムに対する第１の優先度を決定する工程と、
前記第１のコンテンツ・アイテムが前記ユーザによるアクセスのために前記ニュース・フィード上に提示される前に、前記第１の優先度に基づいて、前記第１のコンテンツ・アイテムの少なくとも一部を第１のコンテンツ・サーバから前記クライアント・デバイスに対して事前ダウンロードする工程であって、事前ダウンロードされる前記第１のコンテンツ・アイテムの量は、前記第１の優先度に基づく、工程と、
前記ユーザによるアクセスのために前記ニュース・フィード上に提示されるようにスケジュールされた第２のコンテンツ・アイテムを識別する工程と、
前記第２のコンテンツ・アイテムに対する第２の優先度を決定する工程であって、前記第２の優先度は、前記第１の優先度よりも高い優先度である、工程と、
前記第１のコンテンツ・アイテムの前記少なくとも一部を前記第１のコンテンツ・サーバから前記クライアント・デバイスに対して前記事前ダウンロードする前に、前記第２の優先度に基づいて、前記第２のコンテンツ・アイテムの少なくとも一部を第２のコンテンツ・サーバから前記クライアント・デバイスに対して事前ダウンロードする工程であって、前記第２の優先度は、前記第１の優先度よりも高い優先度である、工程と、
前記ユーザによるアクセスのために前記ニュース・フィード上に前記第２のコンテンツ・アイテムを提示する工程であって、前記第２のコンテンツ・アイテムは、前記ニュース・フィード上において、前記第１のコンテンツ・アイテムが可視状態になるよりも前に前記ユーザにとって可視状態になるように提示される、工程と、を行うように構成される、コンピュータ・システム。
【請求項１８】
コンピュータ実行可能な命令を記憶したコンピュータ記憶媒体であって、前記コンピュータ実行可能な命令は、実行されたとき、
ユーザによるアクセスのためにニュース・フィード上に提示されるようにスケジュールされた第１のコンテンツ・アイテムを識別する工程であって、前記ニュース・フィードは、クライアント・デバイスのディスプレイ上に提示される、工程と、
前記第１のコンテンツ・アイテムに対する第１の優先度を決定する工程と、
前記第１のコンテンツ・アイテムが前記ユーザによるアクセスのために前記ニュース・フィード上に提示される前に、前記第１の優先度に基づいて、前記第１のコンテンツ・アイテムの少なくとも一部を第１のコンテンツ・サーバから前記クライアント・デバイスに対して事前ダウンロードする工程であって、事前ダウンロードされる前記第１のコンテンツ・アイテムの量は、前記第１の優先度に基づく、工程と、
前記ユーザによるアクセスのために前記ニュース・フィード上に提示されるようにスケジュールされた第２のコンテンツ・アイテムを識別する工程と、
前記第２のコンテンツ・アイテムに対する第２の優先度を決定する工程であって、前記第２の優先度は、前記第１の優先度よりも高い優先度である、工程と、
前記第１のコンテンツ・アイテムの前記少なくとも一部を前記第１のコンテンツ・サーバから前記クライアント・デバイスに対して前記事前ダウンロードする前に、前記第２の優先度に基づいて、前記第２のコンテンツ・アイテムの少なくとも一部を第２のコンテンツ・サーバから前記クライアント・デバイスに対して事前ダウンロードする工程であって、前記第２の優先度は、前記第１の優先度よりも高い優先度である、工程と、
前記ユーザによるアクセスのために前記ニュース・フィード上に前記第２のコンテンツ・アイテムを提示する工程であって、前記第２のコンテンツ・アイテムは、前記ニュース・フィード上において、前記第１のコンテンツ・アイテムが可視状態になるよりも前に前記ユーザにとって可視状態になるように提示される、工程と、を備えるコンピュータにより実施される方法をコンピュータ・システムに行わせる、記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、デジタル・コンテンツに関し、詳細には、サーバからクライアントに対してストリーミングされるデジタル・コンテンツをダウンロードすることに関する。
【背景技術】
【０００２】
ソーシャル・ネットワークは、その様々な機能によって、たとえば、テキスト、ビデオ、音声、プレゼンテーション、または画像を含むマルチメディア・コンテンツを含む様々なデジタル・コンテンツに対するアクセスを提供する。これらおよび他の形態のデジタル・コンテンツ（以下「コンテンツ」と呼ばれる）は、ソーシャル・ネットワーク・ユーザが、たとえば、電子メッセージング、チャット・ルーム、投稿、およびメッセージ・ボードを通じて互いに通信することを可能にする。ユーザは、しばしば、クライアント・デバイス、たとえば、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピューティング・デバイス、またはデータ対応携帯電話などで動作しているスタンドアロン・アプリケーション（たとえば、ソーシャル・ネットワークに対する専用のモバイル・アプリケーション、またはソーシャル・ネットワークのウェブ・ページにアクセスすることができるウェブ・ブラウザ）を通じて、ソーシャル・ネットワークおよびそれらに関連付けられているコンテンツにアクセスする。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
一般的に、ソーシャル・ネットワークによって提供されたコンテンツに対するアクセスをユーザが要求すると、スタンドアロン・アプリケーションを通じたコンテンツに対するアクセスを円滑にするために、要求されたコンテンツを全てまたは部分的にクライアント・デバイスに対してダウンロードする。ソーシャル・ネットワークがそれらのコンテンツのクライアント・デバイスに対するデータ転送のためにコンピュータ・ネットワークを利用することが多いという事実に部分的に起因し、コンテンツに対するアクセスは、コンピュータ・ネットワークの状態（たとえば、クライアント・デバイスのネットワーク接続速度）に応じて遅延されるまたは非効率になることがある。これは、コンテンツがクライアント・デバイスに対してストリーミングされているときにコンテンツがクライアント・デバイスでアクセスされている場合、特に問題となり得る。
【課題を解決するための手段】
【０００４】
いくつかの実施形態によれば、システムおよび方法ならびにコンピュータ可読媒体は、ユーザによるアクセスのためにニュース・フィード上に提示されるようにスケジュールされた第１のコンテンツ・アイテムを識別し、ニュース・フィードは、クライアント・デバイスのディスプレイ上に提示されるものである。システムおよび方法は、第１のコンテンツ・アイテムに対する第１の優先度を決定することができる。第１のコンテンツ・アイテムがユーザによるアクセスのためにニュース・フィード上に提示される前に、システムおよび方法は、第１の優先度に基づいて、第１のコンテンツ・アイテムの少なくとも一部を第１のコンテンツ・サーバからクライアント・デバイスに対して事前ダウンロードすることができる。本明細書で使用される場合、ニュース・フィード上に提示されるようにスケジューリングされたコンテンツ・アイテムは、ニュース・フィードに対してまだ追加されていない、以前にニュース・フィードから除去された後にニュース・フィードに対してまだ再追加されていない、ニュース・フィードに対して既に追加されているがニュース・フィードを通じてユーザによってまだ閲覧されていない、またはニュース・フィードを通じてユーザによって少なくとも一度は既に閲覧されているが現在はユーザのビュー内（見え
るところ）にない、ニュース・アイテム（以下「ニュース投稿」）に含まれるアイテムであり得る。
【０００５】
いくつかの実施形態では、システムおよび方法は、第１のコンテンツ・アイテムの少なくとも一部がクライアント・デバイスに対して事前ダウンロードされた後に、ニュース・フィード上に第１のコンテンツ・アイテムを提示する。
【０００６】
いくつかの実施形態では、システムおよび方法は、ユーザによるアクセスのためにニュース・フィード上に提示されるようにスケジュールされた第２のコンテンツ・アイテムを識別する。システムおよび方法は、第２のコンテンツ・アイテムに対する第２の優先度を決定することができる。第１のコンテンツ・アイテムの少なくとも一部を第１のコンテンツ・サーバからクライアント・デバイスに対して事前ダウンロードする前に、システムおよび方法は、第２の優先度に基づいて、第２のコンテンツ・アイテムの少なくとも一部を第２のコンテンツ・サーバからクライアント・デバイスに対して事前ダウンロードすることができ、第２の優先度は、第１の優先度よりも高い優先度である。
【０００７】
いくつかの実施形態では、システムおよび方法は、ユーザによるアクセスのためにニュース・フィード上に第２のコンテンツ・アイテムを提示する。
いくつかの実施形態では、第１の優先度を決定することは、第１のコンテンツ・アイテムがユーザにとって可視であるときに自動再生されるか否かに基づく。
【０００８】
いくつかの実施形態では、第１の優先度を決定することは、第１のコンテンツ・アイテムが広告に関連付けられているか否かに基づく。
いくつかの実施形態では、第１の優先度を決定することは、ユーザのプリファレンスに基づく。
【０００９】
いくつかの実施形態では、第１の優先度を決定することは、クライアント・デバイスのリソースの可用性に基づく。
いくつかの実施形態では、第１の優先度を決定することは、第１のコンテンツ・アイテムのコンテンツ・タイプに基づく。
【００１０】
いくつかの実施形態では、第１の優先度を決定することは、第１のコンテンツ・アイテムのメタデータに基づく。
いくつかの実施形態では、第１の優先度を決定することは、第１のコンテンツ・アイテムに関連付けられているソーシャル・ネットワーキング情報に基づく。ソーシャル・ネットワーキング情報は、ソーシャル・ネットワーク上のソーシャル・ネットワーク・ユーザによる第１のコンテンツ・アイテムの「いいね」の量を備えることができる。ソーシャル・ネットワーキング情報は、ソーシャル・ネットワーク上のソーシャル・ネットワーク・ユーザによる第１のコンテンツ・アイテムの共有の量を備えることができる。ソーシャル・ネットワーキング情報は、ソーシャル・ネットワーク上のソーシャル・ネットワーク・ユーザによる第１のコンテンツ・アイテムに関連付けられているコメントの量を備えることができる。
【００１１】
いくつかの実施形態では、ソーシャル・ネットワーキング情報は、ソーシャル・ネットワーク上の第１のコンテンツ・アイテムに対して「いいね」を表明している１または複数のソーシャル・ネットワーク・ユーザを識別する。
【００１２】
いくつかの実施形態では、ソーシャル・ネットワーキング情報は、ソーシャル・ネットワーク上の第１のコンテンツ・アイテムを共有している１または複数のソーシャル・ネットワーク・ユーザを識別する。
【００１３】
いくつかの実施形態では、ソーシャル・ネットワーキング情報は、ソーシャル・ネットワーク上の第１のコンテンツ・アイテムに対してコメントしている１または複数のソーシャル・ネットワーク・ユーザを識別する。
【００１４】
いくつかの実施形態では、ニュース・フィードは、ソーシャル・ネットワークに関係する。
本発明の多くの他の特徴および実施形態は、添付の図面および以下の発明を実施するための形態から明らかであろう。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態による、例示的な中間コンテンツ・ストリーミング・システムおよび例示的な優先度ベースのコンテンツ・ダウンロード・システムを示す図。
【図２】本発明の実施形態による例示的な中間コンテンツ・ストリーミング・システムを示す図。
【図３】本発明の実施形態による例示的な優先度ベースのコンテンツ・ダウンロード・システムを示す図。
【図４】本発明の実施形態に従って使用される例示的なニュース・フィードを示す図。
【図５】本発明の実施形態による中間コンテンツ・ストリーミングのための例示的なプロセスを示す図。
【図６】本発明の実施形態による優先度ベースのコンテンツ・ダウンロードのための例示的なプロセスを示す図。
【図７】本発明の実施形態による、ソーシャル・ネットワーキング環境における中間コンテンツ・ストリーミングおよび優先度ベースのコンテンツ・ダウンロードのためのシステムのネットワーク図の例を示す図。
【図８】本発明の実施形態によるコンピュータ・システムの図。
【発明を実施するための形態】
【００１６】
図は単に例示のために本発明の様々な実施形態を示し、図において同様の要素を識別するために同様の参照番号を使用する。本明細書に説明される本発明の原理から逸脱することなく、図に示される構造および方法の代替実施形態が使用され得ることは、以下の説明から当業者には容易に理解されるであろう。
【００１７】
ソーシャル・ネットワーキング・ユーザ、またはデジタル・コンテンツ（または「コンテンツ」）の提供者は、ソーシャル・ネットワーキング・システムを通してデジタル・コンテンツを配信したいと希望することがある。たとえば、広告主が、ビデオや対話的プレゼンテーションのようなデジタル・コンテンツ・アイテム（または「コンテンツ・アイテム」）を有する広告を、ソーシャル・ネットワーキング・システムのユーザに対して配信したいと希望することがある。たとえば、映画スタジオが、映画の予告編をソーシャル・ネットワーキング・システムのユーザに対して提供したいと希望することがある。同様に、音楽会社、書籍出版社、およびビデオ・ゲーム・メーカなどが、ソーシャル・ネットワーキング・システムのユーザに使用可能なある種の形態のデジタル・コンテンツ・アイテムを作成したいと希望することがある。また、ソーシャル・ネットワーキング・システムのユーザは、ストリーミング・ビデオに対するリンクをユーザのソーシャル・ネットワーキング投稿に含めることや、ストリーミング音声コンテンツをソーシャル・ネットワーク投稿に埋め込むことなどによって、ユーザ間でデジタル・コンテンツ・アイテムを共有することがある。
【００１８】
しかしながら、ソーシャル・ネットワーキング・システムを通じてデジタル・コンテン
ツを配信するのを達成することは難しい場合がある。しばしば、デジタル・コンテンツ・アイテムは大量のデータを含んでいる。たとえば、ソーシャル・ネットワーキング・ニュースフィードに出現する単純なビデオ広告は、静止画像フレームごとの画像データ、音声データ、対話的ハイパーリンク、および他のコンテンツ・データを含み得る。ユーザは、８０２．１１Ｗｉ−Ｆｉ、第３世代（３Ｇ）、第４世代（４Ｇ）、および第５世代（５Ｇ）ネットワークを含む様々なタイプのネットワークを通してソーシャル・ネットワーキング・システムにアクセスを試みる可能性があり、それらの各ネットワークは、異なる性能特性（たとえば、データ速度、帯域幅、およびスループット）を有する傾向がある。無線ネットワークにアクセスしているユーザに対するデジタル・コンテンツ・アイテムのストリーミングは、他の手法によって可能な品質よりも比較的低い品質のバージョンのデジタル・コンテンツ・アイテムをユーザに対して提供する可能性があり、あるいはストリーミング・コンテンツに対するアクセスの遅延（たとえば、ジッタ）をもたらす可能性がある。
【００１９】
本明細書で提供される技法は、オンライン・コンテンツ・ソースからのコンテンツ・アイテムに対するクライアント・デバイスによるアクセスを改善することができるシステムおよび方法を実装する。いくつかの実施形態によれば、ネットワークを通じてオンライン・コンテンツ・ソース（たとえば、コンテンツ・サーバ）からクライアント・デバイスに対してコンテンツがストリーミングされるとき、クライアント・デバイスにおいてローカルにデジタル・コンテンツをキャッシュするために、中間コンテンツ・ストリーミング・システムがクライアント・デバイス上に実装される。本明細書で使用される場合、コンテンツ・アイテムは、たとえば、テキスト、音声、ビデオ、画像、およびプレゼンテーションなどを含む１つまたは複数のタイプのコンテンツを含み得る。クライアント・デバイスにおける中間コンテンツ・ストリーミング・システムを通じて、クライアント・デバイスにおけるマルチメディア・プレーヤなどのコンテンツ・アクセス・アプリケーションは、コンテンツ・データ（たとえば、ビデオ・データ）のストリームとしてコンテンツ・アイテム（たとえば、ビデオ）の一部または全部を要求し次いで受信することができる。詳細には、中間コンテンツ・ストリーミング・システムが、オンライン・コンテンツ・ソースによって提供されたコンテンツ・アイテムを求める要求を受信することができ、次いで、中間コンテンツ・ストリーミング・システムは、コンテンツ・データ（たとえば、音声データ）のストリームとしてコンテンツ・アイテム（たとえば、音声）の一部または全部をコンテンツ・アクセス・アプリケーションに対して提供することができる。これは、コンテンツ・アクセス・アプリケーションの代わりに、中間コンテンツ・ストリーミング・システムが、オンライン・コンテンツ・ソースからのコンテンツ・データを要求し取得することによって達成され得る。オンライン・コンテンツ・ソースからのコンテンツ・データは、データ・ストリームとして中間コンテンツ・ストリーミング・システムによって受信され得る。要求されたコンテンツ・アイテムについてのコンテンツ・データがオンライン・コンテンツ・ソースから中間コンテンツ・ストリーミング・システムに対してストリーミングされると、中間コンテンツ・ストリーミング・システムは、コンテンツ・データをコンテンツ・アクセス・アプリケーションに対して提供することができる。さらに、中間コンテンツ・ストリーミング・システムがオンライン・コンテンツ・ソースからストリーミングされたコンテンツ・データを受信すると、それは、ストリーミングされたコンテンツ・データをクライアント・デバイスにローカルにキャッシュし、同じコンテンツ・アイテムを求める将来の要求のために、キャッシュされたコンテンツ・データを維持することができる。
【００２０】
コンテンツ・アクセス・アプリケーションから中間コンテンツ・ストリーミング・システムによって受信される要求は、ＨＴＴＰ、ＦＴＰ、およびＲＴＰなどを含む様々なタイプのネットワーク・プロトコルを利用し得る。同様に、中間コンテンツ・ストリーミング・システムからオンライン・コンテンツ・ソースに対して送信される要求も、様々なタイ
プのネットワーク・プロトコルを利用し得る。いくつかの実施形態では、中間コンテンツ・ストリーミング・システムからオンライン・コンテンツ・ソースに対して送信される要求は、中間コンテンツ・ストリーミング・システムがコンテンツ・アクセス・アプリケーションから受信する要求と同様である、またはその要求とフォーマットが対応することが可能である。実施形態によっては、中間コンテンツ・ストリーミング・システムは、クライアント・デバイスでローカルに動作するサーバ・プロセスとして実装され得る。
【００２１】
その後、中間コンテンツ・ストリーミング・システムが、中間コンテンツ・ストリーミング・システムを通じて以前にストリーミングされたコンテンツ・アイテムを求める要求（たとえば、以前のように同じコンテンツ・アクセス・アプリケーションによる、またはクライアント・デバイスにおける別のコンテンツ・アクセス・アプリケーションによる要求）を受信したとき、中間コンテンツ・ストリーミング・システムは、中間コンテンツ・ストリーミング・システムによって以前に受信されたコンテンツ・アイテムのそうした部分に対応するコンテンツ・データを、ローカル・キャッシュから提供することによって、要求を実現することができる。また、中間コンテンツ・ストリーミング・システムは、オンライン・コンテンツ・ソースに対し要求をして、中間コンテンツ・ストリーミング・システムによって以前に受信されていないコンテンツ・アイテムのそうした部分についてのコンテンツ・データを、コンテンツ・アクセス・アプリケーションに対して提供することによって、要求を実現することができる。このようにして、中間コンテンツ・ストリーミング・システムは、クライアント・デバイスにおける独立したコンテンツ・アクセス・アプリケーションが、コンテンツ・アイテムの以前のストリーミング・セッション中にクライアント・デバイスにおいて既にローカルにキャッシュされたコンテンツ・データから恩恵を受けることを可能にすることができる。要求によっては、中間コンテンツ・ストリーミング・システムは、特定のシーク時間（たとえば、ビデオの最初より後の時間）に基づいてコンテンツ・アイテムについてのコンテンツ・データをクライアント・デバイスにおけるコンテンツ・アクセス・アプリケーションに対して提供し、それにより、中間サーバがコンテンツ・アイテムを最初からまたはその全体を要求および受信することを不要にするように構成され得る。また、実施形態によっては、中間コンテンツ・ストリーミング・システムは、コンテンツ・データをデータ・ストリームとして提供することができ、中間コンテンツ・ストリーミング・システムによって提供されるデータ・ストリームは、オンライン・コンテンツ・ソースから中間コンテンツ・ストリーミング・システムに対してコンテンツ・データを提供するデータ・ストリームと同様である（たとえば、フォーマットまたはプロトコルについて同様である）ことが可能である。
【００２２】
いくつかの実施形態によれば、キャッシュは、クライアント・デバイスにおけるコンテンツ・アクセス・アプリケーション（たとえば、ストリーミング・ビデオ・プレーヤ）のバッファとは別個であり独立して維持される。そのようなバッファは、典型的には、コンテンツがストリーミングされコンテンツ・アクセス・アプリケーションによってアクセスされるときに、コンテンツ・アクセス・アプリケーションによってコンテンツ・データの一時的なデータ記憶のために使用される。
【００２３】
本明細書で使用される場合、コンテンツ・アクセス・アプリケーションは、音声プレーヤ、ビデオ・プレーヤ、またはプレゼンテーション・プレーヤ（たとえば、スライド・ショーもしくはベクトル・ベースのグラフィックス）など、任意のタイプのマルチメディア・プレーヤを含み得る。コンテンツ・アクセス・アプリケーションはまた、マルチメディア・エディタ（たとえば、音声もしくはビデオ・エディタ）または文書エディタ（たとえば、ワープロ・アプリケーション）など、様々なタイプのコンテンツ・エディタを含み得る。また、コンテンツ・アクセス・アプリケーションは、コンテンツ・アクセス・アプリケーションと適合したコンテンツにアクセスするときにウェブ・ブラウザなど他のスタンドアロン・アプリケーションによって利用され得る１つまたは複数のソフトウェア・モジ
ュールとして実装され得る。たとえば、コンテンツ・アクセス・アプリケーションは、ウェブ・ページに埋め込まれたビデオ（たとえば、ソーシャル・ネットワークのウェブ・ページ上に提示された投稿またはメッセージに埋め込まれたビデオ）にアクセスするときにウェブ・ブラウザによって利用されるスタンドアロン・ビデオ・プレーヤまたはビデオ・プレーヤ・モジュールを含み得る。コンテンツ・アクセス・アプリケーションは、１つまたは複数の特定のタイプのコンテンツにアクセスするように制限されてもよい。ビジュアル・コンテンツにアクセスすることは、ビデオまたはプレゼンテーション・コンテンツなどのビジュアル・コンテンツをクライアント・デバイスのディスプレイ上に提示することを含むことができる。音声コンテンツにアクセスすることは、ビデオ内の音声コンテンツなどの音声コンテンツをクライアント・デバイスのスピーカを通じて出力することを含むことができる。
【００２４】
本明細書で使用される場合、オンライン・コンテンツ・ソースは、１つまたは複数のコンテンツ・アイテムを要求元クライアント・デバイスに対してネットワーク接続を通じて提供するように構成されたサーバなどのコンピュータ・システムに及ぶ。オンライン・コンテンツ・ソースは、コンテンツをデータ・ストリームとして提供するように構成されてよく、それにより、クライアント・デバイスが、（コンテンツ・アイテムの全ての部分がクライアント・デバイスで受信されるまで待つ必要なく）コンテンツ・アイテムの一部が受信されるとそれらにアクセスするのを可能にすることができる。
【００２５】
実施形態によっては、コンテンツ・アイテムを求めるコンテンツ・アクセス・アプリケーションからオンライン・コンテンツ・ソースに対する元の要求が、中間コンテンツ・ストリーミング・システムに対して宛てられ、もしくは転送され、または中間コンテンツ・ストリーミング・システムによってインターセプトされ得る。たとえば、コンテンツ・アクセス・アプリケーションは、オンライン・コンテンツ・ソースに対してコンテンツ・アイテムを求める要求を、中間コンテンツ・ストリーミング・システムに対して直接的に送信するように構成され得る。次いで、中間ストリーミング・コンテンツ・システムが、要求されたコンテンツ・アイテムについてのコンテンツ・データを使用可能な範囲でローカル・キャッシュからコンテンツ・アクセス・アプリケーションに対して提供すること、またはローカル・キャッシュに存在しないコンテンツ・データをオンライン・コンテンツ・ソースから取得してコンテンツ・アクセス・アプリケーションに対して取得されたコンテンツ・データを提供すること、あるいは両方を行うことができる。
【００２６】
いくつかの実施形態によれば、クライアント・デバイスにおけるユーザが、ソーシャル・ネットワーキング・システムによって提供されるニュース・フィードなどを通じてコンテンツ・アイテムに対するアクセスを提示される前に、クライアント・デバイスに対するコンテンツ・アイテム（たとえば、ストリーミング・コンテンツ・アイテム）の優先度ベースの事前ダウンロードを円滑にするために、優先度ベースのコンテンツ・ダウンロード・システムがクライアント・デバイス上に実装される。たとえば、優先度ベースのコンテンツ・ダウンロード・システムは、ソーシャル・ネットワーキング・システムに対する投稿に出現するビデオ（たとえば、ソーシャル投稿に埋め込まれたオンライン・ビデオ）を、ユーザがそのような投稿に遭遇する（たとえば、そのような投稿を閲覧する）前に、部分的または完全にクライアント・デバイスに対して事前ダウンロードすることができる。ユーザは、ソーシャル・ネットワーク・ニュース・フィードにおいてそのような投稿に遭遇する可能性があり、１つまたは複数のニュース・アイテム（以下「ニュース投稿」）は、コンテンツ・サーバによって提供される１つまたは複数のオンライン・コンテンツ・アイテム（たとえば、オンライン・ビデオ）を含む。ユーザがニュース・フィードを閲覧するとき、ニュース・フィードの１つまたは複数の投稿に含まれるコンテンツ・アイテムが、そのようなニュース投稿がニュース・フィードを通じてユーザにアクセス可能にされる（たとえば、クライアント・デバイス上でユーザにとって可視になる）前に、クライアン
ト・デバイスに対して全てまたは部分的に事前ダウンロードされ得る。
【００２７】
コンテンツ・アイテムが優先度ベースのコンテンツ・ダウンロード・システムによってクライアント・デバイスに対して事前ダウンロードされると、コンテンツ・アイテムはクライアント・デバイスのローカル・キャッシュに記憶され得る。いくつかの実施形態によれば、本明細書に説明されている優先度ベースのコンテンツ・ダウンロード・システムは、本明細書に説明されている中間コンテンツ・ストリーミング・システムと同じローカル・キャッシュを利用することができる。このようにローカル・キャッシュを共有することにより、クライアント・デバイス上の中間コンテンツ・ストリーミング・システムは、同じクライアント・デバイス上の優先度ベースのコンテンツ・ダウンロード・システムと相互動作することができる。たとえば、コンテンツ・アイテムがクライアント・デバイス上にアクセスのために提示される前に、優先度ベースのコンテンツ・ダウンロード・システムは、コンテンツ・アイテムの少なくとも一部を、中間コンテンツ・ストリーミング・システムと共有されたローカル・キャッシュに対して事前ダウンロードすることができ、コンテンツ・アイテムを求める要求が中間コンテンツ・ストリーミング・システムによって受信される前にそれを行うことができる。続いて、コンテンツ・アイテムを求める要求が中間コンテンツ・ストリーミング・システムによって受信されると、優先度ベースのコンテンツ・ダウンロード・システムによってローカル・キャッシュに対して事前ダウンロードされたコンテンツ・アイテムの部分を使用して、その要求が中間コンテンツ・ストリーミング・システムによって実現され得る。
【００２８】
コンテンツ事前ダウンロードの優先度付けは、様々なファクタに基づくことが可能であり、以下に限定されないが、それらのファクタは、コンテンツ・アイテムが、ユーザによって遭遇されたときに（たとえば、ビデオがユーザのソーシャル・ネットワーキング・ニュース・フィードを通じてユーザの見える範囲に入ったときに）ソーシャル・ネットワーキング・ニュース・フィードにおいて自動再生されるものであるか否か、いくつのソーシャル・ネットワーキングの「いいね」またはコメントが、コンテンツ・アイテムに関連付けられているか、コンテンツ・アイテムに関連付けられているソーシャル・ネットワーキングの「いいね」またはコメントの質（たとえば、ビデオに対して誰が「いいね」を表明しているまたはコメントしているか）、クライアント・デバイスに関する詳細（たとえば、ハードウェアまたはソフトウェア仕様）、クライアント・デバイスで使用可能なコンピューティング・リソース（たとえば、メモリ）、コンテンツ・アイテムがユーザによって遭遇される確率（たとえば、ビデオがユーザのソーシャル・ネットワーキング投稿フィードを通じてユーザの見える範囲に入る蓋然性）、コンテンツ・アイテムの主題（たとえば、広告または非広告）、および、コンテンツ・アイテムにアクセスする（たとえば、再生する）際のユーザ・プリファレンスを含む。優先度ベースのコンテンツ・ダウンロード・システムは、クライアント・デバイスでローカルに動作するサーバ・プロセスとして実装され得る。
【００２９】
図１は、本発明の実施形態による、例示的な中間コンテンツ・ストリーミング・システム１０６および例示的な優先度ベースのコンテンツ・ダウンロード・システム１０８を示す。図示されるように、クライアント・デバイス１００は、中間コンテンツ・ストリーミング・システム１０６、優先度ベースのコンテンツ・ダウンロード・システム１０８、およびクライアント・アプリケーション・モジュール１１０を含む。図１では、クライアント・デバイス１００は、中間コンテンツ・ストリーミング・システム１０６と優先度ベースのコンテンツ・ダウンロード・システム１０８との両方を有するように示しているが、いくつかの実施形態によっては、クライアント・デバイス１００は、一方（たとえば、中間コンテンツ・ストリーミング・システム１０６）のみを含み、他方（たとえば、優先度ベースのコンテンツ・ダウンロード・システム１０８）を含んでいない。
【００３０】
図示されるように、クライアント・デバイス１００は、ネットワーク１０２を通じてコンテンツ・サーバ１０４に対して通信可能に結合される。実施形態に応じて、クライアント・デバイス１００は、ネットワーク１０２を通じてコンテンツ・データなどのデータをコンテンツ・サーバ１０４と交換することができるデスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピューティング・デバイス、データ対応携帯電話、または他の何らかのネットワーク対応デバイスであり得る。ネットワーク１０２は、様々なネットワーク・プロトコルに対応することができ、コンピュータ・ネットワークなどの通信ネットワークを含むことができる。ネットワーク１０２は、それぞれ異なるデータ速度、帯域幅、およびスループットを提供する８０２．１１Ｗｉ−Ｆｉ、第３世代（３Ｇ）、第４世代（４Ｇ）ネットワーク、および第５世代（５Ｇ）ネットワークを含む１つまたは複数の有線または無線ネットワークを含み得る。ネットワーク１０２は、コンテンツ・サーバ１０４から、中間コンテンツ・ストリーミング・システム１０６および優先度ベースのコンテンツ・ダウンロード・システム１０８のうちの１つまたは複数に対して、コンテンツ・アイテムを提供することができる。実施形態によっては、ネットワーク１０２は、クライアント・デバイス１００、中間コンテンツ・ストリーミング・システム１０６、優先度ベースのコンテンツ・ダウンロード・システム１０８、およびコンテンツ・サーバ１０４のうちの１つまたは複数内の内部構成要素の結合を円滑にすることができる。
【００３１】
中間コンテンツ・ストリーミング・システム１０６および優先度ベースのコンテンツ・ダウンロード・システム１０８を説明するにあたり、クライアント・デバイス１００のクライアント・アプリケーション・モジュール１１０をまず説明することが役立つはずである。いくつかの実施形態によれば、クライアント・アプリケーション・モジュール１１０は、ユーザとクライアント・デバイス１００との間の対話を円滑にするように構成されたソフトウェアベースの構成要素またはスタンドアロン・アプリケーションである。たとえば、クライアント・アプリケーション・モジュール１１０は、クライアント・デバイス１００上で動作するように構成され、ユーザがソーシャル・ネットワーキング・システムにアクセスしその中で提供される様々なものと対話することを可能にするスタンドアロン・アプリケーションであり得る。本明細書でさらに詳細に説明されているように、ソーシャル・ネットワーキング・システムは、１つまたは複数のソーシャル・ネットワーキング・ユーザ間でコンテンツ・アイテムを配信または共有するために利用され得る。
【００３２】
図示されるように、クライアント・アプリケーション・モジュール１１０は、クライアント・アプリケーション・モジュール１１０を通じた１つまたは複数のタイプのコンテンツ・アイテムに対するアクセスを円滑にするためのコンテンツ・アクセス・モジュール１１２を含む。図１ではコンテンツ・アクセス・モジュール１１２はクライアント・アプリケーション・モジュール１１０に含まれるものとして示されているが、コンテンツ・アクセス・モジュール１１２は、クライアント・デバイス１００上で動作するように構成され、１つまたは複数のコンテンツ・タイプに対するアクセスを円滑にするソフトウェアベースのコンポーネントまたはスタンドアロン・アプリケーションであってもよい。たとえば、コンテンツ・アクセス・モジュール１１２は、クライアント・アプリケーション・モジュール１１０の外部のソフトウェア・コンポーネントであって、クライアント・デバイス１００におけるユーザがクライアント・アプリケーション・モジュール１１０を通じてコンテンツ・アイテムにアクセスしているときにクライアント・アプリケーション・モジュール１１０によって利用されるソフトウェア・コンポーネントであり得る。たとえば、クライアント・アプリケーション・モジュール１１０は、ソーシャル・ネットワーキング・システムのウェブ・ページにアクセスしているウェブ・ブラウザであり、クライアント・アプリケーション・モジュール１１０は、マルチメディア・プレーヤなどのコンテンツ・アクセス・モジュール１１２を利用して、ウェブ・ページに埋め込まれたマルチメディア・コンテンツ・アイテム（たとえば、音声またはビデオ）にアクセスすることができる。
【００３３】
本明細書で使用される場合、コンテンツ・アイテムにアクセスすることは、コンテンツ・アイテムを開くこと、およびコンテンツ・アイテムに関連付けられているコンテンツ・データを読み取る、書き込む、または編集することを含むことができる。たとえば、ビデオ・コンテンツ・アイテムにアクセスすることは、ビデオ・コンテンツ・アイテムを開くこと、ビデオ・コンテンツ・アイテムに関連付けられているビデオ・コンテンツ・データを読み取ること、およびクライアント・デバイス１００に結合されたディスプレイにビデオ・コンテンツ・データを表示することを備えることができる。コンテンツ・アイテムにアクセスするための方法は、コンテンツ・タイプ間で異なることがある。コンテンツ・アイテムがクライアント・デバイス１００から離れて配置され（たとえば、コンテンツ・サーバ１０４に配置され）ていて、ネットワーク１０２を通じて（たとえば、コンテンツ・サーバ１０４から）受信された場合、コンテンツ・アクセス・モジュール１１２は、ネットワーク１０２を通じて送信されたデータ・ストリーム（以下「コンテンツ・データ・ストリーム」）を通じてコンテンツ・アイテムにアクセスすることができる。コンテンツ・アクセス・モジュール１１２は、関連付けられているコンテンツ・データ・ストリームを通じて受信されたコンテンツ・アイテムの少なくとも一部を、コンテンツ・バッファ・データ・ストア１１４に記憶する（たとえば、コミットする）ことによって、コンテンツ・アイテムのそのようなストリームベースのアクセスを円滑にすることができる。たとえば、コンテンツ・サーバ１０４からクライアント・デバイス１００に対してストリーミングされたコンテンツ・アイテムにアクセスするために、コンテンツ・サーバ１０４から受信されたコンテンツ・データ・ストリームは、まずコンテンツ・バッファ・データ・ストア１１４に記憶されることが可能であり、コンテンツ・アクセス・モジュール１１２は、コンテンツ・バッファ・データ・ストア１１４に記憶されたコンテンツ・データにアクセスして、記憶されたコンテンツ・データに対応するコンテンツ・アイテムの部分にアクセスすることが可能である。本明細書でさらに詳細に説明されているように、コンテンツ・アクセス・モジュール１１２は、中間コンテンツ・ストリーミング・システム１０６、優先度ベースのコンテンツ・ダウンロード・システム１０８、または両方の何らかの組合せを通じて、データ・ストリームを受信することができる。
【００３４】
コンテンツ・バッファ・データ・ストア１１４は、コンテンツ・アクセス・モジュール１１２がコンテンツ・アイテムの特定の量をそれがアクセスされる前にバッファすることを可能にし、そうすることにより、クライアント・デバイス１００におけるユーザによるコンテンツ・アイテムに対するアクセスを、よりスムーズまたは連続的にすることができる。たとえば、コンテンツ・バッファ・データ・ストア１１４は、ストリーミングされたビデオの最初の１０秒を、そのビデオがクライアント・デバイス１００におけるユーザにアクセス（たとえば、再生）される前またはアクセス可能（たとえば、再生可能にされる）にされる前に、コンテンツ・アクセス・モジュール１１２がバッファすることを可能にすることができる。不整合なコンテンツ・データ・ストリームを生じ得るネットワーク状態（たとえば、パケット遅延、パケット誤り、ネットワーク接続の一時的喪失、またはネットワーク速度の低下）に影響されやすい、ネットワーク１０２を通じたコンテンツ・データ・ストリームとしてコンテンツ・サーバ１０４からのコンテンツ・アイテムに対してコンテンツ・アクセス・モジュール１１２がアクセスしている場合に、コンテンツ・バッファ・データ・ストア１１４は特に有用であり得る。
【００３５】
コンテンツ・バッファ・データ・ストア１１４は、コンテンツ・アクセス・モジュール１１２を通じてユーザによって現在アクセスされているコンテンツ・アイテムの少なくともそうした部分についてのコンテンツ・データを一時的に記憶するように構成され得る。また、コンテンツ・バッファ・データ・ストア１１４は、コンテンツ・アクセス・モジュール１１２を通じてユーザによって最近アクセスされたコンテンツ・アイテムのそうした部分についてのコンテンツ・データを一時的に記憶するように構成されてよく、それにより、オンライン・ソース（たとえば、コンテンツ・サーバ１０４）からの再取得の必要な
しにそのような部分に再アクセスすることを可能にする。
【００３６】
一時的なデータ記憶を実装するために、コンテンツ・バッファ・データ・ストア１１４は、記憶限度（ｓｔｏｒａｇｅ  ｌｉｍｉｔ）、データ年齢、最終アクセス時間、アクセスの頻度、コンテンツ・データのタイプ、コンテンツ・アイテムの部分への対応、またはコンテンツ・データが対応するコンテンツ・アイテムの優先度などに基づいて、コンテンツ・データを除去（たとえば、消去）することができる。たとえば、コンテンツ・バッファ・データ・ストア１１４に現在記憶されているコンテンツ・データ全体が記憶限度に達するまたはそれを超えたとき、コンテンツ・データがコンテンツ・バッファ・データ・ストア１１４から追い出され得る。別の例では、いつコンテンツ・データが受信されたか（たとえば、３０秒前に受信された）、またはコンテンツ・データが過去にいつアクセスされたコンテンツ・アイテムの部分に対応するか（たとえば、３０秒より前にアクセスされた部分に対応する）に基づいて、コンテンツ・データがコンテンツ・バッファ・データ・ストア１１４から追い出され得る。
【００３７】
中間コンテンツ・ストリーミング・システム１０６は、コンテンツ・アイテムについてのコンテンツ・データがコンテンツ・サーバ１０４からネットワーク１０２を通じてクライアント・デバイス１００に対してストリーミングされると、そのコンテンツ・アイテムのためのコンテンツ・データとしてクライアント・デバイスにローカルにキャッシュするように構成され得る。クライアント・アプリケーション・モジュール１１０に含まれ得るクライアント・デバイス１００におけるコンテンツ・アクセス・モジュール１１２は、中間コンテンツ・ストリーミング・システム１０６を通じてコンテンツ・サーバ１０４にコンテンツ・アイテムを要求することができ、次いで、中間コンテンツ・ストリーミング・システム１０６は、コンテンツ・データ（たとえば、音声データ）のストリームとしてコンテンツ・アイテム（たとえば、音声）の一部または全部をコンテンツ・アクセス・モジュール１１２に対して提供することができる。これは、コンテンツ・アクセス・モジュール１１２の代わりに、中間コンテンツ・ストリーミング・システム１０６が、ネットワーク１０２を通じてコンテンツ・サーバ１０４からのコンテンツ・データを要求し取得することによって達成され得る。コンテンツ・サーバ１０４からのコンテンツ・データは、データ・ストリームとして中間コンテンツ・ストリーミング・システム１０６によって受信され得る。要求されたコンテンツ・アイテムについてのコンテンツ・データがコンテンツ・サーバ１０４から中間コンテンツ・ストリーミング・システム１０６に対してストリーミングされると、中間コンテンツ・ストリーミング・システム１０６は、コンテンツ・データをコンテンツ・アクセス・モジュール１１２に対して提供することができる。また、中間コンテンツ・ストリーミング・システム１０６がコンテンツ・サーバ１０４からストリーミングされたコンテンツ・データを受信すると、それは、ストリーミングされたコンテンツ・データをクライアント・デバイス１００にローカルにキャッシュし（たとえば、システム１０６により含まれるコンテンツ・キャッシュ・データ・ストアに記憶される）、同じコンテンツ・アイテムを求める将来の要求のために、キャッシュされたコンテンツ・データを維持することができる。中間コンテンツ・ストリーミング・システム１０６は、コンテンツ・データがクライアント・デバイス１００にローカルにキャッシュされた前または後に、あるいはコンテンツ・データがクライアント・デバイス１００にローカルにキャッシュされるのと同時に、ストリーミングされたコンテンツ・データをコンテンツ・アクセス・モジュール１１２に対して提供することができる。要求されたコンテンツ・アイテムについてのコンテンツ・データをコンテンツ・アクセス・モジュール１１２に対して提供するとき、中間コンテンツ・ストリーミング・システム１０６は、コンテンツ・データをデータ・ストリームとして提供することができる。また、中間コンテンツ・ストリーミング・システム１０６からコンテンツ・アクセス・モジュール１１２に対するデータ・ストリームは、要求されたコンテンツ・アイテムについてのコンテンツ・データをコンテンツ・サーバ１０４から中間コンテンツ・ストリーミング・システム１０６に対して提
供するデータ・ストリームとフォーマットまたはプロトコルが同様であってよい。
【００３８】
いくつかの実施形態によれば、キャッシュされたコンテンツ・データは、クライアント・デバイス１００上の様々なコンテンツ・アクセス・モジュールのバッファに保有されるコンテンツ・データとは独立して保有される。また、いくつかの実施形態によれば、キャッシュされたコンテンツ・データは、コンテンツ・アクセス・モジュールのバッファがコンテンツ・データを保有する期間よりも長い期間にわたり保有される。実施形態によっては、中間コンテンツ・ストリーミング・システム１０６は、クライアント・デバイス１００でローカルに動作するサーバ・プロセスとして実装され得る。
【００３９】
コンテンツ・アクセス・モジュール１１２から中間コンテンツ・ストリーミング・システム１０６によって受信される要求は、ＨＴＴＰ、ＦＴＰ、およびＲＴＰなどを含む様々なタイプのネットワーク・プロトコルを利用し得る。同様に、中間コンテンツ・ストリーミング・システム１０６からコンテンツ・サーバ１０４に対して送信される要求も、様々なタイプのネットワーク・プロトコルを利用し得る。いくつかの実施形態において、中間コンテンツ・ストリーミング・システム１０６からコンテンツ・サーバ１０４に対して送信される要求は、中間コンテンツ・ストリーミング・システム１０６がコンテンツ・アクセス・モジュール１１２から受信するコンテンツ・アイテムを求める要求と同様である、またはその要求とフォーマットが対応することが可能である。
【００４０】
コンテンツ・サーバ１０４からクライアント・デバイス１００に対してストリーミングされているコンテンツ・アイテムに関して受信されたコンテンツ・データをローカルにキャッシュすることに続いて、中間コンテンツ・ストリーミング・システム１０６は、同じコンテンツ・アイテムについての別の要求を受信することがある。この別の要求は、同じコンテンツ・アイテムを以前に要求したクライアント・デバイス１００におけるコンテンツ・アクセス・モジュール（たとえば、コンテンツ・アクセス・モジュール１１２）から、またはクライアント・デバイス１００における別のクライアント・アクセス・モジュールによって生じ得る。中間コンテンツ・ストリーミング・システム１０６は、中間コンテンツ・ストリーミング・システム１０６によって以前に受信されたコンテンツ・アイテムのそうした部分に対応するコンテンツ・データを、ローカル・キャッシュから提供することによって、要求を実現することができる。また、中間コンテンツ・ストリーミング・システム１０６は、コンテンツ・サーバ１０４に対し要求をして、中間コンテンツ・ストリーミング・システム１０６によって以前に受信されていないコンテンツ・アイテムのそうした部分についてのコンテンツ・データを、コンテンツ・アクセス・モジュール（たとえば、コンテンツ・アクセス・モジュール１１２）に対して提供することによって、要求を実現することができる。このようにして、中間コンテンツ・ストリーミング・システム１０６は、クライアント・デバイス１００における独立したコンテンツ・アクセス・モジュールが、コンテンツ・アイテムの以前のストリーミング・セッション中にクライアント・デバイスにおいて既にローカルにキャッシュされたコンテンツ・データから恩恵を受けることを可能にすることができる。
【００４１】
たとえば、ユーザは、コンテンツ・アクセス・モジュール１１２を使用してクライアント・アプリケーション・モジュール１１０を通じて、ソーシャル・ネットワーキング・システムによって提供されたストリーミング・ビデオ・コンテンツ・アイテムをプレビューすることを選択することができる。コンテンツ・アクセス・モジュール１１２は、ユーザがストリーミング・ビデオ・コンテンツ・アイテムをプレビューするとき、ストリーミング・ビデオ・コンテンツ・アイテムの全画面より小さいビューを提供するように構成され得る。続いて、ユーザが第２のコンテンツ・アクセス・モジュール（図示せず）を使用してクライアント・アプリケーション・モジュール１１０を通じてストリーミング・ビデオ・コンテンツ・アイテムを閲覧することを選択することができ、第２のコンテンツ・アク
セス・モジュールは、クライアント・デバイス１００上にストリーミング・ビデオ・コンテンツ・アイテムの全画面ビューを提供する。第２のコンテンツ・アクセス・モジュールが、同じストリーミング・ビデオ・コンテンツ・アイテムに対するアクセスを要求するとき、中間コンテンツ・ストリーミング・システム１０６は、そのローカル・キャッシュから、ストリーミング・ビデオ・コンテンツ・アイテムに関るクライアント・デバイス１００に以前のストリーミング・セッション中に既に受信されたストリーミング・ビデオ・コンテンツ・アイテムのそうした部分を提供することができる。使用される部分は、コンテンツ・アクセス・モジュール１１２を通じたプレビューに関る以前のセッションの間に受信されたそうした部分を含み得る。
【００４２】
要求によっては、中間コンテンツ・ストリーミング・システム１０６は、特定のシーク時間（たとえば、ビデオの最初より後の時間）に基づいてコンテンツ・アイテムについてのコンテンツ・データをクライアント・デバイス１００におけるコンテンツ・アクセス・モジュール（たとえば、コンテンツ・アクセス・モジュール１１２）に対して提供し、それにより、中間サーバがコンテンツ・アイテムを最初からまたはその全体を要求および受信することを不要にするように構成され得る。たとえば、クライアント・デバイス１００におけるユーザによる選択に基づいて、コンテンツ・アクセス・モジュール１１２は、コンテンツ・サーバ１０４によって提供されたストリーミング・ビデオ・コンテンツ・アイテムの特定の部分にアクセスするための要求を送信することができ、その部分は、ストリーミング・ビデオ・コンテンツ・アイテム内の特定の時間部分（たとえば、特定の分および秒）に対応している。中間コンテンツ・ストリーミング・システム１０６は、要求を受信し、要求に基づいて、特定の時間位置に対応する特定の部分を求める要求を実現するためにコンテンツ・アクセス・モジュール１１２にどのコンテンツ・データが提供される必要があるか識別する。たとえば、識別されたコンテンツ・データに基づいて、中間コンテンツ・ストリーミング・システム１０６は、コンテンツ・データをそのローカル・キャッシュからコンテンツ・アクセス・モジュール１１２に対して提供すること、またはコンテンツ・サーバ１０４からコンテンツ・データを取得してコンテンツ・アクセス・モジュール１１２に対して取得されたコンテンツ・データを提供すること、あるいは両方を行うことができる。
【００４３】
実施形態によっては、コンテンツ・アイテムを求めるコンテンツ・アクセス・モジュール１１２からコンテンツ・サーバ１０４に対する元の要求が、中間コンテンツ・ストリーミング・システム１０６に対して宛てられ、もしくは転送され、または中間コンテンツ・ストリーミング・システム１０６によってインターセプトされ得る。たとえば、コンテンツ・アクセス・アプリケーションは、オンライン・コンテンツ・ソース（たとえば、コンテンツ・サーバ１０４）から提供されるコンテンツ・アイテムを求める要求を、中間コンテンツ・ストリーミング・システム１０６に対して直接的に送信するように構成され得る。次いで、中間ストリーミング・コンテンツ・システム１０６が、要求されたコンテンツ・アイテムについてのコンテンツ・データを使用可能な範囲でローカル・キャッシュからコンテンツ・アクセス・モジュール１１２に対して提供すること、またはローカル・キャッシュに存在しないコンテンツ・データをコンテンツ・サーバ１０４から取得してコンテンツ・アクセス・モジュール１１２に対して取得されたコンテンツ・データを提供すること、あるいは両方を行うことができる。このようにして、コンテンツ・アクセス・モジュール１１２およびクライアント・デバイス１００上の他のコンテンツ・アクセス・モジュールに代わって、中間コンテンツ・ストリーミング・システム１０６が、コンテンツ・アクセス・モジュールの要求を実現するのに必要とされるコンテンツ・データがローカルにキャッシュされていない場合に、コンテンツ・データをコンテンツ・サーバ１０４に対して要求することができる。
【００４４】
優先度ベースのコンテンツ・ダウンロード・システム１０８は、クライアント・デバイ
ス１００におけるユーザがコンテンツ・アイテムに対するアクセスを提示される前に、コンテンツ・アイテムのクライアント・デバイス１００に対する優先度ベースの事前ダウンロードを円滑にするように構成され得る。たとえば、投稿に出現するオンライン・コンテンツ・アイテム（たとえば、ビデオ・コンテンツ・アイテム）のソーシャル・ネットワーキング・システムに対するストリーミングは、クライアント・デバイス１００におけるユーザがそのような投稿に遭遇する（たとえば、そのような投稿を閲覧する）前に、優先度ベースのコンテンツ・ダウンロード・システム１０８によってクライアント・デバイス１００に対して部分的にまたは完全に事前ダウンロードすることができる。クライアント・デバイス１００におけるソーシャル・ネットワーク・ユーザは、ソーシャル・ネットワーク・ニュース・フィードにおいてそのような投稿に遭遇する可能性があり、１つまたは複数のニュース投稿は、１つまたは複数のオンライン・コンテンツ・アイテムを含む。ユーザがクライアント・アプリケーション・モジュール１１０を通じてニュース・フィードを閲覧するとき、ニュース・フィードの１つまたは複数のニュース投稿に含まれるコンテンツ・アイテムは、そのようなニュース投稿がニュース・フィードを通じて（たとえば、ニュース・フィードの）ユーザにアクセス可能にされる前に、クライアント・デバイス１００に対して全てまたは部分的に事前ダウンロードされ得る。
【００４５】
コンテンツ・アイテムが優先度ベースのコンテンツ・ダウンロード・システム１０８によってクライアント・デバイス１００に対して事前ダウンロードされると、コンテンツ・アイテムはクライアント・デバイス１００のローカル・キャッシュに記憶され得る。いくつかの実施形態によれば、優先度ベースのコンテンツ・ダウンロード・システム１０８は、中間コンテンツ・ストリーミング・システム１０６と同じローカル・キャッシュを利用する。このようにローカル・キャッシュを共有することにより、中間コンテンツ・ストリーミング・システム１０６は、優先度ベースのコンテンツ・ダウンロード・システム１０８と相互動作することができる。たとえば、コンテンツ・アイテムがクライアント・デバイス１００上にアクセスのために提示される前に、優先度ベースのコンテンツ・ダウンロード・システム１０８は、コンテンツ・アイテムの少なくとも一部を、中間コンテンツ・ストリーミング・システム１０６と共有されたローカル・キャッシュに対して事前ダウンロードすることができ、コンテンツ・アイテムを求める要求が中間コンテンツ・ストリーミング・システム１０６によって受信される前にそれを行うことができる。続いて、コンテンツ・アイテムを求める要求が中間コンテンツ・ストリーミング・システム１０６によって受信されると、優先度ベースのコンテンツ・ダウンロード・システム１０８によってローカル・キャッシュに対して事前ダウンロードされたコンテンツ・アイテムの部分を使用して、その要求が中間コンテンツ・ストリーミング・システム１０６によって実現され得る。
【００４６】
本明細書でさらに詳細に説明されているように、コンテンツ事前ダウンロードの優先度付けは、様々なファクタに基づくことが可能であり、以下に限定されないが、それらのファクタは、コンテンツ・アイテムが、クライアント・デバイス１００におけるユーザによって遭遇されたときにソーシャル・ネットワーキング・ニュース・フィードにおいて自動再生されるものであるか否か、いくつのソーシャル・ネットワーキングの「いいね」またはコメントが、コンテンツ・アイテムに関連付けられているか、コンテンツ・アイテムに関連付けられているソーシャル・ネットワーキングの「いいね」またはコメントの質、クライアント・デバイス１００に関する詳細、クライアント・デバイス１００で使用可能なコンピューティング・リソース、コンテンツ・アイテムがクライアント・デバイス１００におけるユーザによって遭遇される確率、コンテンツ・アイテムの主題、および、コンテンツ・アイテムにアクセスする際のユーザ・プリファレンスを含む。優先度ベースのコンテンツ・ダウンロード・システム１０８は、クライアント・デバイス１００でローカルに動作するサーバ・プロセスとして実装され得る。
【００４７】
コンテンツ・サーバ１０４は、音声、ビデオ、または他のマルチメディア・コンテンツ・アイテムなどのコンテンツ・アイテムを、ネットワーク１０２を通じてクライアント・デバイス１００に対して提供することができる。本明細書でさらに詳細に説明されているように、コンテンツ・アイテムは、テキスト、画像、音声、ビデオ、および対話的コンテンツ・アイテムなどを含み得る。コンテンツ・アイテムは、音声またはビデオ広告などの広告を含むことが可能であり、オンライン音声またはビデオ・ストリームなどの、ネットワークを通じてユーザによって一般に共有されるコンテンツ・アイテムを含むことが可能である。コンテンツ・アイテムはまた、たとえば、テキスト・メッセージに埋め込まれるビデオのように、他のコンテンツ・アイテムに埋め込まれることも可能である。コンテンツ・アイテムはまた、コンテンツ・サーバ１０４によってネットワーク１０２を通じてクライアント・デバイス１００に対して提供され得る音楽ファイル、ビデオ・ファイル、および文書などに対するハイパーリンクを含むこともできる。このようにすることで、コンテンツ・サーバ１０４は、実際のコンテンツ・アイテム（たとえば、音楽、ビデオ、文書など）を提供する必要がなく、代わりに、クラウドベースのサービスまたはサーバのようなオンライン・コンテンツ・リソースによって使用可能なコンテンツ・アイテムのネットワーク位置に対するリンクを提供することができる。いくつかの実施形態では、第１のコンテンツ・アイテムに対するハイパーリンクを第２のコンテンツ・アイテム内に含める結果として、第１のコンテンツ・アイテムが第２のコンテンツ・アイテムに埋め込まれる。
【００４８】
コンテンツ・アイテムは、クライアント・デバイス１００に対して従来ダウンロードされる、または従来ストリーミングされるコンテンツ・アイテムを含み得る。たとえば、オンラインで提供されるマルチメディア・ファイルに対するアクセスは、クライアント・デバイスに対するデータ・ストリームによって、または初めにクライアント・デバイスに対してマルチメディア・ファイルをまずダウンロードして次いでクライアント・デバイスにおけるダウンロードされたマルチメディア・ファイルに対するアクセスを円滑にすることによって、円滑にされ得る。したがって、いくつかの実施形態では、コンテンツ・アイテム（たとえば、音声またはビデオ・ファイル）は、コンテンツ・サーバ１０４によってクライアント・デバイス１００に対してコンテンツ・データのストリームとして提供され得る。コンテンツ・サーバ１０４からストリーミングされたコンテンツ・データを受信すると、クライアント・デバイス１００は、本明細書に説明されているように、ストリーミングされたコンテンツ・データを、中間コンテンツ・ストリーミング・システム１０６、優先度ベースのコンテンツ・ダウンロード・システム１０８、または両方を通じて、コンテンツ・アクセス・モジュール１１２に対して提供することができる。次いで、コンテンツ・アクセス・モジュール１１２が、ストリーミングされたコンテンツ・データをコンテンツ・バッファ・データ・ストア１１４に一時的に記憶することができ、コンテンツ・アクセス・モジュール１１２は、コンテンツ・バッファ・データ・ストア１１４内のデータに対応するコンテンツ・アイテムのそうした部分に対するアクセスを、クライアント・デバイス１００におけるユーザに対して提供することができる。
【００４９】
いくつかの実施形態では、コンテンツ・サーバ１０４は、図７に示されるように、ソーシャル・ネットワーキング環境７００に組み込まれる。たとえば、コンテンツ・サーバ１０４は、図７の参照番号７２２を有する外部システムのような外部システムによって実装され得る。また、中間コンテンツ・ストリーミング・システム１０６、優先度ベースのコンテンツ・ダウンロード・システム１０８、または両方が、図７で参照番号７１８および７２０によってそれぞれ示されるように、ソーシャル・ネットワーキング環境７００に組み込まれ得る。
【００５０】
図１および本明細書の全ての図に示される構成要素は、単に例示であり、他の実施形態は、追加的な、より少ない、または異なる構成要素を含んでもよい。別の例として、実施形態によっては、２つ以上のクライアント・デバイスまたは２つ以上のコンテンツ・サー
バを含んでよいことは理解されるであろう。また、重要な細部を不明瞭にしないために、いくつかの構成要素は図１および本明細書の他の図に示されないことがある。
【００５１】
図２は、本発明の実施形態による中間コンテンツ・ストリーミング・システム１０６を示す。図２において、中間コンテンツ・ストリーミング・システム１０６は、クライアント・コンテンツ要求モジュール２００、コンテンツ・キャッシュ・モジュール２０２、サーバ・コンテンツ要求モジュール２０４、コンテンツ・ストリーミング・モジュール２０６、コンテンツ消去モジュール２０８、およびコンテンツ・キャッシュ・データ・ストア２１０を含む。いくつかの実施形態によれば、コンテンツ・キャッシュ・データ・ストア２１０は、中間コンテンツ・ストリーミング・システム１０６によってサービスされるクライアント・デバイス（たとえば、クライアント・デバイス１００）用のローカル・キャッシュとして働く。いくつかの実施形態において、コンテンツ・キャッシュ・データ・ストア２１０は、中間コンテンツ・ストリーミング・システム１０６と本明細書に説明されている優先度ベースのコンテンツ・ダウンロード・システムとの間で共有されるローカル・キャッシュとして働く。図２に示されている構成要素は、追加的な、より少ない、または異なる構成要素を含んでもよい。また、重要な細部を不明瞭にしないために、いくつかの構成要素は図２に示されないことがある。
【００５２】
クライアント・コンテンツ要求モジュール２００は、クライアント・アクセス・モジュールからコンテンツ・アイテムを求める要求を受信するように構成されてよく、コンテンツ・アイテムは、ネットワークを通じてコンテンツ・サーバによって提供される。実施形態によっては、クライアント・コンテンツ要求モジュール２００は、転送によって、またはインターセプトによって、クライアント・アクセス・モジュールから要求を直接的に受信することができる。受信される要求は、ＨＴＴＰ、ＦＴＰ、およびＲＴＰを含む様々ネットワーク・プロトコルを含むものであり得る。クライアント・コンテンツ要求モジュール２００はまた、受信された要求を分析し、要求を実現するのに使用され得る情報を取得するように構成され得る。たとえば、要求を分析することにより、クライアント・コンテンツ要求モジュール２００は、要求されているコンテンツ・アイテムを識別する、コンテンツ・アイテムが求められた先のコンテンツ・サーバを識別する、要求のタイプを識別する、またはコンテンツ・アイテムの特定の要求された部分（たとえば、コンテンツ・アイテムにおける時間位置）を識別することができる。
【００５３】
要求分析に基づいて、クライアント・コンテンツ要求モジュール２００は、コンテンツ・キャッシュ・データ・ストア２１０に記憶されているコンテンツ・アイテムの識別された部分のうちの１つまたは複数に対応する第１のセットのコンテンツ・データを識別することができる。コンテンツ・キャッシュ・データ・ストア２１０におけるコンテンツ・データがコンテンツ・アイテムの識別された部分に対応しない場合、第１のセットのコンテンツ・データは空であってよく、または第１のセットのコンテンツ・データは生成されなくてよい。また、要求分析に基づいて、クライアント・コンテンツ要求モジュール２００は、コンテンツ・キャッシュ・データ・ストア２１０に記憶されていない（またはそこから欠けている）コンテンツ・アイテムの識別された部分のうちの１つまたは複数に対応する第２のセットのコンテンツ・データを識別することもできる。コンテンツ・アイテムの全てが（たとえば、以前のコンテンツ・ストリーミング・セッション中に）既に受信されコンテンツ・キャッシュ・データ・ストア２１０に記憶されている場合、第２のセットのコンテンツ・データは空であってよく、または第２のセットのコンテンツ・データは生成されなくてよい。
【００５４】
第１のセットのコンテンツ・データ、第２のセットのコンテンツ・データ、または両方を識別することは、要求されているコンテンツ・アイテムに対応する記憶されたコンテンツ・データがあるか否かについてコンテンツ・キャッシュ・データ・ストア２１０を検査
することと、記憶されたコンテンツ・データがコンテンツ・アクセス・モジュールによって要求された特定の部分に対応するか否かを決定することとを備えることができる。また、第２のセットのコンテンツ・データを識別することは、コンテンツ・キャッシュ・データ・ストアに記憶されているコンテンツ・データを、コンテンツ・アクセス・モジュールによってコンテンツ・アイテムが要求されている先のコンテンツ・サーバから入手可能なコンテンツ・データと比較することを備えることができる。
【００５５】
コンテンツ・キャッシュ・モジュール２０２は、コンテンツ・キャッシュ・データ・ストア２１０に対するアクセスを円滑にするように構成され得る。たとえば、コンテンツ・キャッシュ・モジュール２０２は、どのようなコンテンツ・データがコンテンツ・キャッシュ・データ・ストア２１０に記憶されているかを決定する、どのようなコンテンツ・データがコンテンツ・キャッシュ・データ・ストア２１０から欠けているかを決定する、（たとえば、コンテンツ・サーバ１０４から受信された）コンテンツ・データのコンテンツ・キャッシュ・データ・ストア２１０に対する記憶を円滑にする、または（たとえば、コンテンツ消去モジュール２０８による）コンテンツ・キャッシュ・データ・ストア２１０からのコンテンツ・データの除去を円滑にするために利用され得る。コンテンツ・キャッシュ・モジュール２０２はまた、コンテンツ・データ年齢、最終アクセスの時間、およびメタデータなどを含むがそれらに限定されない、コンテンツ・キャッシュ・データ・ストア２１０に記憶されたコンテンツ・データに関する情報を取得することもできる。コンテンツ・キャッシュ・モジュール２０２はさらに、コンテンツ・アクセス・モジュールによる要求に応答してコンテンツ・アクセス・モジュールに対して提供されるべきコンテンツ・データを取得し中間コンテンツ・ストリーミング・システム１０６に対して提供するために利用され得る。
【００５６】
サーバ・コンテンツ要求モジュール２０４は、コンテンツ・キャッシュ・データ・ストア２１０から欠けているコンテンツ・アイテムの識別された部分に対応する第２のセットのコンテンツ・データを求める要求を生成し、コンテンツ・サーバに対して送出するように構成され得る。いくつかの実施形態によれば、サーバ・コンテンツ要求モジュール２０４は、第２のセットのコンテンツ・データを求める要求を送出し、要求された第２のセットのコンテンツ・データの一部または全部を応答として受信する。サーバ・コンテンツ要求モジュール２０４によって送出される要求は、当初はクライアント・デバイスのコンテンツ・アクセス・モジュールからクライアント・コンテンツ要求モジュール２００によって受信された要求とフォーマットまたはプロトコルが同様であってよい。コンテンツ・サーバからコンテンツ・データを受信すると、サーバ・コンテンツ要求モジュール２０４は、コンテンツ・アイテムを要求しているコンテンツ・アクセス・モジュールに対して（たとえば、コンテンツ・ストリーミング・モジュール２０６を通じて）それが提供される前に、受信されたコンテンツ・データを（たとえば、コンテンツ・キャッシュ・モジュール２０２を通じて）コンテンツ・キャッシュ・データ・ストア２１０に記憶することができる。
【００５７】
コンテンツ・ストリーミング・モジュール２０６は、中間コンテンツ・ストリーミング・システム１０６で受信されたコンテンツ・データを、コンテンツ・アイテムを要求しているコンテンツ・アクセス・モジュールに対してデータ・ストリームとして提供するように構成され得る。いくつかの実施形態によれば、コンテンツ・ストリーミング・モジュール２０６は、コンテンツ・データ・ストリームを生成して提供し、そのコンテンツ・データ・ストリームは、サーバ・コンテンツ要求モジュール２０４による要求に応答したコンテンツ・サーバから受信されたコンテンツ・データ・ストリームとフォーマットまたはプロトコルが同様であり得る。コンテンツ・データ・ストリームは、コンテンツ・キャッシュ・モジュール２０２によってコンテンツ・キャッシュ・データ・ストア２１０から提供されるコンテンツ・データ、要求されたコンテンツ・アイテムを提供するコンテンツ・サ
ーバからサーバ・コンテンツ要求モジュール２０４によって取得され提供されるコンテンツ・データ、または両方を含むことができる。いくつかの実施形態によれば、サーバ・コンテンツ要求モジュール２０４によって取得されたコンテンツ・データは、まず（たとえば、コンテンツ・キャッシュ・モジュール２０２を通じて）コンテンツ・キャッシュ・データ・ストア２１０に記憶され、コンテンツ・ストリーミング・モジュール２０６が、コンテンツ・キャッシュ・データ・ストア２１０に記憶されているコンテンツ・データからコンテンツ・データ・ストリームを生成する。
【００５８】
コンテンツ消去モジュール２０８は、コンテンツ・キャッシュ・データ・ストア２１０に記憶されたコンテンツ・データ、いくつかのファクタに対して構成されることが可能であり、以下に限定されないが、それらのファクタは、クライアント・デバイスの記憶限度、コンテンツ・データの年齢、コンテンツ・データの最終アクセス時間、コンテンツ・データのアクセスの頻度、コンテンツ・データのタイプ、コンテンツ・アイテムの部分への対応、またはコンテンツ・データが対応するコンテンツ・アイテムの優先度などを含む。いくつかの実施形態によれば、コンテンツ消去モジュール２０８は、より高い優先度を有する第２のコンテンツ・アイテムに対応するコンテンツ・データを消去する前に、より低い優先度を有する第１のコンテンツ・アイテムに対応するコンテンツ・データを消去する。コンテンツ・アイテムの優先度の決定に関するさらなる詳細が本明細書に説明される。
【００５９】
図３は、本発明の実施形態による優先度ベースのコンテンツ・ダウンロード・システム１０８を示す。図３において、優先度ベースのコンテンツ・ダウンロード・システム１０８は、ニュース・フィード監視モジュール３００、コンテンツ優先度モジュール３０２、コンテンツ事前ダウンロード・モジュール３０４、およびコンテンツ・キャッシュ・モジュール３０６、ならびにコンテンツ・キャッシュ・データ・ストア３０８を含む。いくつかの実施形態によれば、コンテンツ・キャッシュ・データ・ストア３０８は、優先度ベースのコンテンツ・ダウンロード・システム１０８によって提供されるクライアント・デバイス（たとえば、クライアント・デバイス１００）用のローカル・キャッシュとして働く。いくつかの実施形態において、コンテンツ・キャッシュ・データ・ストア３０８は、優先度ベースのコンテンツ・ダウンロード・システム１０８と本明細書に説明されている中間コンテンツ・ストリーミング・システムとの間で共有されるローカル・キャッシュとして働く。図３に示されている構成要素は、追加的な、より少ない、または異なる構成要素を含んでもよい。また、重要な細部を不明瞭にしないために、いくつかの構成要素は図３に示されないことがある。
【００６０】
ニュース・フィード監視モジュール３００は、ニュース・フィードを通じてユーザにアクセス可能にされた１つまたは複数のコンテンツ・アイテムについてニュース・フィードを監視するように構成され得る。本明細書でさらに詳細に説明されているように、ニュース・フィードは、１つまたは複数のニュース投稿を備えることができ、ニュース投稿のそれぞれが１つまたは複数のコンテンツ・アイテムを含むことができる。監視されるニュース・フィードは、ソーシャル・ネットワーキング・システムによって提供され、ソーシャル・ネットワーキング・アプリケーションまたはソーシャル・ネットワーキング・ウェブ・ページにアクセスするウェブ・ブラウザのようなスタンドアロン・アプリケーションを通じてアクセス可能なものであり得る。ニュース・フィード監視モジュール３００によって監視対象とされているコンテンツ・アイテムは、ニュース・フィードを通じてユーザにとって現在可視であるもの（たとえば、ユーザにとって現在可視であるニュース投稿に含まれたもの）、ニュース・フィードを通じて提示されるようにスケジューリングされたもの、または両方であり得る。
【００６１】
監視中、ニュース・フィード監視モジュール３００は、ニュース・フィードを通じてユーザに対して提示されるようにスケジューリングされた１つまたは複数のアイテムを識別
することができる。本明細書でさらに詳細に説明されているように、ニュース・フィードを通じて提示されるようにスケジューリングされたコンテンツ・アイテムは、ニュース・フィード上に提示されるようにスケジューリングされたニュース投稿に含まれるものであり得る。また、ニュース・フィード上に提示されるようにスケジューリングされたニュース投稿は、ニュース・フィードにまだ追加されていないもの、ニュース・フィードから以前に除去された後にニュース・フィードに対してまだ再追加されていないもの、ニュース・フィードに対して既に追加されているがニュース・フィードを通じてユーザによってまだ閲覧されていないもの、またはニュース・フィードを通じてユーザによって少なくとも一度は既に閲覧されているが現在はユーザのビュー内にないものであり得る。ニュース・フィード監視モジュール３００は、定期的または継続的に１つまたは複数のコンテンツ・アイテムを検出するように構成され得る。ニュース・フィードがソーシャル・ネットワーキング・システムによって提供されている場合、ニュース・フィード監視モジュール３００は、ソーシャル・ネットワーキング・システムによって維持されているソーシャル・グラフ・データを使用して、コンテンツ・アイテムに関してニュース・フィードを監視することができる。
【００６２】
コンテンツ優先度モジュール３０２は、コンテンツ・アイテムに関係するファクタに基づいて、所与のコンテンツ・アイテムの優先度を決定するように構成され得る。実施形態によっては、コンテンツ・アイテムの優先度を使用して、コンテンツ・アイテムの事前ダウンロードの順序（たとえば、より高い優先度を有するコンテンツ・アイテムをまず事前ダウンロードする）、ローカルにキャッシュされたコンテンツ・データがクライアント・デバイスから消去されるべき順序（たとえば、より低い優先度を有するコンテンツ・アイテムについてのコンテンツ・データがまず消去される）、またはコンテンツ・アイテムが事前ダウンロードされるべきか否か（たとえば、コンテンツ・アイテムの優先度が事前ダウンロードに対する閾値を満たすか否かに基づく）を決定することができる。いくつかの実施形態では、優先度は、所与のコンテンツ・アイテムに対する他の操作を決定することができる。コンテンツ・アイテムに対して優先度を決定することは、いくつものファクタに基づくことが可能であり、以下に限定されないが、それらのファクタは、コンテンツ・アイテムがユーザにとって可視であるときに自動再生されるか否か、コンテンツ・アイテムが広告に関連付けられているか否か、ユーザのプリファレンス、クライアント・デバイスのリソースの可用性（たとえば、メモリ、プロセッサ速度、ネットワーク帯域幅など）、コンテンツ・アイテムのコンテンツ・タイプ（たとえば、ストリーミング・ビデオ、音声、またはプレゼンテーション）、第１のコンテンツ・アイテムのメタデータ（たとえば、作成者、発行者、主題、タイトルなど）、コンテンツ・アイテムに関連付けられているソーシャル・ネットワーキング情報を含む。いくつかの実施形態において、ソーシャル・ネットワーキング情報は、ソーシャル・ネットワーク上のソーシャル・ネットワーク・ユーザによるコンテンツ・アイテムの「いいね」の量（たとえば、友達または親近者であるソーシャル・ネットワーク・ユーザによって「いいね」を表明されたコンテンツ・アイテムに対して、より高い優先度）、ソーシャル・ネットワーク上のソーシャル・ネットワーク・ユーザによるコンテンツ・アイテムの共有の量（たとえば、「いいね」がより多いと、コンテンツ・アイテムがより人気があり、したがって優先度がより高い）、またはソーシャル・ネットワーク上のソーシャル・ネットワーク・ユーザによるコンテンツ・アイテムに関連付けられているコメントの量（たとえば、コメントがより多いと、コンテンツ・アイテムがより関心をひき、したがって優先度がより高い）を備える。ソーシャル・ネットワーキング情報は、ソーシャル・ネットワーク上の第１のコンテンツ・アイテムに対して「いいね」を表明している１または複数のソーシャル・ネットワーク・ユーザを識別する、ソーシャル・ネットワーク上の第１のコンテンツ・アイテムを共有している１または複数のソーシャル・ネットワーク・ユーザを識別する、あるいはソーシャル・ネットワーク上の第１のコンテンツ・アイテムに対してコメントしている１または複数のソーシャル・ネットワーク・ユーザを識別することができる。コンテンツ・アイテムの優先度を決定
するために使用されるソーシャル情報は、ソーシャル・ネットワーキング・システムによってその様々な機能を支援するために維持されるソーシャル・グラフによって提供され得る。
【００６３】
コンテンツ事前ダウンロード・モジュール３０４は、ニュース・フィード監視モジュール３００によって監視されているニュース・フィード内に提示されるようにスケジューリングされた１つまたは複数のコンテンツ・アイテムを、クライアント・デバイスに対して全てまたは部分的に事前ダウンロードするように構成され得る。また、コンテンツ事前ダウンロード・モジュール３０４は、クライアント・デバイス上のクライアント・アクセス・モジュールがクライアント・アイテムに対するアクセスを要求する前に、クライアント・デバイスに対して１つまたは複数のコンテンツ・アイテムを全てまたは部分的に事前ダウンロードするように構成され得る。本明細書でさらに詳細に説明されているように、コンテンツ・アイテムのコンテンツ・データがコンテンツ事前ダウンロード・モジュール３０４によってクライアント・デバイスに対して事前ダウンロードされると、それはコンテンツ・キャッシュ・データ・ストア３０８に記憶され得る。続いて、事前ダウンロードされるコンテンツ・アイテムに対するアクセスを要求しているコンテンツ・アクセス・モジュールは、コンテンツ・キャッシュ・データ・ストア３０８から可能な限りコンテンツ・データを提供され得る。このようにして、コンテンツ・アイテムの少なくとも事前ダウンロードされた部分に対するアクセスが、コンテンツ・サーバからコンテンツ・アイテムについてのコンテンツ・データを直接的に取得しなければならないときよりも迅速になり得る。コンテンツ・アイテムに関連付けられているコンテンツ・データのすべてに満たないコンテンツ・データがコンテンツ・キャッシュ・データ・ストア３０８に記憶されている場合、コンテンツ・アクセス・モジュールは、直接的にコンテンツ・サーバから、または本明細書に説明されている中間コンテンツ・ストリーミング・システムを通じて、あるいは両方の何らかの組合せを用いて、必要とされるコンテンツ・データを取得することができる。
【００６４】
実施形態によっては、所与のコンテンツ・アイテムのどのくらいがコンテンツ事前ダウンロード・モジュール３０４によって事前ダウンロードされるかは、様々なファクタに応じて変わることが可能であり、以下に限定されないが、それらのファクタは、ユーザ・プリファレンス（たとえば、最初の３０秒のみを事前ダウンロードする）、システム・プリファレンス（たとえば、ソーシャル・ネットワーキング・システムの初期設定）、コンテンツ・アイテムの全体サイズ、コンテンツ・アイテムのタイプ（たとえば、ビデオまたは音声コンテンツ・アイテム）、コンテンツ・アイテムの優先度（たとえば、コンテンツ優先度モジュール３０２によって決定される）、クライアント・デバイスのリソースの可用性（たとえば、メモリ、プロセッサ速度、ネットワーク帯域幅など）、クライアント・デバイスにおけるユーザに対する関連性、およびクライアント・デバイスにおけるユーザによる関心の蓋然性を含む。たとえば、高い優先度を有するコンテンツ・アイテムは、低い優先度を有するコンテンツ・アイテムより多くのコンテンツ・データを事前ダウンロードされ得る。
【００６５】
コンテンツ・キャッシュ・モジュール３０６は、コンテンツ・キャッシュ・データ・ストア３０８に対するアクセスを円滑にするように構成され得る。たとえば、コンテンツ・キャッシュ・モジュール３０６は、どのようなコンテンツ・データがコンテンツ・キャッシュ・データ・ストア３０８に記憶されているかを決定する、どのようなコンテンツ・データがコンテンツ・キャッシュ・データ・ストア３０８から欠けているかを決定する、（たとえば、コンテンツ事前ダウンロード・モジュール３０４によって受信され事前ダウンロードされた）コンテンツ・データのコンテンツ・キャッシュ・データ・ストア３０８に対する記憶を円滑にする、またはコンテンツ・キャッシュ・データ・ストア３０８からのコンテンツ・データの除去を円滑にするために利用され得る。コンテンツ・キャッシュ・
モジュール３０６はまた、コンテンツ・データ年齢、最終アクセスの時間、およびメタデータなどを含むがそれらに限定されない、コンテンツ・キャッシュ・データ・ストア３０８に記憶されたコンテンツ・データに関する情報を取得することもできる。
【００６６】
図３ではニュース・フィードに関して図示され説明されているが、いくつかの実施形態では、優先度ベースのコンテンツ・ダウンロード・システム１０８は、スタンドアロン・アプリケーションを通じて提供されたコンテンツ・アイテムまたはウェブ・ブラウザによって閲覧可能なウェブ・ページに埋め込まれたコンテンツ・アイテムを含むがそれらに限定されないコンテンツ・アイテムを配信するための他の方法と共に利用される。
【００６７】
図４は、本発明の実施形態に従って使用される例示的なニュース・フィード４００を示す。ニュース・フィード４００は、ソーシャル・ネットワーキング・システムによって提供されるものでよく、また、１つまたは複数のニュース・アイテム（以下「ニュース投稿」）を提供するように構成されてよく、ニュース・アイテムのそれぞれが、ソーシャル・ネットワーキング・システムに検出されまたは投稿された１つまたは複数のイベントを記述している。たとえば、ニュース・フィード４００は、ソーシャル・ネットワーキング・システムを支援するソーシャル・グラフ・データのノード、エッジ、または係数に基づいて１つまたは複数のニュース投稿を含むことができる。
【００６８】
本明細書でさらに詳細に説明されているように、ソーシャル・ネットワーキング・システムは、複数のエッジによって相互接続された複数のノードを備える「ソーシャル・グラフ」を生成し維持することができ、ソーシャル・グラフ内の各ノードは、別のノードに対して作用すること、および／または別のノードによって作用されることが可能なエンティティを表すことができる。ソーシャル・グラフは、たとえば、ユーザ、人以外のエンティティ、コンテンツ・アイテム、ウェブ・ページ、グループ、アクティビティ、メッセージ、コンセプト、およびソーシャル・ネットワーキング・システム内のオブジェクトによって表現され得る任意の他のものを含む、様々なタイプのノードを含むことができる。また、ソーシャル・グラフは、ソーシャル・グラフ内のノード間のパスに対する重みを反映し、ソーシャル・グラフ内のノード間の関係性の尺度の役割をする係数を含むことができる（たとえば、重みに基づいて、係数は、ユーザが、その親友に対して、ユーザが友達になった別の人物よりも近いことを示すことができる）。したがって、ソーシャル・グラフ・データに含まれるノード、エッジ、または係数に基づいて、ニュース・フィード４００は、１つまたは複数のニュース投稿を、ソーシャル・ネットワーキング・システムのソーシャル・グラフ内の所与のノードに対するそれらのニュース投稿の関係に応じて投入され得る。たとえば、ニュース・フィード４００は、特定のソーシャル・ネットワーキング・ユーザを表すノードに対して生成される個別のソーシャル・ネットワーキング・ニュース・フィードであり得る。
【００６９】
図４に示されるように、ニュース・フィード４００は、複数のニュース投稿４０２−１、４０２−２、４０２−３、４０２−４、および４０２−５（以下「ニュース投稿４０２」）を含む。ニュース・フィード４００は、ソーシャル・ネットワーキング・システムによって提供され、ソーシャル・ネットワーキング・アプリケーションまたはソーシャル・ネットワーキング・ウェブ・ページにアクセスするウェブ・ブラウザのようなスタンドアロン・アプリケーションを通じてアクセス可能であり得る。図４において、ニュース投稿Ｐ−１およびＰ−２は、クライアント・デバイス・ディスプレイ４０４を通じてユーザによって既に閲覧されたニュース投稿であり、ニュース投稿Ｐ＋１およびＰ＋２は、クライアント・デバイスのユーザによるアクセスのためにクライアント・デバイス・ディスプレイ４０４を通じて提示されるようにスケジューリングされたニュース投稿であり得る。実施形態によっては、ニュース投稿４０２は、それらがニュース・フィード４００において投稿される順序に従って閲覧され得る。さらに詳細に本明細書で使用される場合、ニュー
ス・フィード上に提示されるようにスケジューリングされたニュース投稿またはコンテンツ・アイテムは、たとえば、ニュース・フィードにまだ追加されていないもの、ニュース・フィードから以前に除去された後にニュース・フィードに対してまだ再追加されていないもの、ニュース・フィードに対して既に追加されているがニュース・フィードを通じてユーザによってまだ閲覧されていないもの、またはニュース・フィードを通じてユーザによって少なくとも一度は既に閲覧されているが現在はユーザのビュー内にないものを含み得る。
【００７０】
実施形態によっては、ニュース投稿４０２のそれぞれが、１つまたは複数のコンテンツ・アイテムを含むことができる。コンテンツ・アイテムを含むとき、ニュース投稿４０２は、ハイパーリンクによって、またはニュース投稿のコンテンツにコンテンツ・アイテムを埋め込むことによって、あるいは両方によって、コンテンツ・アイテムを含むことができる。ソーシャル・ネットワーキング・システムの文脈において、ニュース・フィード４００は、ソーシャル・ネットワーキング・システムを支援するソーシャル・グラフ・データに対する１つもしくは複数の変更、またはニュース・フィード４００を現在閲覧しているソーシャル・ネットワーキング・ユーザの挙動を含む様々なファクタに基づいて、追加のニュース投稿によって更新され得る。ソーシャル・グラフ・データに対する変更は、ソーシャル・ネットワーク・イベントがノードとしてソーシャル・グラフ・データに対して追加されたときを含み得る。ニュース・フィード４００を現在閲覧しているソーシャル・ネットワーキング・ユーザに対する、それら追加されるノードの関係に基づいて、ニュース投稿は、ニュース・フィード４００に対して追加されてよい。
【００７１】
図４にも示されるように、ニュース・フィード４００は、ニュース・フィード４００の特定の部分がクライアント・デバイス・ディスプレイ４０４を通して可視になるように、クライアント・デバイス・ディスプレイ４０４に対して位置付けられる。図４に示されるように、クライアント・デバイス・ディスプレイ４０４に対するニュース・フィード４００の位置によって、クライアント・デバイス・ディスプレイ４０４を通してニュース・フィード４００を閲覧するユーザに、ニュース投稿Ｐ０、ニュース投稿Ｐ−１の下部、およびニュース投稿Ｐ＋１の上部だけを閲覧させることが可能である。ユーザがクライアント・デバイス・ディスプレイ４０４に対して上下方向にニュース・フィード４００を再配置すると（たとえば、クライアント・デバイスに対するユーザ入力に基づいてニュース・フィード４００をスクロール・アップまたはダウンすると）、クライアント・デバイス・ディスプレイ４０４におけるユーザによるニュース投稿４０２の一部または全部の可視性が増大または減少し得る。また、ユーザがクライアント・デバイス・ディスプレイ４０４に対して上下方向にニュース・フィード４００を再配置すると、ニュース・フィード４００は、追加のニュース投稿が自動的に投入され、またはニュース・フィード４００上に現在あるニュース投稿が削除され、あるいは両方が行われ得る。たとえば、ニュース・フィード４００のニュース投稿Ｐ＋２がクライアント・デバイス・ディスプレイ４００のビューに入るように、ユーザがニュース・フィード４００を再配置したとすると、ニュース投稿Ｐ−２がニュース・フィード４００の上部から除去され、ニュース投稿Ｐ＋３（図示せず）がニュース・フィード４００の下部に対して追加され得る。
【００７２】
ニュース・フィード４００に関連して、本明細書でさらに詳細に説明されているように、ニュース投稿Ｐ＋１およびニュース投稿Ｐ＋２は、ニュース・フィード４００を通じたアクセスのためにユーザに対して最終的に提示されるようにスケジューリングされたニュース投稿であると考えられ得る（ただし、それらは、クライアント・デバイス・ディスプレイ４０４を通してユーザによってまだ閲覧されていない）。いくつかの実施形態では、ニュース・フィード４００の様々な態様、たとえば、挙動、方向、概観、および動作などが、図４に示されたもの、または本明細書に説明されたものと異なる場合がある。
【００７３】
ニュース・フィード４００を通じて、ニュース投稿４０２のうちの１つに含まれるコンテンツ・アイテムが、クライアント・デバイスにおけるユーザによってアクセス可能であり得る。たとえば、ニュース・フィード４００に含まれるニュース投稿がクライアント・デバイス・ディスプレイ４０４を通して可視となると、ニュース投稿に含まれる任意のコンテンツ・アイテム（たとえば、ストリーミング・ビデオ・コンテンツ・アイテム）が、クライアント・デバイスにおけるユーザにアクセス可能となり得る。いくつかの実施形態によれば、コンテンツ・アイテムを有するニュース投稿４０２のうちの１つがニュース・フィード４００を通じてアクセス可能になる前に、優先度ベースのコンテンツ・ダウンロード・システムが、クライアント・デバイスに対してコンテンツ・アイテムを全てまたは部分的に事前ダウンロードすることができる。たとえば、ユーザがニュース・フィード４００に対してクライアント・デバイス・ディスプレイ４０４を再配置することで、ニュース投稿Ｐ＋２がクライアント・デバイス・ディスプレイ４０４を通して可視状態になる（かつ、ビュー内でユーザにアクセス可能になる）前に、ニュース投稿Ｐ＋２に含まれる任意のコンテンツ・アイテムが全てまたは部分的にクライアント・デバイスに対して事前ダウンロードされ得る。そうする場合、ニュース投稿Ｐ＋２に含まれるコンテンツ・アイテム（たとえば、自動再生されるビデオまたは音声）は、ニュース投稿Ｐ＋２がクライアント・デバイス・ディスプレイ４０４を通してビューに入り次第、アクセスされる準備ができていることになる。いくつかの実施形態によれば、優先度ベースのコンテンツ・ダウンロード・システムは、ニュース投稿Ｐ＋１に含まれる第１のコンテンツ・アイテムに対して第１の優先度を決定し、ニュース投稿Ｐ＋２に含まれる第２のコンテンツ・アイテムに対して第２の優先度を決定し、第１の優先度が第２の優先度よりも高い（またはそれと等しい）場合に、第２のコンテンツ・アイテムを事前ダウンロードする前にクライアント・デバイスに対して第１のコンテンツ・アイテムの一部または全部を事前ダウンロードし、第２の優先度が第１の優先度よりも高い場合に、第１のコンテンツ・アイテムを事前ダウンロードする前にクライアント・デバイスに対して第２のコンテンツ・アイテムの一部または全部を事前ダウンロードする。
【００７４】
図５は、本発明の実施形態による中間コンテンツ・ストリーミングのための例示的なプロセス５００を示す。いくつかの実施形態によれば、プロセス５００は、クライアント・デバイス１００上で中間コンテンツ・ストリーミング・システム１０６によって行われるプロセスとすることができる。ブロック５０２で、コンテンツ・サーバからコンテンツ・アイテムを求めるコンテンツ・アクセス・アプリケーションによる要求が受信され得る。本明細書でさらに詳細に説明されているように、コンテンツ・アクセス・アプリケーションは、クライアント・デバイス上で動作していることが可能であり、コンテンツ・アクセス・アプリケーションによる要求は、同じクライアント・デバイスにおいて受信され得る。実施形態によっては、要求は、直接的に受信、転送（たとえば、クライアント・デバイス上の構成要素が、ブロック５０２による処理のために全てのオンライン・コンテンツ・アイテム要求を転送するように構成される）、またはインターセプトによって受信され得る。また、要求は、ＨＴＴＰ、ＦＴＰ、およびＲＴＰなどを含むがそれらに限定されない１つまたは複数のタイプのネットワーク・プロトコルを含み得る。
【００７５】
ブロック５０４で、要求が分析され得る。要求を分析することによって、プロセス５００は、要求されているコンテンツ・アイテムを識別する、コンテンツ・アイテムが求められた先のコンテンツ・サーバを識別する、要求のタイプを識別する、またはコンテンツ・アイテムの特定の要求された部分（たとえば、コンテンツ・アイテムにおける時間位置）を識別することができる。
【００７６】
ブロック５０６で、要求されたコンテンツ・アイテムの１つまたは複数の部分が識別され得る。たとえば、プロセス５００は、ブロック５０４によって提供された要求分析を利用して、コンテンツ・アイテムの要求された部分を識別することができる。
【００７７】
ブロック５０８で、第１のセットのコンテンツ・データが識別されることが可能であり、それにより、第１のセットのコンテンツ・データは、ローカル・キャッシュに記憶されているコンテンツ・アイテムの識別された部分のうちの１つまたは複数に対応する。ローカル・キャッシュにおけるコンテンツ・データがコンテンツ・アイテムの識別された部分に対応しない場合、第１のセットのコンテンツ・データは空であってよく、第１のセットのコンテンツ・データは生成されなくてよく、またはブロック５０８と５１０の一方もしくは両方が省略されてよい。いくつかの実施形態において、ローカル・キャッシュは、ブロック５０２でコンテンツ・アイテムを求める要求を受信し、かつコンテンツ・アイテムを要求しているクライアント・アクセス・アプリケーションを動作させているクライアント・デバイスと同じクライアント・デバイスに配置される。第１のセットのコンテンツ・データを識別することは、要求されているコンテンツ・アイテムに対応する記憶されたコンテンツ・データがあるか否かについてローカル・キャッシュを検査することと、記憶されたコンテンツ・データがコンテンツ・アクセス・アプリケーションによって要求された特定の部分に対応するか否かを決定することとを備えることができる。
【００７８】
ブロック５１０で、第１のセットのコンテンツ・データの少なくともいくつかが、ローカル・キャッシュからコンテンツ・アクセス・アプリケーションに対して提供される。本明細書でさらに詳細に述べられているように、ローカル・キャッシュは、ブロック５０２でコンテンツ・アイテムを求める要求を受信し、かつコンテンツ・アイテムを要求しているクライアント・アクセス・アプリケーションを動作させているクライアント・デバイスと同じクライアント・デバイスに配置され得る。また、コンテンツ・データは、ローカル・キャッシュからコンテンツ・アクセス・アプリケーションに対してコンテンツ・データ・ストリームとして提供され得る。
【００７９】
ブロック５１２で、第２のセットのコンテンツ・データが識別されることが可能であり、それにより、第２のセットのコンテンツ・データは、ローカル・キャッシュから欠けているコンテンツ・アイテムの識別された部分のうちの１つまたは複数に対応する。コンテンツ・アイテムの全てが（たとえば、以前のコンテンツ・ストリーミング・セッション中に）既に受信されローカル・キャッシュに記憶されている場合、第２のセットのコンテンツ・データは空であってよく、第２のセットのコンテンツ・データは生成されなくてよく、またはブロック５１２〜５２０のうちの１つまたは複数が省略されてよい。本明細書でさらに詳細に述べられているように、ローカル・キャッシュは、ブロック５０２でコンテンツ・アイテムを求める要求を受信し、かつコンテンツ・アイテムを要求しているクライアント・アクセス・アプリケーションを動作させているクライアント・デバイスと同じクライアント・デバイスに配置され得る。また、第２のセットのコンテンツ・データを識別することは、要求されているコンテンツ・アイテムに対応する記憶されたコンテンツ・データがあるか否かについてローカル・キャッシュを検査することと、記憶されたコンテンツ・データがコンテンツ・アクセス・アプリケーションによって要求された特定の部分に対応するか否かを決定することとを備えることができる。また、第２のセットのコンテンツ・データを識別することは、ローカル・キャッシュに記憶されているコンテンツ・データを、コンテンツ・アクセス・アプリケーションによってコンテンツ・アイテムが要求されている先のコンテンツ・サーバから入手可能なコンテンツ・データと比較することを備えることができる。
【００８０】
ブロック５１４で、第２のセットのコンテンツ・データの少なくとも一部がコンテンツ・サーバに対して要求されることが可能であり、ブロック５１６で、コンテンツ・サーバからのコンテンツ・データがコンテンツ・サーバから受信される。いくつかの実施形態によれば、プロセス５００は、ブロック５０４によって提供された要求分析を利用して、コンテンツ・サーバに対する第２のセットのコンテンツ・データを求める要求を生成する。
プロセス５００は、分析に基づいて、ブロック５０２でコンテンツ・アクセス・アプリケーションから受信された要求と同様である（たとえば、フォーマットまたはプロトコルについて同様である）。コンテンツ・サーバに対する要求を生成することができる。ブロック５１６で、コンテンツ・サーバからのコンテンツ・データがデータ・ストリームとして受信されることが可能であり、このデータ・ストリームは、コンテンツ・サーバがコンテンツ・データをコンテンツ・アクセス・アプリケーションに対して直接的に提供していた場合（たとえば、中間コンテンツ・ストリーミング・システム１０６がコンテンツ・データ・ストリームに関与しなかった場合）、コンテンツ・アクセス・アプリケーションに対してコンテンツ・サーバに対して提供されたデータ・ストリームと同様であり得る。
【００８１】
ブロック５１８で、（たとえば、ブロック５１４の要求に応答して）コンテンツ・サーバから受信された第２のセットのコンテンツ・データが、ローカル・キャッシュに記憶され得る。本明細書でさらに詳細に述べられているように、ローカル・キャッシュは、ブロック５０２でコンテンツ・アイテムを求める要求を受信し、かつコンテンツ・アイテムを要求しているクライアント・アクセス・アプリケーションを動作させているクライアント・デバイスと同じクライアント・デバイスに配置され得る。
【００８２】
ブロック５２０で、第２のセットのコンテンツ・データの少なくとも一部が、ローカル・キャッシュからコンテンツ・アクセス・アプリケーションに対して提供され得る。ブロック５１０と同様に、コンテンツ・データは、ローカル・キャッシュからコンテンツ・アクセス・アプリケーションに対してコンテンツ・データ・ストリームとして提供され得る。いくつかの実施形態において、ブロック５１０、ブロック５２０、または両方によってコンテンツ・アクセス・アプリケーションに対して提供されたデータ・ストリームは、ブロック５１６でコンテンツ・サーバからコンテンツ・データを受信するために使用されたデータ・ストリームと同様であり得る。
【００８３】
実施形態によっては、図５で示された動作は、図示されたのと別の順序で行われてよく、１つまたは複数の動作が直列または実質的に並列に行われてもよい。たとえば、第１のセットのコンテンツ・データに関るブロック５０８の動作は、第２のセットのコンテンツ・データに関るブロック５１２、５１４、５１６、および５１８のうちの１つまたは複数の動作と並列または実質的に並列に行われることがある。別の例では、ブロック５１８の動作とブロック５２０の動作が並列または実質的に並列に行われることがある。さらに別の例では、ブロック５２０の動作がブロック５１８の動作の前に行われることがある。いくつかの実施形態において、中間コンテンツ・ストリーミングに関するプロセスは、図示された動作よりも多数または少数の動作を行う。
【００８４】
図６は、本発明の実施形態による優先度ベースのコンテンツ・ダウンロードのための例示的なプロセス６００を示す。いくつかの実施形態によれば、プロセス６００は、優先度ベースのコンテンツ・ダウンロード・システム１０８によって行われるものであり得る。ブロック６０２で、クライアント・デバイスのディスプレイ上のニュース・フィード（たとえば、ニュース・フィード４００）が、コンテンツ・アイテムに関して監視され得る。本明細書でさらに詳細に説明されているように、監視対象とされているコンテンツ・アイテムは、ニュース・フィードを通じてユーザにとって現在可視であるもの、ニュース・フィードを通じて提示されるようにスケジューリングされたもの、または両方であり得る。
【００８５】
ブロック６０４で、ニュース・フィードを通じてユーザに対して提示されるようにスケジューリングされた第１のコンテンツ・アイテムが識別され得る。本明細書でさらに詳細に説明されているように、ニュース・フィードを通じて提示されるようにスケジューリングされたコンテンツ・アイテムは、ニュース・フィード上に提示されるようにスケジューリングされたニュース投稿に含まれるものであり得る。また、ニュース・フィード上に提
示されるようにスケジューリングされたニュース投稿は、ニュース・フィードにまだ追加されていないもの、以前にニュース・フィードから除去された後にニュース・フィードに対してまだ再追加されていないもの、ニュース・フィードに対して既に追加されているがニュース・フィードを通じてユーザによってまだ閲覧されていないもの、またはニュース・フィードを通じてユーザによって少なくとも一度は既に閲覧されているが現在はユーザのビュー内にないものであり得る。
【００８６】
ブロック６０６で、第１のコンテンツ・アイテムに対する第１の優先度が決定され得る。本明細書でさらに詳細に説明されているように、コンテンツ・アイテムに対して優先度を決定することは、いくつものファクタに基づくことが可能であり、以下に限定されないが、それらのファクタは、コンテンツ・アイテムがユーザにとって可視であるときに自動再生されるか否か、コンテンツ・アイテムが広告に関連付けられているか否か、ユーザのプリファレンス、クライアント・デバイスのリソースの可用性（たとえば、メモリ、プロセッサ速度、ネットワーク帯域幅など）、コンテンツ・アイテムのコンテンツ・タイプ（たとえば、ストリーミング・ビデオ、音声、またはプレゼンテーション）、第１のコンテンツ・アイテムのメタデータ（たとえば、作成者、発行者、主題、タイトルなど）、コンテンツ・アイテムに関連付けられているソーシャル・ネットワーキング情報を含む。いくつかの実施形態において、ソーシャル・ネットワーキング情報は、ソーシャル・ネットワーク上のソーシャル・ネットワーク・ユーザによるコンテンツ・アイテムの「いいね」の量、ソーシャル・ネットワーク上のソーシャル・ネットワーク・ユーザによるコンテンツ・アイテムの共有の量、またはソーシャル・ネットワーク上のソーシャル・ネットワーク・ユーザによるコンテンツ・アイテムに関連付けられているコメントの量を備える。ソーシャル・ネットワーキング情報は、ソーシャル・ネットワーク上の第１のコンテンツ・アイテムに対して「いいね」を表明している１または複数のソーシャル・ネットワーク・ユーザを識別する、ソーシャル・ネットワーク上の第１のコンテンツ・アイテムを共有している１または複数のソーシャル・ネットワーク・ユーザを識別する、あるいはソーシャル・ネットワーク上の第１のコンテンツ・アイテムに対してコメントしている１または複数のソーシャル・ネットワーク・ユーザを識別することができる。コンテンツ・アイテムの優先度を決定するために使用されるソーシャル情報は、ソーシャル・ネットワーキング・システムによってその様々な機能を支援するために維持されるソーシャル・グラフによって提供され得る。
【００８７】
ブロック６０８で、ニュース・フィードを通じてユーザに対して提示されるようにスケジュールされた第２のコンテンツ・アイテムが識別されることが可能であり、ブロック６１０で、第２のコンテンツ・アイテムに対する第２の優先度が決定されることが可能である。第２のコンテンツ・アイテムに対する第２の優先度は、ブロック６０６で第１の優先度が第１のコンテンツ・アイテムに対して決定されたのと同様の手法により決定されてよい。
【００８８】
ブロック６１２で、第２の優先度に照らした第１の優先度に基づいて、第２のコンテンツ・アイテムがクライアント・デバイスに対して事前ダウンロードされる前に、第１のコンテンツ・アイテムの少なくとも一部がクライアント・デバイスに対して事前ダウンロードされ得る。これは、たとえば、第１の優先度と第２の優先度が比較されて、第１の優先度が第２の優先度よりも高いと決定された場合に起こり得る。コンテンツ・アイテムをクライアント・デバイスに対して事前ダウンロードすると、事前ダウンロードされたコンテンツ・アイテムの部分が、クライアント・デバイスに配置されたローカル・キャッシュに記憶され得る。利用されるローカル・キャッシュは、本明細書に説明されている中間コンテンツ・ストリーミング・システムと共有されるものであってよい。いくつかの実施形態では、コンテンツ・アイテムの事前ダウンロードは、本明細書に説明されている中間コンテンツ・ストリーミング・システムに、プロセス６００の代わりにコンテンツを事前ダウ
ンロードするように命令することによって円滑にされ得る。
【００８９】
ブロック６１４で、第１の優先度に照らした第２の優先度に基づいて、第１のコンテンツ・アイテムの少なくとも一部がクライアント・デバイスに対して事前ダウンロードされた後に、第２のコンテンツ・アイテムの少なくとも一部がクライアント・デバイスに対して事前ダウンロードされ得る。いくつかの実施形態によれば、第１のコンテンツ・アイテムのクライアント・デバイスに対する事前ダウンロードが開始した後であるが、第１のコンテンツ・アイテムの事前ダウンロードが完了する前に、第２のコンテンツ・アイテムのクライアント・デバイスに対する事前ダウンロードが開始する。このようにして、第１のおよび第２のコンテンツ・アイテムが、可能ならば実質的に並列でクライアント・デバイスに対して事前ダウンロードされ得る。
【００９０】
ブロック６１６で、第１のコンテンツ・アイテムがニュース・フィードを通じてユーザに対して提示され得る。また、ブロック６１８で、第２のコンテンツ・アイテムがニュース・フィードを通じてユーザに対して提示され得る。ニュース・フィードを通じてコンテンツ・アイテムを提示することにより、コンテンツ・アイテムはニュース・フィードを通じてユーザにアクセス可能になり得る。いくつかの実施形態では、コンテンツ・アイテムがクライアント・デバイスに対して事前ダウンロードされニュース・フィードを通じて提示されると、コンテンツ・アイテムが、（たとえば、クライアント・デバイス・ディスプレイ４０４上で）ユーザのビュー内にあるときにアクセスされ、ユーザによって選択される（たとえば、ユーザがコンテンツ・アイテムを再生することを選択する）。いくつかの実施形態では、コンテンツ・アイテムがクライアント・デバイスに対して事前ダウンロードされニュース・フィードを通じて提示されると、コンテンツ・アイテムが（たとえば、クライアント・デバイス・ディスプレイ４０４上で）ユーザのビューに入ったときに、コンテンツ・アイテムは自動アクセスされる（たとえば、自動再生される）。
【００９１】
実施形態によっては、図６で示された動作は、図示されたのと別の順序で行われてよく、１つまたは複数の動作が直列または実質的に並列に行われてもよい。また、いくつかの実施形態において、優先度ベースのコンテンツ・ダウンロードのためのプロセスは、図示された動作よりも多数または少数の動作を行う。
【００９２】
図７は、本開示の実施形態に係るソーシャル・ネットワーキング環境７００における、中間コンテンツ・ストリーミングおよび優先度ベースのコンテンツ・ダウンロードのためのシステムの例示的なネットワーク図を例示する。ソーシャル・ネットワーキング・システム７００は、１つまたは複数のユーザ・デバイス７１０と、１つまたは複数の外部システム７２２と、ソーシャル・ネットワーキング・システム７３０と、ネットワーク７５０とを含む。例示の目的のために、図７によって示される、ソーシャル・ネットワーキング環境７００の実施形態は、単一の外部システム７２２と、単一のユーザ・デバイス７１０とを含む。ただし、他の実施形態において、ソーシャル・ネットワーキング環境７００は、より多くのユーザ・デバイス７１０、およびより多くの外部システム７２２を含んでもよい。特定の実施形態において、ソーシャル・ネットワーキング・システム７３０は、ソーシャル・ネットワーク・プロバイダによって運営されるのに対して、外部システム７２２は、異なるエンティティによって運営され得るという点で、ソーシャル・ネットワーキング・システム７３０とは別個のものである。しかしながら、様々な実施形態において、ソーシャル・ネットワーキング・システム７３０および外部システム７２２は、共に動作して、ソーシャル・ネットワーキング・システム７３０のユーザ（またはメンバー）に対してソーシャル・ネットワーキング・サービスを提供する。この意味において、ソーシャル・ネットワーキング・システム７３０は、外部システム７２２などの他のシステムがインターネット上のユーザに対してソーシャル・ネットワーキング・サービスおよび機能性を提供するために使用し得るプラットフォームまたはバックボーンを提供する。
【００９３】
ユーザ・デバイス７１０は、ユーザから入力を受け取り、ネットワーク７５０を通じてデータを送受信することができる１つまたは複数のコンピューティング・デバイスを備える。一実施形態において、ユーザ・デバイス７１０は、例えば、マイクロソフト・ウィンドウズ（登録商標）と互換性のあるオペレーティング・システム（ＯＳ）、Ａｐｐｌｅ  ＯＳ  Ｘ、および／またはＬｉｎｕｘ（登録商標）ディストリビューションを実行する従来のコンピュータ・システムである。別の実施形態において、ユーザ・デバイス７１０は、スマートフォン、タブレット、携帯情報端末（ＰＤＡ：ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ）、携帯電話等などのコンピュータ機能性を有するデバイスであってもよい。ユーザ・デバイス７１０は、ネットワーク７５０を通じて通信するように構成される。ユーザ・デバイス７１０は、アプリケーション、例えば、ユーザ・デバイス７１０のユーザがソーシャル・ネットワーキング・システム７３０と相互作用することを可能にするブラウザ・アプリケーションを実行することができる。別の実施形態において、ユーザ・デバイス７１０は、ｉＯＳおよびＡＮＤＲＯＩＤ（登録商標）などの、ユーザ・デバイス７１０のネイティブ・オペレーティング・システムによって提供されるアプリケーション・プログラミング・インタフェース（ＡＰＩ）を通じてソーシャル・ネットワーキング・システム７３０を相互作用する。ユーザ・デバイス７１０は、ネットワーク７５０を通じて外部システム７２２およびソーシャル・ネットワーキング・システム７３０と通信するように構成される。ネットワーク７５０は、有線通信システムおよび／または無線通信システムを使用する、ローカル・エリア・ネットワークおよび広域ネットワークの任意の組み合わせを備え得る。
【００９４】
１つの実施形態において、ネットワーク７５０は、標準的な通信技術およびプロトコルを使用する。したがって、ネットワーク７５０は、イーサネット（登録商標）、７０２．１１、マイクロ波アクセスのための世界的相互運用性（ＷｉＭＡＸ：ｗｏｒｌｄｗｉｄｅ
ｉｎｔｅｒｏｐｅｒａｂｉｌｉｔｙ  ｆｏｒ  ｍｉｃｒｏｗａｖｅ  ａｃｃｅｓｓ）、３Ｇ、４Ｇ、ＣＤＭＡ、ＧＳＭ（登録商標）、ＬＴＥ、デジタル加入者線（ＤＳＬ：ｄｉｇｉｔａｌ  ｓｕｂｓｃｒｉｂｅｒ  ｌｉｎｅ）等などの技術を使用するリンクを含み得る。同様に、ネットワーク７５０上で使用されるネットワーキング・プロトコルは、マルチプロトコル・ラベル・スイッチング（ＭＰＬＳ：ｍｕｌｔｉｐｒｏｔｏｃｏｌ  ｌａｂｅｌ  ｓｗｉｔｃｈｉｎｇ）、送信制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）、ユーザ・データグラム・プロトコル（ＵＤＰ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、簡易メール転送プロトコル（ＳＭＴＰ：ｓｉｍｐｌｅ  ｍａｉｌ  ｔｒａｎｓｆｅｒ  ｐｒｏｔｏｃｏｌ）、ファイル転送プロトコル（ＦＴＰ）などを含み得る。ネットワーク７５０上で交換されるデータは、ハイパーテキスト・マークアップ言語（ＨＴＭＬ）および拡張マークアップ言語（ＸＭＬ）を含む技術および／またはフォーマットを使用して表現され得る。また、全部または一部のリンクは、セキュア・ソケット・レイヤ（ＳＳＬ）、トランスポート・レイヤ・セキュリティ（ＴＬＳ）、およびインターネット・プロトコル・セキュリティ（ＩＰｓｅｃ）などの従来の暗号化技術を使用して暗号化され得る。
【００９５】
１つの実施形態において、ユーザ・デバイス７１０は、外部システム７２２から、およびソーシャル・ネットワーキング・システム７３０から受信されるマークアップ言語文書７１４を、ブラウザ・アプリケーション７１２を使用して処理することによって、外部システム７２２からのコンテンツおよび／またはソーシャル・ネットワーキング・システム７３０からのコンテンツを表示し得る。マークアップ言語文書７１４は、コンテンツと、そのコンテンツのフォーマッティングまたは表示方法を記述する１つまたは複数の命令とを識別する。マークアップ言語文書７１４内に含まれる命令を実行することによって、ブラウザ・アプリケーション７１２は、マークアップ言語文書７１４によって記述されたフォーマットまたは表示方法を使用して、識別されたコンテンツを表示する。例えば、マー
クアップ言語文書７１４は、外部システム７２２およびソーシャル・ネットワーキング・システム７３０から得られたテキストおよび／または画像データを含む複数のフレームを有するウェブ・ページを生成および表示するための命令を含む。様々な実施形態において、マークアップ言語文書７１４は、拡張マークアップ言語（ＸＭＬ）データ、拡張ハイパーテキスト・マークアップ言語（ＸＨＴＭＬ）データ、または、他のマークアップ言語データを含むデータ・ファイルを備える。また、マークアップ言語文書７１４は、外部システム７２２とユーザ・デバイス７１０との間のデータ交換を容易にするためのジャバスクリプト・オブジェクト・ノーテーション（ＪＳＯＮ：ＪａｖａＳｃｒｉｐｔ（登録商標）Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ）データ、パディング付きのＪＳＯＮ（ＪＳＯＮＰ：ＪＳＯＮ  ｗｉｔｈ  ｐａｄｄｉｎｇ）データ、およびジャバスクリプト・データを含み得る。ユーザ・デバイス７１０上のブラウザ・アプリケーション７１２は、ジャバスクリプト・コンパイラを使用して、マークアップ言語文書７１４を復号し得る。
【００９６】
マークアップ言語文書７１４は、ＦＬＡＳＨ（商標）アプリケーションまたはＵｎｉｔｙ（商標）アプリケーション、ＳｉｌｖｅｒＬｉｇｈｔ（商標）アプリケーション・フレームワーク等などの、アプリケーションまたはアプリケーション・フレームワークも含み、または、これらに対してもリンクし得る。
【００９７】
１つの実施形態において、ユーザ・デバイス７１０は、ユーザ・デバイス７１０のユーザがソーシャル・ネットワーキング・システム７３０へログインしたかを示すデータを含む、１つまたは複数のクッキー７１６も含む。クッキー７１６は、ソーシャル・ネットワーキング・システム７３０からユーザ・デバイス７１０へ通信されるデータのカスタム化を可能にし得る。
【００９８】
外部システム７２２は、１つまたは複数のウェブ・ページ７２４ａ、７２４ｂを含む、１つまたは複数のウェブ・サーバを含む。１つまたは複数のウェブ・ページ７２４ａ、７２４ｂは、ネットワーク７５０を使用して、ユーザ・デバイス７１０へ通信される。外部システム７２２は、ソーシャル・ネットワーキング・システム７３０とは別個である。例えば、外部システム７２２は、第１のドメインに対して関連付けられるが、ソーシャル・ネットワーキング・システム７３０は、別個のソーシャル・ネットワーキング・ドメインに対して関連付けられる。外部システム７２２に含まれるウェブ・ページ７２４ａ、７２４ｂは、コンテンツを識別し、識別されたコンテンツのフォーマッティングおよび表示方法を特定する命令を含むマークアップ言語文書７１４を備える。
【００９９】
一実施形態では、ユーザ・デバイス７１０は、コンテンツ・アイテムについてのコンテンツ・データが外部システム７２２などのコンテンツ・サーバからネットワーク７５０を通じてユーザ・デバイス７１０に対してストリーミングされると、そのコンテンツ・アイテムをユーザ・デバイス７１０にローカルにキャッシュするように構成された中間コンテンツ・ストリーミング・システム７１８を含む。ユーザ・デバイス７１０におけるブラウザ・アプリケーション７１２は、ソーシャル・ネットワーキング・システム７３０により提供されたウェブ・ページにアクセスしていることがあり、ユーザ・デバイス７１０における中間コンテンツ・ストリーミング・システム７１８を通じて、ウェブ・ページに含まれるが外部システム７２２によって提供されたコンテンツ・アイテム（たとえば、音声）の一部または全部を要求することができる。コンテンツ・データは、外部システム７２２から中間コンテンツ・ストリーミング・システム７１８によって（たとえば、データ・ストリームとして）受信されると、中間コンテンツ・ストリーミング・システム７１８によってブラウザ・アプリケーション７１２（たとえば、ブラウザ・アプリケーション７１２内のコンテンツ・アクセス・プラグイン）に対してデータ・ストリームとして提供され得る。また、外部システム７２２から中間コンテンツ・ストリーミング・システム７１８によって受信されたコンテンツ・データは、ユーザ・デバイス７１０にローカルにキャッシ
ュされ得る。ユーザ・デバイス７１０におけるローカル・キャッシュは、ユーザ・デバイス７１０による同じコンテンツ・アイテムを求める将来の要求のために維持され得る。同じコンテンツ・アイテムを求める後続の要求に対して、中間コンテンツ・ストリーミング・システム７１８は、外部システム７２２から以前に受信されたコンテンツ・アイテムのそうした部分を、ユーザ・デバイス７１０におけるローカル・キャッシュから提供し、ユーザ・デバイス７１０にローカルにキャッシュされていないそうした部分を、外部システム７２２から取得し、したがって、取得されたそうした部分を提供することができる。
【０１００】
一実施形態では、ユーザ・デバイス７１０は、ソーシャル・ネットワーキング・システム７３０によって提供されブラウザ・アプリケーション７１２を通してアクセス可能であるソーシャル・ネットワーク・ニュース・フィードを通じるなどして、ユーザ・デバイス７１０におけるユーザがコンテンツ・アイテムに対するアクセスを提示される前に、ユーザ・デバイス７１０に対するコンテンツ・アイテムの優先度ベースの事前ダウンロードを円滑にするように構成された優先度ベースのコンテンツ・ダウンロード・システム７２０を含む。たとえば、ユーザがブラウザ・アプリケーション７１２を通じてそのようなニュース・フィードを閲覧しているとき、ニュース・フィードの１つまたは複数のニュース投稿に含まれるコンテンツ・アイテムは、そのようなニュース投稿がニュース・フィードを通じて（たとえば、ニュース・フィードの）ユーザにアクセス可能にされる前に、ユーザ・デバイス７１０に対して全てまたは部分的に事前ダウンロードされ得る。
【０１０１】
ソーシャル・ネットワーキング・システム７３０は、複数のユーザを含み、ソーシャル・ネットワークのユーザに対して、ソーシャル・ネットワークの他のユーザと通信および相互作用するための能力を提供する、ソーシャル・ネットワークのための１つまたは複数のコンピューティング・デバイスを含む。さらに詳細に説明されるように、ソーシャル・ネットワークは、グラフ、すなわち、エッジとノードとを含むデータ構造によって表現され得る。データベース、オブジェクト、クラス、メタ要素、ファイル、または任意の他のデータ構造を含むが、これらに限定されない、他のデータ構造も、ソーシャル・ネットワークを表現するために使用され得る。
【０１０２】
ユーザは、ソーシャル・ネットワーキング・システム７３０に加入し、次いで、そのユーザがつなげられることを望む、ソーシャル・ネットワーキング・システム７３０の任意の数の他のユーザへのつながりを追加し得る。本明細書において、「友達」という用語は、ユーザがソーシャル・ネットワーキング・システム７３０を通じてつながり、関連、または関係を形成した、ソーシャル・ネットワーキング・システム７３０の任意の他のユーザに及ぶ。例えば、一実施形態において、ソーシャル・ネットワーキング・システム７３０内のユーザが、ソーシャル・グラフ内のノードとして表現される場合、「友達」という用語は、２つのユーザ・ノード間に形成され、かつ、２つのユーザ・ノードを直接的に接続するエッジを指し得る。
【０１０３】
つながりは、ユーザによって明示的に追加されても、または、ユーザの共通の特性（例えば、同じ教育機関の卒業生であるユーザ）に基づいて、ソーシャル・ネットワーキング・システム７３０によって自動的に作成されてもよい。例えば、第１のユーザは、友達になりたい特定の他のユーザを具体的に選択する。ソーシャル・ネットワーキング・システム７３０におけるつながりは、通常は双方向であるが、双方向である必要はなく、そのため、「ユーザ」および「友達」という用語は、枠組みに依存する。ソーシャル・ネットワーキング・システム７３０のユーザ間のつながりは、通常は、双務的（「二方向」）または「相互的」であるが、つながりは、片務的、または「一方向」であってもよい。例えば、ボブおよびジョーの両者が、ソーシャル・ネットワーキング・システム７３０のユーザであり、互いにつながっている場合、ボブおよびジョーは、互いのつながりである。他方で、ボブは、ジョーによってソーシャル・ネットワーキング・システム７３０へ通信され
たデータを見るためにジョーとつながることを欲するが、ジョーは、相互的なつながりを形成することを欲しない場合、片務的なつながりが確立され得る。ユーザ間のつながりは、直接的なつながりであり得る。ただし、ソーシャル・ネットワーキング・システム７３０のいくつかの実施形態は、つながりが、１つまたは複数のつながりのレベルまたは分離度を通じた間接的なものとなることを可能にする。
【０１０４】
ユーザ間のつながりを確立および維持し、ユーザ間の相互作用を可能にすることに加えて、ソーシャル・ネットワーキング・システム７３０は、ソーシャル・ネットワーキング・システム７３０によってサポートされる様々なタイプのアイテムに対してアクションを行うための能力をユーザに対して提供する。こうしたアイテムは、ソーシャル・ネットワーキング・システム７３０のユーザが所属し得るグループまたはネットワーク（すなわち、人々、エンティティ、およびコンセプトのソーシャル・ネットワーク）、ユーザが興味を持ち得るイベントまたはカレンダー入力、ユーザがソーシャル・ネットワーキング・システム７３０を通じて使用し得るコンピュータベースのアプリケーション、ソーシャル・ネットワーキング・システム７３０によって提供されるサービスを通じてまたはソーシャル・ネットワーキング・システム７３０を通じてユーザがアイテムを購入または販売することを可能にする取引、ならびにユーザがソーシャル・ネットワーキング・システム７３０内外で実行し得る広告との相互作用を含み得る。これらは、ユーザがソーシャル・ネットワーキング・システム７３０上で作用を与え得るアイテムのわずかな例にすぎず、多くの他の例が可能である。ユーザは、ソーシャル・ネットワーキング・システム７３０において、または、ソーシャル・ネットワーキング・システム７３０とは別個の外部システム７２２もしくはネットワーク７５０を通じてソーシャル・ネットワーキング・システム７３０に対して結合される外部システム７２２において表現されることが可能なありとあらゆるものと相互作用し得る。
【０１０５】
ソーシャル・ネットワーキング・システム７３０は、多様なエンティティとリンクすることも可能である。例えば、ソーシャル・ネットワーキング・システム７３０は、ユーザが互いに相互作用すること、および、ＡＰＩ、ウェブ・サービス、または他の通信チャネルを通じて外部システム７２２または他のエンティティと相互作用することを可能にする。ここで説明するように、ソーシャル・ネットワーキング・システム７３０は、複数のエッジによって相互接続された複数のノードを備える「ソーシャル・グラフ」を生成および維持する。ソーシャル・グラフ内の各ノードは、別のノードに対して作用を与え得るエンティティおよび／または別のノードによって作用を与えられ得るエンティティを表現し得る。ソーシャル・グラフは、例えば、ユーザ、非人間エンティティ、コンテンツ・アイテム、ウェブ・ページ、グループ、アクティビティ、メッセージ、コンセプト、およびソーシャル・ネットワーキング・システム７３０内のオブジェクトによって表現され得る任意の他のものを含む、様々なタイプのノードを含み得る。ここにさらに詳細に説明されるように、ソーシャル・グラフ内の２つのノード間のエッジは、ノード関係から、またはノードのうちの一方によって他方に対して実行されたアクションから生じ得る、２つのノード間の特定の種類のつながり、または関連を表現し得る。さらに説明されるように、ノード間のエッジは、重み付けされ得る。エッジの重みは、ノード間のつながりまたは関連の強度などの、そのエッジに対して関連付けられている属性を表現し得る。異なるタイプのエッジが、異なる重みと共に提供され得る。
【０１０６】
ソーシャル・ネットワーキング・システム７３０は、ユーザによるソーシャル・ネットワーキング・システム７３０との相互作用を高める、ユーザにより生成されたコンテンツも含む。ユーザにより生成されたコンテンツは、ユーザがソーシャル・ネットワーキング・システム７３０に対して追加し、アップロードし、送信し、または「投稿し」得るあらゆるものを含み得る。例えば、ユーザは、ユーザ・デバイス７１０からソーシャル・ネットワーキング・システム７３０への投稿を通信する。投稿は、ステータス・アップデート
もしくは他の文字情報などのデータ、位置情報、写真などの画像、ビデオ、リンク、音楽、または、他の同様のデータおよび／もしくはメディアを含み得る。コンテンツも、第三者によってソーシャル・ネットワーキング・システム７３０に対して追加され得る。コンテンツ「アイテム」は、ソーシャル・ネットワーキング・システム７３０においてオブジェクトとして表現される。このようにして、ソーシャル・ネットワーキング・システム７３０のユーザは、様々な通信チャネルを通じて様々なタイプのテキストおよびコンテンツ・アイテムを投稿することによって、互いに通信することを促される。そのような通信は、ユーザ同士の相互作用を増加させ、ユーザがソーシャル・ネットワーキング・システム７３０と相互作用する頻度を増加させる。
【０１０７】
ソーシャル・ネットワーキング・システム７３０は、ウェブ・サーバ７３２と、ＡＰＩ要求サーバ７３４と、ユーザ・プロファイル・ストア７３６と、つながりストア７３８と、アクション・ロガー７４０と、アクティビティ・ログ７４２と、認証サーバ７４４とを含む。本発明の一実施形態において、ソーシャル・ネットワーキング・システム７３０は、様々なアプリケーションのための追加的な構成要素、より少ない構成要素、または異なる構成要素を含み得る。ネットワーク・インタフェース、セキュリティ機構、負荷分散装置、フェイルオーバ・サーバ、管理およびネットワーク操作コンソールなどの他の構成要素は、本システムの詳細を曖昧にしないように、図示されていない。
【０１０８】
ユーザ・プロファイル・ストア７３６は、ユーザによって申告され、またはソーシャル・ネットワーキング・システム７３０によって推測された職歴、学歴、趣味または嗜好、住所などの経歴的情報、人口学的情報、および他のタイプの記述的情報を含む、ユーザ・アカウントに関する情報を維持する。この情報は、各ユーザが一意に識別されるように、ユーザ・プロファイル・ストア７３６内に記憶される。ソーシャル・ネットワーキング・システム７３０は、異なるユーザ間の１つまたは複数のつながりを記述するデータも、つながりストア７３８内に記憶する。つながり情報は、同様または共通の職歴、グループ・メンバーシップ、趣味、または学歴を有するユーザを示し得る。また、ソーシャル・ネットワーキング・システム７３０は、ユーザの他のユーザとの関係をユーザが特定することを可能にする、異なるユーザ間におけるユーザによって定義されたつながりを含む。例えば、ユーザによって定義されたつながりは、友達、同僚、パートナー等などの、ユーザの実生活の関係と並行する、他のユーザとの関係をユーザが生成することを可能にする。ユーザは、予め定義されたタイプのつながりから選択しても、またはユーザ自身のつながりタイプを必要に応じて定義してもよい。非人間エンティティ、バケット、クラスタ・センタ、画像、興味、ページ、外部システム、コンセプト等などの、ソーシャル・ネットワーキング・システム７３０内の他のノードとのつながりも、つながりストア７３８内に記憶される。
【０１０９】
ソーシャル・ネットワーキング・システム７３０は、ユーザが相互作用し得るオブジェクトに関するデータを維持する。このデータを維持するために、ユーザ・プロファイル・ストア７３６およびつながりストア７３８は、ソーシャル・ネットワーキング・システム７３０によって維持されるオブジェクトの対応するタイプのインスタンスを記憶する。各オブジェクト・タイプは、オブジェクトのタイプに適した情報を記憶するのに適した情報フィールドを有する。例えば、ユーザ・プロファイル・ストア７３６は、ユーザのアカウントおよびユーザのアカウントに関連した情報を記述するのに適したフィールドを有するデータ構造を含む。特定のタイプの新たなオブジェクトが作成される場合、ソーシャル・ネットワーキング・システム７３０は、対応するタイプの新たなデータ構造を初期化し、その新たなデータ構造に対して一意のオブジェクト識別子を割り当て、必要に応じて、そのオブジェクトに対してデータを追加することを開始する。これは、例えば、ユーザがソーシャル・ネットワーキング・システム７３０のユーザになった場合に発生し、ソーシャル・ネットワーキング・システム７３０は、ユーザ・プロファイル・ストア７３６内にユ
ーザ・プロファイルの新たなインスタンスを生成し、ユーザ・アカウントに対して一意の識別子を割り当て、ユーザによって提供される情報をユーザ・アカウントのフィールドへ投入し始める。
【０１１０】
つながりストア７３８は、他のユーザに対するユーザのつながり、外部システム７２２に対するつながり、または他のエンティティに対するつながりを記述するのに適したデータ構造を含む。つながりストア７３８は、つながりタイプもユーザのつながりと関連付け得る。つながりタイプは、ユーザのプライバシー設定と共に使用されて、ユーザに関する情報に対するアクセスを規制し得る。本発明の一実施形態において、ユーザ・プロファイル・ストア７３６およびつながりストア７３８は、連合データベースとして実装され得る。
【０１１１】
つながりストア７３８、ユーザ・プロファイル・ストア７３６、およびアクティビティ・ログ７４２内に記憶されるデータは、ノードを使用して、ノードを接続する様々なオブジェクトおよびエッジを識別して、異なるオブジェクト間の関係を識別するソーシャル・グラフをソーシャル・ネットワーキング・システム７３０が生成することを可能にする。例えば、第１のユーザが、ソーシャル・ネットワーキング・システム７３０内で第２のユーザとのつながりを確立する場合、ユーザ・プロファイル・ストア７３６からの第１のユーザおよび第２のユーザのユーザ・アカウントは、ソーシャル・グラフ内のノードとして動作し得る。つながりストア７３８によって記憶される、第１のユーザと第２のユーザとの間のつながりは、第１のユーザおよび第２のユーザに対して関連付けられるノード間のエッジである。この例を続けると、第２のユーザは、次いで、第１のユーザに対して、ソーシャル・ネットワーキング・システム７３０内でメッセージを送信し得る。メッセージを送信するアクションは、第１のユーザおよび第２のユーザを表現する、ソーシャル・グラフ内の２つのノード間の別のエッジであり、メッセージを送信するアクションは、記憶され得る。また、メッセージ自体が、第１のユーザを表現するノードおよび第２のユーザを表現するノードに対して接続される別のノードとして、ソーシャル・グラフにおいて識別され、ソーシャル・グラフに含まれ得る。
【０１１２】
別の例において、第１のユーザは、ソーシャル・ネットワーキング・システム７３０によって維持される画像において（または、代替的に、ソーシャル・ネットワーキング・システム７３０の外部の別のシステムによって維持される画像において）第２のユーザをタグ付けし得る。画像は、それ自体がソーシャル・ネットワーキング・システム７３０内のノードとして表現され得る。このタグ付けアクションは、ユーザの各々と画像との間にエッジを作成するだけでなく、第１のユーザと第２のユーザとの間のエッジも作成し得る。画像もソーシャル・グラフ内のノードである。また別の例において、ユーザが、イベントへ参加することを確かめる場合、そのユーザおよびそのイベントは、ユーザ・プロファイル・ストア７３６から取得されるノードであり、そのイベントへの参加は、アクティビティ・ログ７４２から得られ得るノード間のエッジである。ソーシャル・グラフを生成および維持することによって、ソーシャル・ネットワーキング・システム７３０は、多くの異なるタイプのオブジェクトを記述するデータ、ならびに、それらのオブジェクト間の相互作用およびつながりを含み、社会的に関連する情報の豊富なソースを提供する。
【０１１３】
ウェブ・サーバ７３２は、ソーシャル・ネットワーキング・システム７３０を、ネットワーク７５０を通じて、１つもしくは複数のユーザ・デバイス７１０および／または１つもしくは複数の外部システム７２２に対してリンクする。ウェブ・サーバ７３２は、ウェブ・ページ、およびＪａｖａ（登録商標）、ＪａｖａＳｃｒｉｐｔ、Ｆｌａｓｈ、ＸＭＬなどの他のウェブ関連コンテンツを供給する。ウェブ・サーバ７３２は、メール・サーバを含み、または、ソーシャル・ネットワーキング・システム７３０と１つもしくは複数のユーザ・デバイス７１０との間のメッセージを受信およびルーティングするための他のメ
ッセージング機能性を含み得る。メッセージは、インスタント・メッセージ、キュー・メッセージ（例えば、電子メール）、テキストおよびＳＭＳメッセージ、または任意の他の適切なメッセージング・フォーマットであり得る。
【０１１４】
ＡＰＩ要求サーバ７３４は、１つまたは複数の外部システム７２２およびユーザ・デバイス７１０が、１つまたは複数のＡＰＩ関数を呼び出すことによって、ソーシャル・ネットワーキング・システム７３０からのアクセス情報を呼び出すことを可能にする。ＡＰＩ要求サーバ７３４は、外部システム７２２が、ＡＰＩを呼び出すことによって、ソーシャル・ネットワーキング・システム７３０に対して情報を送信することも可能にし得る。外部システム７２２は、１つの実施形態において、ネットワーク７５０を通じてソーシャル・ネットワーキング・システム７３０へＡＰＩ要求を送信し、ＡＰＩ要求サーバ７３４は、そのＡＰＩ要求を受信する。ＡＰＩ要求サーバ７３４は、ＡＰＩ要求に対して関連付けられているＡＰＩを呼び出すことによって要求を処理して、適当な応答を生成する。ＡＰＩ要求サーバ７３４は、その適当な応答を、ネットワーク７５０を通じて外部システム７２２へ通信する。例えば、ＡＰＩ要求に応答して、ＡＰＩ要求サーバ７３４は、外部システム７２２に対してログインしたユーザのつながりなどの、ユーザに対して関連付けられているデータを収集し、収集されたデータを外部システム７２２へ通信する。別の実施形態において、ユーザ・デバイス７１０は、外部システム７２２と同じ手法で、ＡＰＩを通じてソーシャル・ネットワーキング・システム７３０と通信する。
【０１１５】
アクション・ロガー７４０は、ソーシャル・ネットワーキング・システム７３０内での、および／またはソーシャル・ネットワーキング・システム７３０外でのユーザ・アクションに関する通信をウェブ・サーバ７３２から受信することが可能である。アクション・ロガー７４０は、ユーザ・アクションに関する情報をアクティビティ・ログ７４２へ投入し、ソーシャル・ネットワーキング・システム７３０の内部で、およびソーシャル・ネットワーキング・システム７３０の外部で、そのユーザによって行われた様々なアクションをソーシャル・ネットワーキング・システム７３０が発見することを可能にする。特定のユーザが、ソーシャル・ネットワーキング・システム７３０上の別のノードに関して行う任意のアクションは、アクティビティ・ログ７４２内または同様のデータベースもしくは他のデータ・レポジトリ内で維持される情報を通じて、各ユーザのアカウントに対して関連付けられ得る。識別および記憶される、ソーシャル・ネットワーキング・システム７３０内でユーザによって行われるアクションの例は、例えば、別のユーザに対するつながりを追加すること、別のユーザへメッセージを送信すること、別のユーザからのメッセージを読むこと、別のユーザに対して関連付けられるコンテンツを視聴すること、別のユーザによって投稿されたイベントに参加すること、画像を投稿すること、画像を投稿しようと試行すること、または、別のユーザもしくは別のオブジェクトと相互作用する他のアクションを含み得る。ユーザが、ソーシャル・ネットワーキング・システム７３０内でアクションを行う場合、そのアクションは、アクティビティ・ログ７４２内に記録される。一実施形態において、ソーシャル・ネットワーキング・システム７３０は、アクティビティ・ログ７４２をエントリのデータベースとして維持する。アクションが、ソーシャル・ネットワーキング・システム７３０内で行われる場合、そのアクションについてのエントリが、アクティビティ・ログ７４２に対して追加される。アクティビティ・ログ７４２は、アクション・ログと称され得る。
【０１１６】
また、ユーザ・アクションは、ソーシャル・ネットワーキング・システム７３０とは別個の外部システム７２２などの、ソーシャル・ネットワーキング・システム７３０の外部のエンティティ内で発生するコンセプトおよびアクションに対して関連付けられ得る。例えば、アクション・ロガー７４０は、ユーザによる外部システム７２２との相互作用を記述するデータを、ウェブ・サーバ７３２から受信し得る。この例において、外部システム７２２は、ソーシャル・グラフにおける構造化されたアクションおよびオブジェクトに従
って、ユーザによる相互作用を報告する。
【０１１７】
ユーザが外部システム７２２と相互作用するアクションの他の例は、ユーザが外部システム７２２もしくは別のエンティティにおいて興味を表現すること、外部システム７２２もしくは外部システム７２２内のウェブ・ページ７２４ａと議論するソーシャル・ネットワーキング・システム７３０に対してユーザがコメントを投稿すること、ユーザがソーシャル・ネットワーキング・システム７３０に対してユニフォーム・リソース・ロケータ（ＵＲＬ）もしくは外部システム７２２に対して関連付けられる他の識別子を投稿すること、ユーザが外部システム７２２に対して関連付けられるイベントへ参加すること、または、外部システム７２２に関連する、ユーザによる任意の他のアクションを含む。したがって、アクティビティ・ログ７４２は、ソーシャル・ネットワーキング・システム７３０のユーザと、ソーシャル・ネットワーキング・システム７３０とは別個の外部システム７２２との間の相互作用を記述するアクションを含み得る。
【０１１８】
認証サーバ７４４は、ソーシャル・ネットワーキング・システム７３０のユーザの１つまたは複数のプライバシー設定を強化する。ユーザのプライバシー設定は、ユーザに対して関連付けられる特定の情報がどのように共有され得るかを決定する。プライバシー設定は、ユーザに対して関連付けられる特定の情報の仕様、および情報が共有され得る１つまたは複数のエンティティの仕様を備える。情報が共有され得るエンティティの例は、他のユーザ、アプリケーション、外部システム７２２、または、その情報に潜在的にアクセスし得る任意のエンティティを含み得る。ユーザによって共有され得る情報は、プロフィール写真などのユーザ・アカウント情報、ユーザに対して関連付けられる電話番号、ユーザのつながり、つながりを追加すること、ユーザ・プロフィール情報を変更することなどのユーザによって行われるアクション等を備える。
【０１１９】
プライバシー設定仕様は、異なるレベルの粒度で提供され得る。例えば、プライバシー設定は、他のユーザと共有されるべき具体的な情報を識別し得る。プライバシー設定は、職場電話番号、または、プロフィール写真、自宅電話番号、およびステータスを含む個人情報などの関連情報の具体的なセットを識別する。代替的に、プライバシー設定は、ユーザに対して関連付けられる全ての情報に対して適用されてもよい。特定の情報にアクセスすることができるエンティティのセットの仕様も、様々なレベルの粒度で特定され得る。情報が共有され得るエンティティの様々なセットは、例えば、ユーザの全ての友達、友達の全ての友達、全てのアプリケーション、または全ての外部システム７２２を含み得る。１つの実施形態は、エンティティのセットの仕様がエンティティの一覧表を備えることを可能にする。例えば、ユーザは、一定の情報に対してアクセスすることを許可される外部システム７２２のリストを提供し得る。別の実施形態は、情報に対してアクセスすることを許可されない例外と共にエンティティのセットを仕様が備えることを可能にする。例えば、ユーザは、全ての外部システム７２２がユーザの職場情報に対してアクセスすることを許可し得るが、職場情報に対してアクセスすることを許可されない外部システム７２２のリストを特定し得る。一定の実施形態は、一定の情報に対してアクセスすることを許可されない例外のリストを「ブロック・リスト」と呼ぶ。ユーザによって特定されるブロック・リストに所属する外部システム７２２は、プライバシー設定において特定される情報に対してアクセスすることをブロックされる。情報の仕様の粒度と、情報が共有されるエンティティの仕様の粒度との様々な組み合わせが可能である。例えば、全ての個人情報は、友達と共有され得るのに対して、全ての職場情報は、友達の友達と共有され得る。
【０１２０】
認証サーバ７４４は、ユーザに対して関連付けられる一定の情報がユーザの友達、外部システム７２２、ならびに／または他のアプリケーションおよびエンティティによってアクセスされ得るかを決定するためのロジックを含む。外部システム７２２は、ユーザの職場電話番号などの、ユーザのより個人的かつ機密的な情報に対してアクセスするために、
認証サーバ７４４からの認証を必要とし得る。ユーザのプライバシー設定に基づいて、認証サーバ７４４は、別のユーザ、外部システム７２２、アプリケーション、または別のエンティティが、ユーザによって行われるアクションに関する情報を含む、ユーザに対して関連付けられる情報に対してアクセスすることを許可されているかを決定する。
【０１２１】
前述のプロセス、システムおよび特徴は、多種多様なマシンおよびコンピュータ・システム・アーキテクチャによって、ならびに、多種多様なネットワークおよびコンピューティング環境において実装され得る。図８は、本明細書において識別されたコンピューティング・デバイスのうちの１つまたは複数を実装するために使用され得るコンピュータ・システム８００の例を例示する。コンピュータ・システム８００は、コンピュータ・システム８００に対して、本明細書において議論されるプロセスおよび特徴を実行させるための命令のセットを含む。コンピュータ・システム８００は、他のマシンへ接続され（例えば、ネットワーク化され）得る。ネットワーク化された配置において、コンピュータ・システム８００は、クライアント／サーバ・ネットワーク環境内のサーバ・マシンもしくはクライアント・マシンの資格において動作し、または、ピア・ツー・ピア（もしくは分散）・ネットワーク環境内のピア・マシンとして動作し得る。本発明の一実施形態において、コンピュータ・システム８００は、クライアント・デバイス１００、ソーシャル・ネットワーキング・システム７３０の全部、またはこれらの構成要素のうちの１つであってもよい。
【０１２２】
コンピュータ・システム８００は、プロセッサ８０２と、メモリ８０４と、コンピュータ読取可能な媒体上に記憶され、本明細書において説明されるプロセスおよび特徴へ向けられた、１つまたは複数の実行可能なモジュールおよびドライバとを含む。また、コンピュータ・システム８００は、高性能入出力（Ｉ／Ｏ）バス８０６と、標準Ｉ／Ｏバス８０８とを含む。ホスト・ブリッジ８１０は、プロセッサ８０２を高性能Ｉ／Ｏバス８０６に対して結合する一方で、Ｉ／Ｏバス・ブリッジ８１２は、２つのバス８０６および８０８を互いに結合する。システム・メモリ８１４および１つまたは複数のネットワーク・インタフェース８１６は、バス８０６へ結合される。コンピュータ・システム８００は、ビデオ・メモリと、ビデオ・メモリに対して結合される表示デバイスとをさらに含んでもよい（図示せず）。マス・ストレージ８１８およびＩ／Ｏポート８２０は、バス８０８へ結合される。コンピュータ・システム８００は、バス８０８に対して結合される、キーボードおよびポインティング・デバイス、表示デバイス、または他の入出力デバイス（図示せず）を随意的に含んでもよい。全体的に、これらの要素は、カリフォルニア州サンタ・クララのインテル・コーポレーション社（Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ）によって製造されるｘ８６互換性のあるプロセッサ、カリフォルニア州サニーベルのアドバンスト・マイクロ・デバイス社（ＡＭＤ：Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ，Ｉｎｃ）によって製造されるｘ８６互換性のあるプロセッサ、および任意の他の適切なプロセッサを含むが、これらに限定されない、広範なカテゴリのコンピュータ・ハードウェア・システムを表現することが意図される。
【０１２３】
オペレーティング・システムは、ソフトウェア・アプリケーション（図示せず）へのデータの入力およびソフトウェア・アプリケーションからのデータの出力を含む、コンピュータ・システム８００の動作を管理および制御する。オペレーティング・システムは、システム上で実行されているソフトウェア・アプリケーションと、システムのハードウェア構成要素との間のインタフェースを提供する。任意の適切なオペレーティング・システム、例えば、ＬＩＮＵＸオペレーティング・システム、カリフォルニア州クパチーノのアップル・コンピュータ社（Ａｐｐｌｅ  Ｃｏｍｐｕｔｅｒ，Ｉｎｃ．）から市販されているアップル・マッキントッシュ・オペレーティング・システム、ＵＮＩＸ（登録商標）オペレーティング・システム、マイクロソフト（登録商標）ウィンドウズ（登録商標）オペレーティング・システム、ＢＳＤオペレーティング・システム等などが使用され得る。他の
実装も可能である。
【０１２４】
コンピュータ・システム８００の要素は、下記においてより詳細に説明される。具体的には、ネットワーク・インタフェース８１６は、コンピュータ・システム８００と、幅広いネットワークのうちの任意のもの、例えば、イーサネット（例えば、ＩＥＥＥ８０２．３）・ネットワーク、バックプレーン等などとの間の通信を提供する。マス・ストレージ８１８は、上記に識別されたそれぞれのコンピューティング・システムによって実装される上述されたプロセスおよび特徴を実行するためのデータおよびプログラミング命令のための永続的なストレージを提供するのに対して、システム・メモリ８１４（例えば、ＤＲＡＭ）は、プロセッサ８０２によって実行される場合のデータおよびプログラミング命令のための一時的なストレージを提供する。Ｉ／Ｏポート８２０は、コンピュータ・システム８００へ結合され得る付加的な周辺デバイス間の通信を提供する、１つまたは複数のシリアル通信ポートおよび／またはパラレル通信ポートであり得る。
【０１２５】
コンピュータ・システム８００は、多様なシステム・アーキテクチャを含むことができ、コンピュータ・システム８００の様々な構成要素は、再配置されてもよい。例えば、キャッシュ８０４は、プロセッサ８０２と共にチップ上に実装されてもよい。代替的に、キャッシュ８０４およびプロセッサ８０２は、「プロセッサ・モジュール」としてまとめられて、プロセッサ８０２が「プロセッサ・コア」と称されてもよい。さらに、本発明の一定の実施形態は、上記構成要素の全部を必要としなくても、または、含まなくてもよい。例えば、標準Ｉ／Ｏバス８０８へ結合される周辺デバイスは、高性能Ｉ／Ｏバス８０６へ結合されてもよい。また、いくつかの実施形態において、単一のバスのみが存在して、コンピュータ・システム８００の構成要素が、その単一のバスへ結合されてもよい。さらに、コンピュータ・システム８００は、付加的なプロセッサ、記憶デバイス、またはメモリなどの付加的な構成要素を含んでもよい。
【０１２６】
一般に、本明細書において説明されるプロセスおよび特徴は、オペレーティング・システムの一部もしくは特定のアプリケーション、構成要素、プログラム、オブジェクト、モジュール、または「プログラム」と称される一連の命令として実装され得る。例えば、１つまたは複数のプログラムは、本明細書において説明される具体的なプロセスを実行するために使用され得る。プログラムは、典型的には、１つまたは複数のプロセッサによって読み出され、実行される場合に、コンピュータ・システム８００に対して、本明細書において説明されるプロセスおよび特徴を実行するための動作を実行させる、１つまたは複数の命令を、コンピュータ・システム８００内の様々なメモリおよび記憶デバイスにおいて備える。本明細書において説明されるプロセスおよび特徴は、ソフトウェア、ファームウェア、ハードウェア（例えば、特定用途向け集積回路）、または、これらの任意の組み合わせにおいて実装され得る。
【０１２７】
１つの実装において、本明細書において説明されるプロセスおよび特徴は、分散コンピューティング環境において個々にまたはまとめて、コンピュータ・システム８００によって実行される一連の実行可能なモジュールとして実装される。前述のモジュールは、ハードウェア、コンピュータ読取可能な媒体（もしくはマシン読取可能な媒体）上に記憶される実行可能なモジュール、または、両者の組み合わせによって実現され得る。例えば、モジュールは、プロセッサ８０２などの、ハードウェア・システム内のプロセッサによって実行されるべき複数の命令または一連の命令を備え得る。まず、一連の命令は、マス・ストレージ８１８などの記憶デバイス上に記憶され得る。ただし、一連の命令は、任意の適切なコンピュータ読取可能な記憶媒体上に記憶されてもよい。さらに、一連の命令は、局所的に記憶される必要はなく、ネットワーク上のサーバなどの遠隔記憶デバイスからネットワーク・インタフェース８１６を通じて受信されてもよい。命令は、マス・ストレージ８１８などの記憶デバイスからシステム・メモリ８１４内へコピーされ、次いで、プロセ
ッサ８０２によってアクセスされ、実行される。様々な実施形態において、１つまたは複数のモジュールは、並列処理環境内の複数のサーバなどの、１つまたは複数の位置における、１つまたは複数のプロセッサによって実行され得る。
【０１２８】
コンピュータ読取可能な媒体の例は、揮発性メモリ・デバイスおよび不揮発性メモリ・デバイスなどの記録可能なタイプの媒体、ソリッド・ステート・メモリ、フロッピー（登録商標）ディスクおよび他の取り外し可能なディスク、ハード・ディスク・ドライブ、磁気媒体、光ディスク（例えば、コンパクト・ディスク読取専用メモリ（ＣＤ  ＲＯＭＳ）、デジタル多用途ディスク（ＤＶＤ））、他の同様の非一時的で（もしくは一時的で）、有形の（もしくは無形の）記憶媒体、または、本明細書において説明されるプロセスおよび特徴のうちの任意の１つもしくは複数を実行すべく、コンピュータ・システム８００による実行のために一連の命令を記憶し、符号化し、もしくは担持するのに適切な任意のタイプの媒体を含むが、これらに限定されない。
【０１２９】
説明の目的のために、多くの具体的な詳細が、本説明の完全な理解を提供するために述べられている。しかしながら、こうした具体的な詳細なしに本開示の実施形態が実施され得ることは、当業者には明らかであろう。いくつかの例において、モジュール、構造、プロセス、特徴、およびデバイスは、本説明を曖昧にすることを回避するために、ブロック図の形式で示される。他の例において、機能ブロック図およびフロー図は、データおよび論理フローを表現するために示される。ブロック図およびフロー図の構成要素（例えば、モジュール、ブロック、構造、デバイス、特徴等）は、本明細書において明示的に説明および図示されたような手法以外の手法で、様々に組み合わされ、分離され、除去され、順序を並べ替えられ、置換されてもよい。
【０１３０】
この明細書における、「１つの実施形態」、「一実施形態」、「他の実施形態」、「別の実施形態」、「一連の実施形態」、「いくつかの実施形態」、「様々な実施形態」等への言及は、実施形態に関連して説明される特定の特徴、設計、構造、または特性が本開示の少なくとも１つの実施形態に含まれることを意味する。本明細書内の様々な部分における「１つの実施形態において」、「一実施形態において」または「別の実施形態」という句の出現は、必ずしも全て同じ実施形態に言及するものとは限らず、別個の実施形態または代替的な実施形態は、他の実施形態と相互排他的ではない。さらに、「実施形態」等への明示的な言及が存在しても存在しなくても、様々な特徴が説明され、様々な特徴は、いくつかの実施形態において様々に組み合わされ、含まれ得るが、他の実施形態においては様々に省略され得る。同様に、いくつかの実施形態にとっては選好事項または要件であり得るが、他の実施形態にとっては選好事項または要件ではない、様々な特徴が説明される。
【０１３１】
本明細書において使用される文言は、主に、読みやすさと教育的目的のために選択されており、発明の主題の輪郭を描くため、または境界線を描くために選択されたものではない。そのため、本発明の範囲は、この詳細な説明によって限定されるのではなく、むしろ、本明細書に基づく出願について発行される任意の請求項によって限定されることが意図される。したがって、本発明の実施形態の開示は、本発明の範囲の例示とはなるが、限定とはならないことが意図され、本発明の範囲は、下記の特許請求の範囲において述べられる。
【図１】
0006502385.tif 000002
【図２】
0006502385.tif 000003
【図３】
0006502385.tif 000004
【図４】
0006502385.tif 000005
【図５】
0006502385.tif 000006
【図６】
0006502385.tif 000007
【図７】
0006502385.tif 000008
【図８】
0006502385.tif 000009