様々な図面中の同様の参照番号および名称は、同様の要素を示す。
本明細書は、クライアントデバイスによって要求されたリソースにアクセスしようとするときにクライアントデバイスが辿らなければならないリダイレクトの数を削減する方法、システム、およびデバイスを説明する。状況によっては、リソースに対する要求がクライアントデバイスにおけるデジタルコンポーネントとの対話を通じて生成されるとき、生成される最初の要求は、要求されたリソースをホストするサーバとは異なる所与のサーバにクライアントデバイスを向けることがある。たとえば、所与のサーバは、デジタルコンポーネントとの対話を追跡する追跡サーバであり得る。この例では、追跡サーバは要求を調べ、特定の状況では、デジタルコンポーネントとの対話に関連する情報を識別、抽出、および記録するために追跡サーバに連絡するために使用されるユニフォームリソースロケータ(URL)の内容(たとえば、対話が発生したクライアントデバイスの識別子、または対話を実行したユーザのアカウント識別子)を調べる。
追跡サーバが要求から情報を取得すると、追跡サーバは要求されたリソースをホストする宛先サーバへのパスに沿ってクライアントデバイスをリダイレクトする(たとえば、次に連絡されるべきサーバを指定する301または302リダイレクトコマンドを使用して)。状況によっては、追跡サーバによって発行されたリダイレクトは、宛先サーバとは異なる中間サーバへのものであり得る。たとえば、デジタルコンポーネントのプロバイダが様々な異なる追跡サービスを利用する状況では、中間サーバは、別の追跡サービスを提供するためにデジタルコンポーネントとの対話に関する情報を取得することを要求される別のサーバであり得る。クライアントデバイスがこの中間サーバにリダイレクトされると、クライアントデバイスは別の中間サーバにリダイレクトされ、および/または最初にデジタルコンポーネントとの対話を通じて要求されたリソースをホストする宛先ページに最終的にリダイレクトされる前に、様々な中間サーバへの一連の順次リダイレクトを辿ることができる。
以下により詳細に説明するように、宛先サーバに到達する前にクライアントデバイスが辿ることを要求されるリダイレクトの数は、所与のサーバデバイスへのリダイレクト責任をオフロードすることによって削減することができる。いくつかの実装形態では、所与のサーバ(たとえば、デジタルコンポーネントとの対話に応答してクライアントデバイスによって連絡される最初のサーバ、または後続の中間サーバ)は、クライアントデバイスを中間サーバにリダイレクトする代わりに、クライアントデバイスを宛先サーバに直接リダイレクトすることによってクライアントデバイスによって辿られるリダイレクトチェーンを切断することができる。クライアントデバイスを宛先サーバにリダイレクトするとき、所与のサーバは、クライアントデバイスによって提供される対話に関する情報がリダイレクトチェーン内の各中間サーバに連絡されることを確実にするために、さもなければクライアントデバイスが辿ったであろうリダイレクトパスを辿ることができる。したがって、クライアントデバイスによって要求されているリソースは、フルリダイレクトチェーンが辿られた場合に必要とされるよりも短い時間でクライアントデバイスにおいて提示され、クライアントデバイスが中間サーバと確立する通信リンクの数を削減することによって、クライアントデバイスへの要求されたリソースの配信成功の信頼性は高められる。
本明細書に記載されている技法はまた、利用可能なアプリケーションを通じて(たとえば、オンラインアプリケーションストアまたはウェブブラウザにおいて)、または他の環境において(たとえば、パブリッシャのウェブページ上で)ユーザが閲覧している状況において実装することができる点に留意されたい。簡潔にするために、以下の説明の多くは検索結果環境を参照する。
本明細書を通じて使用されているように、「デジタルコンポーネント」という語句は、デジタルコンテンツまたはデジタル情報の個別の単位(たとえば、ビデオクリップ、オーディオクリップ、マルチメディアクリップ、画像、テキスト、または別のコンテンツの単位)を指す。デジタルコンポーネントは、単一のファイルまたはファイルの集まりとして物理的なメモリデバイスに電子的に記憶することができ、デジタルコンポーネントは、ビデオファイル、オーディオファイル、マルチメディアファイル、画像ファイル、またはテキストファイルの形式を取り、広告情報を含むことができるので、広告はデジタルコンポーネントの一種である。一般に、デジタルコンポーネントは、単一のプロバイダまたはソース(たとえば、広告主、パブリッシャ、または他のコンテンツプロバイダ)によって定義される(または、それらによって提供される)が、複数のソースからのコンテンツの組合せであり得る。複数の異なるソースからのデジタルコンポーネントを単一の電子文書(たとえば、様々な異なるデジタルコンポーネントの集まり)に組み合わせることができ、異なるソースからの様々なデジタルコンポーネントの一部を検索結果(または、コンテンツの他の部分)から抽出した情報とともに単一のデジタルコンポーネントに組み合わせることができる。
図1は、デジタルコンポーネントが電子文書での提示のために配布される例示的な環境100のブロック図である。例示的な環境100は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、またはそれらの組合せなどのネットワーク102を含む。ネットワーク102は、電子文書サーバ104、クライアントデバイス106、中間サーバ108、およびデジタルコンポーネント配信システム(DCDS)110(コンポーネント配信システムとも呼ばれる)を接続する。例示的な環境100は、多くの異なる電子文書サーバ104、クライアントデバイス106、および中間サーバ108を含み得る。
クライアントデバイス106は、ネットワーク102を介してリソースを要求および受信することができる電子デバイスである。例示的なクライアントデバイス106は、パーソナルコンピュータ、モバイル通信デバイス、およびネットワーク102を介してデータを送受信することができる他のデバイスを含む。クライアントデバイス106は通常、ネットワーク102を介したデータの送受信を容易にするためにウェブブラウザなどのユーザアプリケーションを含むが、クライアントデバイス106によって実行されるネイティブアプリケーションもネットワーク102を介したデータの送受信を容易にすることができる。
電子文書は、クライアントデバイス106においてコンテンツのセットを提示するデータである。電子文書の例は、ウェブページ、ワードプロセッシング文書、ポータブルドキュメントフォーマット(PDF)文書、画像、ビデオ、検索結果ページ、およびフィードソースを含む。モバイル、タブレット、またはデスクトップコンピューティングデバイスにインストールされたアプリケーションなどのネイティブアプリケーション(たとえば「アプリ」)も電子文書の例である。電子文書105(「Electronic Docs」)は、電子文書サーバ104(「Electronic Doc Servers」)によってクライアントデバイス106に提供することができる。たとえば、電子文書サーバ104は、パブリッシャのウェブサイトをホストするサーバを含むことができる。この例では、クライアントデバイス106は、所与のパブリッシャのウェブページなどのリソースに対する要求を開始することができ、所与のパブリッシャのウェブページをホストする電子文書サーバ104は、クライアントデバイス106において所与のウェブページの提示を開始する機械実行可能命令を送信することによって要求に応答することができる。
別の例では、電子文書サーバ104は、そこからクライアントデバイス106がアプリをダウンロードすることができるアプリサーバを含むことができる。この例では、クライアントデバイス106は、アプリをインストールするのに必要なファイルなどのリソースを要求し、そのファイルをクライアントデバイス106においてダウンロードし、次いでダウンロードしたアプリをローカルに実行することができる。
電子文書105は様々なコンテンツを含むことができる。たとえば、電子文書105は、電子文書自体の中にあり、および/または経時的に変化しない静的コンテンツ(たとえば、テキストまたは他の特定のコンテンツ)を含むことができる。電子文書105はまた、経時的にまたは要求ごとに変化し得る動的コンテンツを含むことができる。たとえば、所与の電子文書105のパブリッシャは、電子文書105の一部をポピュレートするために使用されるデータソースを維持することができる。この例では、所与の電子文書105は、所与の電子文書105がクライアントデバイス106によって処理(たとえば、レンダリングまたは実行される)されるときに、クライアントデバイス106にデータソースからのコンテンツを要求させる1つまたは複数のタグあるいはスクリプトを含むことができる。クライアントデバイス106は、データソースから取得したコンテンツを含む複合電子文書を作成するために、データソースから取得したコンテンツを所与の電子文書105に統合する。
状況によっては、所与の電子文書105は、DCDS110を参照する1つまたは複数のデジタルコンポーネントタグまたはデジタルコンポーネントスクリプトを含むことができる。これらの状況では、デジタルコンポーネントタグまたはデジタルコンポーネントスクリプトは、所与の電子文書105がクライアントデバイス106によって処理されるときにクライアントデバイス106によって実行される。デジタルコンポーネントタグまたはデジタルコンポーネントスクリプトの実行は、ネットワーク102を介してDCDS110に送信される、1つまたは複数のデジタルコンポーネント112を含むリソースに対する要求(「コンポーネント要求」と呼ばれる)を生成するようにクライアントデバイス106を構成する。たとえば、デジタルコンポーネントタグまたはデジタルコンポーネントスクリプトは、クライアントデバイス106がヘッダおよびペイロードデータを含むパケット化データ要求を生成することを可能にすることができる。コンポーネント要求112は、デジタルコンポーネントが要求されているサーバの名前(または、ネットワークの場所)、要求元デバイス(たとえば、クライアントデバイス106)の名前(または、ネットワークの場所)、および/または、DCDS110が要求に応じて提供される1つまたは複数のデジタルコンポーネントを選択するために使用することができる情報などの特徴を指定するイベントデータを含むことができる。コンポーネント要求112は、クライアントデバイス106によって、ネットワーク102(たとえば、電気通信ネットワーク)を介してDCDS110のサーバに送信される。
コンポーネント要求112は、要求されている電子文書およびデジタルコンポーネントを提示することができる電子文書の場所の特性などの、他のイベント特徴を指定するイベントデータを含むことができる。たとえば、デジタルコンポーネントが提示されることになる電子文書(たとえば、ウェブページ)への参照(たとえば、URL)を指定するイベントデータ、デジタルコンポーネントを提示するために利用可能な電子文書の利用可能な場所、利用可能な場所のサイズ、および/またはその場所での提示に適格なメディアタイプをDCDS110に提供することができる。同様に、電子文書に関連付けられるキーワード(「文書キーワード」)または電子文書によって参照されるエンティティ(たとえば、人、場所、または物)を指定するイベントデータも(たとえば、ペイロードとして)コンポーネント要求112に含めて、電子文書による提示に適格なデジタルコンポーネントの識別を容易にするためにDCDS110に提供することができる。イベントデータはまた、検索結果ページを取得するためにクライアントデバイス106から提出された検索クエリ、および/または検索結果を指定するデータ、ならびに/あるいは検索結果に含まれるテキスト、可聴、または他の視覚コンテンツを含むことができる。
コンポーネント要求112はまた、クライアントデバイスのユーザが提供した情報、コンポーネント要求が提出された州または地域を示す地理的情報、あるいはデジタルコンポーネントが表示される環境(たとえば、コンポーネント要求の時刻、コンポーネント要求の曜日、モバイルデバイスやタブレットデバイスなどのデジタルコンポーネントが表示されるデバイスの種類)に対するコンテキストを提供する他の情報などの、他の情報に関連するイベントデータを含むことができる。コンポーネント要求112は、たとえばパケット化ネットワークを介して送信することができ、コンポーネント要求112自体は、ヘッダおよびペイロードデータを有するパケット化データとしてフォーマットすることができる。ヘッダはパケットの宛先を指定することができ、ペイロードデータは上述の情報のうちのいずれかを含むことができる。
DCDS110は、コンポーネント要求112の受信に応答して、および/またはコンポーネント要求112に含まれる情報を使用して、所与の電子文書とともに提示されることになるデジタルコンポーネントを選択する。いくつかの実装形態では、デジタルコンポーネントの選択の遅延によって引き起こされる可能性があるエラーを回避するために、デジタルコンポーネントが1秒未満で(本明細書で説明される技法を使用して)選択される。たとえば、コンポーネント要求112に応答してデジタルコンポーネントを提供する際に遅延すると、クライアントデバイス106においてページ負荷エラーが発生するか、たとえ電子文書の他の部分がクライアントデバイス106において提示された後でも電子文書の一部がポピュレートされないままになる場合がある。また、デジタルコンポーネントをクライアントデバイス106に提供する際の遅延が増大するにつれて、デジタルコンポーネントがクライアントデバイス106に配信されるときに電子文書がもはやクライアントデバイス106において提示されなくなる可能性が高くなり、それによって、電子文書に関するユーザ経験に悪影響を与える。さらに、デジタルコンポーネントを提供する際に遅延すると、たとえば、デジタル文書が提供されたときに電子文書105がクライアントデバイス106において提示されなくなった場合、デジタルコンポーネントの配信が失敗する可能性がある。
いくつかの実装形態では、DCDS110は、たとえば、リダイレクト削減装置111(たとえば、コンピューティングハードウェアおよびコードを含むサーバ)および/または相互接続され、要求112に応答してデジタルコンポーネントを識別および配布する複数のコンピューティングデバイスのセットを含む分散コンピューティングシステムにおいて実装される。複数のコンピューティングデバイスのセットは、数百万の利用可能なデジタルコンポーネントのコーパスの中から電子文書内に提示されるために適格なデジタルコンポーネントのセットを識別するために、一緒に動作する。たとえば、デジタルコンポーネントデータベース116において、数百万の利用可能なデジタルコンポーネントに索引を付けることができる。各デジタルコンポーネント索引エントリは、対応するデジタルコンポーネントを参照することができ、および/または対応するデジタルコンポーネントの配信/送信に寄与する(たとえば、条件付けまたは制限する)配信パラメータを含むことができる。たとえば、配信パラメータは、コンポーネント要求が、(たとえば、正確にまたは何らかのあらかじめ指定された類似性レベルで)デジタルコンポーネントの配信パラメータのうちの1つに一致する少なくとも1つの基準を含むことを要求することによってデジタルコンポーネントの送信に寄与することができる。
DCDS110のリダイレクト削減装置(RRA)111は、中間サーバ108などの様々な中間サーバと通信する追跡サーバとすることができる。RRA111は、クライアントデバイス106によって要求され、電子文書サーバ105などの様々なサーバ上でホストされているリソースにクライアントデバイス106を向けることができる。RRA111は、それを通じてユーザが入力を提供することができるフロントエンドインターフェースを含む。たとえば、フロントエンドインターフェースは、ボタンおよびテキスト入力フィールドなどのユーザインターフェース要素を含むユーザインターフェースを含むことができる。フロントエンドインターフェースは、ネットワーク102などの1つまたは複数の通信ネットワークを介した通信を可能にする通信インターフェースを含む。RRA111は、通信インターフェースを通じて中間サーバ108と通信することができる。たとえば、RRA111は、クライアントデバイス106がデジタルコンポーネントを要求したときにクライアントデバイス106に対話追跡データなどのデータを提供するために、通信インターフェースを使用してプロキシサーバを通じて中間サーバ108と通信することができる。
適格なデジタルコンポーネントの識別は、次に複数のコンピューティングデバイスのセット内のコンピューティングデバイス間で割り当てられる複数のタスクに分割することができる。たとえば、複数のコンピューティングデバイスのセットの中の異なるコンピューティングデバイスはそれぞれ、コンポーネント要求112に含まれる情報と一致する配信パラメータを有する様々なデジタルコンポーネントを識別するために、デジタルコンポーネントデータベース116の異なる部分を分析することができる。複数のコンピューティングデバイスのセット内の異なるコンピューティングデバイスは、デジタルコンポーネントデータベース116に記憶されている、特定のデジタルコンポーネントとのユーザ対話データを含む報告データ118を使用することができる。いくつかの実装形態では、複数のコンピューティングデバイスのセットの中の各所与のコンピューティングデバイスは、異なるデータ次元(または、次元のセット)を分析し、分析の結果をDCDS110に返す(たとえば、送信する)ことができる。たとえば、セット114内のコンピューティングデバイスの各々によって提供される結果118a〜118cは、コンポーネント要求に応じて配信に適格なデジタルコンポーネントのサブセットおよび/または特定の配信パラメータを有するデジタルコンポーネントのサブセットを識別し得る。デジタルコンポーネントのサブセットの識別は、たとえば、イベントデータを配信パラメータと比較すること、およびイベントデータの少なくともいくつかの特徴と一致する配信パラメータを有するデジタルコンポーネントのサブセットを識別することを含むことができる。
DCDS110は、要求112に応答して提供されることになる1つまたは複数のデジタルコンポーネントを選択するために、複数のコンピューティングデバイスのセットから受信した結果を集約し、集約された結果に関連付けられる情報を使用する。たとえば、DCDS110は、以下で論じるように、1つまたは複数のコンポーネント評価プロセスの結果に基づいて、ウィニングデジタルコンポーネント(winning digital component)のセット(1つまたは複数のデジタルコンポーネント)を選択することができる。次に、DCDS110は、ネットワーク102を介して、クライアントデバイス106がウィニングデジタルコンポーネントのセットを所与の電子文書に統合することを可能にする応答データ120(たとえば、応答を表すデジタルデータ)を生成して送信することができ、したがって、ウィニングデジタルコンポーネントのセットと電子文書のコンテンツが、クライアントデバイス106のディスプレイに一緒に提示されるようになる。
いくつかの実装形態では、クライアントデバイス106は、応答データ120に含まれる命令を実行し、それは、クライアントデバイス106が1つまたは複数のデジタルコンポーネントサーバからウィニングデジタルコンポーネントのセットを取得するように構成し、それを可能にする。たとえば、応答データ120内の命令は、ネットワークの場所(たとえば、ユニフォームリソースロケータ(URL))と、中間サーバ108から所与のウィニングデジタルコンポーネントを取得するためにクライアントデバイス106にサーバ要求(SR)121を中間サーバ108に送信させるスクリプトとを含むことができる。要求に応答して、中間サーバ108は、サーバ要求121において(たとえば、複数のデジタルコンポーネントを記憶するデータベース内で)指定された所与のウィニングデジタルコンポーネントを識別し、クライアントデバイス106において電子文書内の所与のウィニングデジタルコンポーネントを提示するデジタルコンポーネントデータ(DCデータ)122をクライアントデバイス106に送信する。
いくつかの実装形態では、クライアントデバイス106が所与のウィニングデジタルコンポーネントと対話するとき、クライアントデバイス106はリソースに対する要求をDCDS110に送信する。たとえば、クライアントデバイス106は、モバイルアプリケーションをダウンロードするためのリンクである所与のウィニングデジタルコンポーネントを選択し得る。リンクを選択すると、クライアントデバイス106は、モバイルアプリケーションをダウンロードするために必要なファイルにアクセスする要求をDCDS110に送信する。DCDS110は、要求内のデータに基づいて、クライアントデバイス106をどこに向けるかを決定する。
いくつかの例では、DCDS110は、クライアントデバイス106において所与のウィニングデジタルコンポーネントとの対話を示す対話データを中間サーバに提供するために、1つまたは複数の中間サーバにクライアントデバイス106を向ける。これらの中間サーバは、中間サーバ108を含み得る。以下でより詳細に説明する他の例では、DCDS110は、クライアントデバイス106を中間サーバにリダイレクトせず、代わりに、要求されたリソースをホストする要求された宛先サーバにクライアントデバイス106を直接向ける。
電子文書の検索を容易にするために、環境100は、電子文書をクロールおよび索引付けすることによって電子文書を識別する(たとえば、電子文書のクロールされたコンテンツに基づいて索引付けされる)検索システム150を含むことができる。電子文書に関するデータは、データが関連付けられている電子文書に基づいて索引付けすることができる。電子文書の索引付きコピー、および任意でキャッシュされたコピーは、検索索引152(たとえば、ハードウェアメモリデバイス)に記憶される。電子文書に関連付けられるデータは、電子文書に含まれるコンテンツおよび/または電子文書のメタデータを表すデータである。
クライアントデバイス106は、ネットワーク102を介して検索クエリを検索システム150に提出することができる。それに応じて、検索クエリに関連する電子文書を識別するために、検索システム150は検索索引152にアクセスする。検索システム150は、検索結果の形式で電子文書を識別し、検索結果ページにおいて検索結果をクライアントデバイス106に返す。
検索結果は、特定の検索クエリに応答する(たとえば、関連する)電子文書を識別する検索システム150によって生成されたデータであり、クライアントデバイスに、ユーザと検索結果との対話に応答して指定されたネットワークの場所(たとえば、URL)からデータを要求させるアクティブリンク(たとえば、ハイパーテキストリンク)を含む。例示的な検索結果は、ウェブページのタイトル、テキストの断片またはウェブページから抽出された画像の一部、およびウェブページのURLを含むことができる。別の例示的な検索結果は、ダウンロード可能なアプリケーションのタイトル、ダウンロード可能なアプリケーションを説明するテキストの断片、ダウンロード可能なアプリケーションのユーザインターフェースを表す画像、および/またはアプリケーションをクライアントデバイス106にダウンロードすることができる場所へのURLを含むことができる。
状況によっては、検索システム150は、提出された検索クエリに関連するダウンロード可能なアプリケーションに関する情報を提示するために、クライアントデバイス106にインストールするためにアプリケーションをダウンロードすることができるアプリケーションストア(または、オンラインポータル)の一部であるか、それと対話することができる。他の電子文書と同様に、検索結果ページは、デジタルコンポーネント(たとえば、ビデオクリップ、オーディオクリップ、画像、または広告としてフォーマットすることができる他のデジタルコンポーネント)を提示することができる1つまたは複数のデジタルコンポーネントスロットを含むことができる。
いくつかの実装形態では、中間サーバ108などの複数のサーバは、ユーザが電子文書105に向けられる前に、特定のデジタルコンポーネントとのユーザの対話を追跡する。DCDS110は、クライアントデバイス106を中間サーバ108などの他のサーバにリダイレクトすることなしに、クライアントデバイス106に直接電子文書105へのアクセスを提供することによって、既存の方法より少ないリダイレクトでクライアントデバイスが電子文書105にアクセスすることを可能にする。クライアントデバイス106を中間サーバ108にリダイレクトする代わりに、DCDS110はユーザの要求112を受信し、電子文書サーバ104によって提供される電子文書105を直接参照して応答120を送信する。中間サーバ108が、クライアントデバイスから中間サーバ108へのリダイレクトによって特定のデジタルコンポーネントとのユーザの対話を追跡すると、DCDS110のリダイレクト削減装置111(または、DCDS110の別のコンポーネント)は、要求されたリソースをホストする中間サーバにクライアントデバイス106を直接リダイレクトし、さもなければクライアントデバイス106が報告データを中間サーバ108に提供するために辿ったリダイレクトを辿る。報告データは、上述のように、他の情報に関連するイベントデータに加えて、特定のデジタルコンポーネントとのユーザ対話データを含み得る。
図2Aは、クライアントデバイスが、リダイレクトチェーンを通じて要求されたリソースにどのように向けられるかを示す例示的なデータフロー200である。データフロー200の動作は、追跡サーバ210、中間サーバA220、中間サーバB230、および宛先サーバ240を含む複数のサーバと通信するクライアントデバイス106によって実行される。いくつかの実装形態では、フロー200の段階は、環境100などのネットワーク環境内で実行される。
いくつかの例では、クライアントデバイス106は、セルラー電話、スマートフォン、またはタブレットなどのモバイルデバイスであり、ワイヤレスネットワークを介して通信する。サーバ210、220、230、および240は、クライアントデバイス106が通信するワイヤレスネットワークとは別のワイヤードネットワークを介して通信し得る。たとえば、クライアントデバイス106は、ワイヤレスセルラーネットワークを介して通信するスマートフォンであり得、一方、サーバ210、220、230、および240は、ワイヤードネットワークを介して通信するリモートサーバである。
追跡サーバ210は、クライアントデバイス106から追跡データを受信し、追跡データに基づいてクライアントデバイス106のリダイレクト先を決定する。たとえば、追跡サーバ210は、クライアントデバイス106が、デジタルコンポーネントサーバを通じてデジタルコンポーネントプロバイダによって提供されたデジタルコンポーネントと対話したと決定し得る。デジタルコンポーネントプロバイダは、それら自身の分析のためにクライアントデバイス106とデジタルコンポーネントとの対話からの対話追跡データを要求してもよく、クライアントデバイス106が中間サーバ(たとえば、それらのサーバ、またはデジタルコンポーネントプロバイダが使用する第三者サーバ)にリダイレクトされることを要求してもよい。
サーバA220は、クライアントデバイスと特定の電子文書との間の対話を追跡する。サーバA220は、クライアントデバイス106から対話データを受信し、デジタルコンポーネントプロバイダなどのリソースプロバイダに分析を提供するためにその対話データを使用する。いくつかの実装形態では、サーバA220は、追跡サーバ210および宛先サーバ240を維持する1つまたは複数の当事者とは別の当事者によって維持される第三者サーバである。たとえば、サーバA220は分析会社によって維持されてもよく、追跡サーバ210は検索エンジン会社によって維持されてもよく、宛先サーバ240はデジタルコンポーネントプロバイダによって維持されてもよい。サーバA220を使用するデジタルコンポーネントプロバイダは、デジタルコンポーネントとの対話がサーバAによって記録されるように、デジタルコンポーネントプロバイダによって提供されるデジタルコンポーネントと対話するクライアントデバイス106が、要求されたリソースを提供する宛先サーバ240に向けられる前に、サーバA220に向けられることを要求し得る。
サーバB230は、サーバA220と同様の第三者サーバであり得る。たとえば、サーバB230はまた、デジタルコンポーネントプロバイダによって使用される第三者分析サーバであり得る。いくつかの例では、デジタルコンポーネントプロバイダは、追跡サーバ210によって提供されるものとは別に、分析のためにサーバA220およびサーバB230のうちの1つまたは複数を使用し得る。たとえば、特定のデジタルコンポーネントプロバイダは、分析のためにサーバA220とサーバB230の両方を使用してもよく、特定のデジタルコンポーネントプロバイダによって提供される特定のデジタルコンポーネントとの対話追跡データを提供するために、クライアントデバイス106がサーバA220とサーバB230の両方にリダイレクトされるよう要求してもよい。サーバB230は、サーバA220を維持している当事者とは異なる当事者によって維持されてもよい。たとえば、サーバB230は、サーバA220とは異なる第三者サーバであり得、サーバB230は、デジタルコンポーネントプロバイダによって使用され得る。
宛先サーバ240は、リソースをホストし、クライアントデバイス106が宛先サーバ240から(たとえば、リダイレクトを通じて)リソースを要求したときにクライアントデバイス106によって要求されたリソースを提供する。たとえば、クライアントデバイス106がアプリケーションのインストールに必要なファイルを要求した場合、宛先サーバ240は、クライアントデバイス106が(たとえば、サーバB230によって発行されたリダイレクト命令によって)宛先サーバ240に向けられたときに、要求されたファイルを提供し得る。別の例では、クライアントデバイス106が特定のウェブサイトへのアクセスのためにセキュリティトークンを要求した場合、クライアントデバイス106が宛先サーバ240に向けられたときに、宛先サーバ240はセキュリティトークンを提供し得る。
フロー200は段階(1)から始まり、ここで追跡サーバ210はクライアントデバイス106からURL要求202を受信する。URL要求202は、クライアントデバイスがデジタルコンポーネントと対話するときにクライアントデバイス106によって追跡サーバ210に送信される。たとえば、クライアントデバイス106のユーザが新しいウェブブラウザをダウンロードするためにリンクをクリックすると、そのリンクはクライアントデバイス106にURL要求202を追跡サーバ210に送信させる。URL要求202は、クライアントデバイス106からの対話追跡データを含む。たとえば、URL要求202は、対話の指示、クライアントデバイス106が対話したデジタルコンポーネント、およびクライアントデバイス106を一意に識別する識別子などの追跡データを含むことができる。いくつかの実装形態では、URL要求202は、デジタルコンポーネントのプロバイダの指示と、要求されたリソースをホストする宛先サーバ240の場所とを含む。
URL要求202は、宛先サーバ240および要求されたリソースに向けられる前に追跡サーバ210がクライアントデバイス106をリダイレクトするための1つまたは複数の中間サーバを識別することができる。代替として、追跡サーバ210は、連絡されるべき1つまたは複数の中間サーバを識別する情報を記憶することができる。たとえば、デジタルコンポーネントプロバイダは、デジタルコンポーネントプロバイダによって提供されたデジタルコンポーネントとの対話データに対して独立した分析を実行するために、追跡サーバ210とは異なる第三者サーバを使用し得る。この特定の例では、デジタルコンポーネントプロバイダは、追跡サーバ210に連絡した後で、宛先サーバ240に向けられる前に、クライアントデバイス106をサーバA220にリダイレクトすることを要求している。
フロー200は段階(2)に続き、ここで追跡サーバ210がリダイレクトデータ212をクライアントデバイス106に送信する。追跡サーバ210は、URL要求202内(または、データストア内から)のリダイレクト情報を検出し、リダイレクトデータ212をクライアントデバイス106に提供し、クライアントデバイス106を追跡サーバ210と宛先サーバ240との間の中間サーバにリダイレクトさせる。いくつかの例では、リダイレクトデータ212は、応答120の一例である。リダイレクトデータ212は、クライアントデバイス106が向けられている特定のサーバの指示を含み、リダイレクト301またはリダイレクト302コマンドを含むことができる。この特定の例では、リダイレクトデータ212は、クライアントデバイス106をサーバA220に向ける。各中間サーバは、デバイスが中間サーバに連絡したときにデバイスがリダイレクトされるべき次のサーバを識別する情報を記憶する。
フロー200は段階(3)に続き、ここでクライアントデバイス106は報告データ214をサーバA220に送信する。報告データ214は、クライアントデバイスと特定のデジタルコンポーネントとの対話を追跡するためにサーバA220によって使用される対話追跡データを含む。いくつかの実装形態では、対話追跡データは、対話が追跡されるコードの一部を含む。対話追跡データは、クライアントデバイス106を一意に識別する識別子、クライアントデバイス106が対話したデジタルコンポーネントを一意に識別する識別子、サーバ識別子、および/またはクライアントデバイス106の場所情報などの他のデータを含むことができる。
フロー200は段階(4)に続き、ここでサーバA220はリダイレクトデータ222をクライアントデバイス106に送信する。リダイレクトデータ222は、宛先サーバ240に向けられる前にクライアントデバイス106が向けられる次の中間サーバを示す。たとえば、追跡サーバ210は、クライアントデバイス106が向けられている第1の中間サーバがサーバA220であることを識別し、リダイレクトデータ212をクライアントデバイス106に送信することができる。サーバA220は、次の中間サーバを示すデータと次の中間サーバによって要求されたデータとにアクセスする。たとえば、サーバA220は、サーバB230のアドレスを示すデータと、サーバB230によって要求された特定の対話追跡データにアクセスすることができる。サーバA220は、サーバB230によって要求された特定の対話追跡データを報告データ214またはURL要求から抽出し、特定の対話追跡データおよびサーバB230のアドレスを使用してリダイレクトデータ222を生成する。次いで、サーバA220は、リダイレクトデータ222をクライアントデバイス106に送信する。いくつかの例では、サーバA220は、リダイレクトデータ222を生成するために、クライアントデバイス106が第1の中間サーバに到達したことを示すようにリダイレクトデータ212を修正し得る。
フロー200は段階(5)に続き、ここでクライアントデバイス106は報告データ224をサーバB230に送信する。クライアントデバイス106は、リダイレクトデータ222によってサーバB220に向けられ、報告データ224をサーバB230に提供するように指示される。報告データ224は、上述のような対話追跡データなどの、サーバB230によって要求されたデータを含む。いくつかの例では、サーバA220は、報告データ214を修正することによって報告データ224を生成する。たとえば、サーバA220は、データがサーバA220によって受信されたことを報告データ224内に示すことができる。
フロー200は段階(6)に続き、ここでサーバB230はリダイレクトデータ232をクライアントデバイス106に送信する。サーバB230は、クライアントデバイス106が向けられるべきすべての中間サーバに到達したと決定する。いくつかの例では、サーバB230は、クライアントデバイスがすべての中間サーバに到達したと決定するために、報告データ224にアクセスする。次いで、サーバB230は、クライアントデバイス106を宛先サーバ240に向けるために、リダイレクトデータ232をクライアントデバイス106に提供する。
フロー200は段階(7)に続き、ここでクライアントデバイス106は宛先サーバ240に向けられる。リダイレクトデータ232は宛先サーバ240の場所データを含む。クライアントデバイス106はリダイレクトデータ232を受信し、要求されたリソースにアクセスするために宛先サーバ240に向けられる。クライアントデバイス106は、要求されたリソースを宛先サーバ240からダウンロードし得る。
いくつかの実装形態では、より多数またはより少数の中間サーバがあり得る。クライアントデバイス106がリソースを要求するときと、クライアントデバイス106がリソースにアクセスするために宛先サーバ240に向けられるときとの間に少なくとも1つの中間サーバがある。
クライアントデバイスがデータフロー200に従ってクライアントデバイスによって要求されたリソースに向けられると、意図しないプロセス、および付随する待ち時間またはエラーが発生する可能性がある。たとえば、リソースへのアクセスに不要な別のウェブブラウザウィンドウまたはアプリケーションが開かれ得る。いくつかの例では、中間サーバは、クライアントデバイスを誤ったリソースまたは場所にリダイレクトする可能性がある。たとえば、第三者の中間サーバは、アプリのインストールに必要なファイルのダウンロードを開始するためにアプリストアを開く代わりに、クライアントデバイスによってインストールを要求された特定のモバイルアプリのランディングページにウェブブラウザを開くようにクライアントデバイスに強制し得る。
これらの追加のプロセスは、リソースが要求されたときと、クライアントデバイスがそのリソースに向けられたときとの間の待ち時間を増加させる。たとえば、待ち時間の増加は、クライアントデバイスが受けるリダイレクトごとに発生する可能性があり、クライアントデバイスが向けられる中間サーバの数が増えるにつれて、クライアントデバイスのユーザの待ち時間が増える。さらに、各リダイレクトにおいて接続が切断される可能性がある。この可能性は、信頼性が低い可能性があるモバイル/セルラーネットワークなどのワイヤレスネットワークにおいて特に顕著である。
図2Bは、データフロー200によって要求されるよりも少ないリダイレクトでクライアントデバイスを要求されたリソースに向けるための例示的なデータフロー250である。フロー250は、クライアントデバイスによって要求されたリソースに向けられる前にクライアントデバイスが受けるリダイレクトの数を削減し、クライアントデバイスが従う方向のチェーンにおける待ち時間および切断の可能性を削減する。フロー250は、追跡サーバ260、サーバA270、サーバB280、および宛先サーバ290を含む。追跡サーバ260は、図1に関して上述したようなリダイレクト削減装置111の一例であり、クライアントデバイスが受けるリダイレクトの数を追跡サーバ260が削減することを可能にするハードウェアおよび/またはコードを含む。いくつかの例では、追跡サーバ260は、リダイレクト削減装置111を含み、クライアントデバイスがリダイレクト削減装置111を使用して受けるリダイレクトの数を削減することができる追跡サーバである。
いくつかの例では、クライアントデバイス106は、セルラー電話、スマートフォン、またはタブレットなどのモバイルデバイスであり、ワイヤレスネットワークを介して通信する。いくつかの例では、サーバ260、270、280、および290は、クライアントデバイス106が通信するワイヤレスネットワークとは別のワイヤードネットワークを介して通信し得る。たとえば、クライアントデバイス106は、ワイヤレスセルラーネットワークを介して通信するスマートフォンであり得、一方、サーバ260、270、280、および290は、ワイヤードネットワークを介して通信するリモートサーバである。
フロー250は段階(1)から始まり、ここで追跡サーバ260はURL要求252および対話データ254を受信する。URL要求252はURL要求202と同様であり得る。追跡サーバ260は、URL要求252および対話データ254を受信し、クライアントデバイス106に送信するための構造化応答を生成する。
URL要求252は、追跡サーバ260がクライアントデバイス106に送信された応答を生成するために使用する宛先サーバ290の場所を示すデータを含む。たとえば、URL要求252は、ヘッダ、またはURL要求252の特定の特性を示す文字列を含み得る。ヘッダは、宛先サーバ290に向けられる前に、対話データ254などの対話データを提供するためにクライアントデバイス106が向けられるべき中間サーバがあるかどうかを示す特定のビットを含み得る。追跡サーバ260は、特定のビットの値に基づいて、中間サーバがあると決定し、宛先サーバ290の場所を識別するために進むことができる。いくつかの例では、追跡サーバ260は、中間サーバが存在するかどうかを決定するために、リソースのソースに対してリソースの認証情報をチェックする。次いで、追跡サーバ260は、クライアントデバイス106を中間サーバに向ける代わりに、宛先サーバ290の場所とともにクライアントデバイス106への応答を生成する。
URL要求252が、プロキシが使用されるべきであることを示す場合、追跡サーバ260はプロキシサーバにコールアウトし得る。たとえば、URL要求252のヘッダに適切なビットが設定されている場合、追跡サーバ260はプロキシサーバにコールアウトすることができる。いくつかの実装形態では、プロキシサーバは、追跡サーバ260のホスト環境の外部にあるネットワークおよびサーバにピングするポストバックプロキシサーバであり得る。フロー250において、追跡サーバ260が、URL要求252に基づいて、クライアントデバイス106が向けられるべき中間サーバがあると決定すると、追跡サーバ260は、クライアントデバイス106は中間サーバの代わりに宛先サーバ290に向けられるべきであると決定し、追跡サーバ260は、URL要求252において識別された中間サーバに要求された対話データを提供する。
フロー250は段階(2)に続く。この特定の例では、段階(2A)、段階(2B)、段階(2C)、および段階(2D)を含むいくつかのステップが段階(2)内で起こる。段階(2A)と(2B)、(2C)と(2D)は同時に起こり得る。たとえば、段階(2A)は段階(2B)、(2C)、および(2D)と並行して起こり得る。段階(2B)、(2C)、および(2D)は順次起こる。
段階(2A)の間、追跡サーバ260はリダイレクトデータ262をクライアントデバイス106に提供する。追跡サーバ260がURL要求252を受信し、クライアントデバイス106が向けられるべき中間サーバがあると決定すると、追跡サーバ260は宛先サーバ290の場所を示すリダイレクトデータ262を含む構造化応答を生成する。リダイレクトデータ262は、HTTPリファラ、または要求されているリソースにリンクしているウェブページのアドレスを識別するURL要求262のヘッダのフィールドを含むことができる。たとえば、リファラは、ブログ記事、またはクライアントデバイス106によって要求されている特定のモバイルアプリケーションにリンクするクライアントデバイス106の起点場所を示すことができる。そのような例では、モバイルアプリケーションは宛先サーバ260によってホストされる。
リダイレクトデータ262は、クライアントデバイス106を、クライアントデバイス106によって要求されたリソースをホストする宛先サーバ290に向けるデータを含む。たとえば、リダイレクトデータ262は、宛先サーバ290の場所と、宛先サーバ290から要求されたリソースにアクセスするようにクライアントデバイス106に指示するコードとを含むことができる。
段階(2A)が実行されている間、追跡サーバ260は、クライアントデバイス106が対話データ254などの対話データを提供すべき中間サーバを識別する。
いくつかの実装形態では、中間サーバは、追跡サーバ260および/または宛先サーバ290がホストされる環境の外部でホストされる第三者サーバである。第三者の中間サーバにピングするために、追跡サーバ260は、プロキシサーバが中間サーバにピングすることを要求するためにプロキシサーバに連絡することができる。サーバにピングすることは、サーバに連絡すること、ならびに様々な情報をサーバに提供することを含むことができる。たとえば、サーバにピングすることは、受信されたURL要求から抽出された情報、および/またはURL要求に関連する他の情報(たとえば、データストアに記憶され、および/またはURL要求に索引付けされた情報、ならびに/あるいはURL要求に対応する識別子)を提供することを含むことができる。いくつかの実装形態では、追跡サーバ260は、最初に受信したURL要求262に含まれる情報を中間サーバに提供するために中間サーバにピングすることができる。プロキシサーバは、サーバA270およびサーバB280などの中間サーバと通信するために、追跡サーバ260が低遅延のリモートプロシージャコール(RPC)を行うことを可能にする。いくつかの例では、プロキシサーバはピングすることからの応答を受信する際の長時間の遅延を処理するためのタイムアウト期限が長くなる。いくつかの例では、タイムアウト期限が過ぎると、プロキシサーバは中間サーバにピングすることを再試行することができる。いくつかの例では、ピングすることは、ピングすることを実行するサーバスレッドをスリープ状態にせずに即座に結果を返し、サーバによって実行される他のプロセスの実行を遅らせるブロッキングを排除することで待ち時間を削減する、ノンブロッキングのピングすることである。
段階(2B)の間、追跡サーバ260は、報告データ264を含む要求を用いてサーバA270にピングする。報告データ264は、クライアントデバイス106から追跡サーバ260に送信された対話データ254の少なくとも一部を含む。サーバA270は、クライアントデバイス106が対話したデジタルコンポーネントのプロバイダに関する分析を生成するために、報告データ264を使用することができる。たとえば、サーバA270は、追跡サーバ260によって提供された統計から独立した対話統計をデジタルコンポーネントプロバイダに提供するために報告データ264を分析する第三者分析サーバであり得る。
いくつかの例では、追跡サーバ260が、プロキシサーバが中間サーバにピングすることを要求すると、追跡サーバ260は特定の中間サーバにピングすることが開始されたときにカウンタを開始し、ピングすることに対する応答を待つ間に経過した時間量を追跡する。特定のタイムアウト期限に達した場合、追跡サーバ260は、プロキシサーバに特定の中間サーバにピングすることの再試行を要求し得る。
段階(2C)中、追跡サーバ260はサーバA270からリダイレクトデータ272を受信する。追跡サーバ260から報告データ264を受信すると、サーバ270はリダイレクトデータ272を追跡サーバ260に送信する。リダイレクトデータ272は追跡サーバ260をサーバB280に向ける。いくつかの例では、リダイレクトデータ272は、対話データを含む報告データをサーバB280に提供するように追跡サーバ260に指示する。クライアントデバイスを要求されたリソースに向けるためのフロー200および他のそのようなプロセスにおいて、サーバA270はリダイレクトデータ272をクライアントデバイス106に送信する。対照的に、フロー250では、追跡サーバ260は、中間サーバがあることを検出し、クライアントデバイス106が受けるリダイレクトの数を削減するために各リダイレクトを傍受してそれに従うようにサーバにピングする。
段階(2D)の間、追跡サーバ260は、報告データ264を含む要求を用いてサーバB280にピングする。追跡サーバ260は、追跡サーバ260がサーバA270にピングするのと同じ方法で、サーバB280にピングする。追跡サーバ260は、サーバB280に提供するために報告データ264を生成する。いくつかの例では、報告データ264は、追跡サーバ260に提供されたリダイレクトデータ272に基づいて生成される。いくつかの例では、追跡サーバ260は、対話追跡データが以前の中間サーバに提供されたことを示すために報告データ274を生成するように報告データ264を修正することができる。たとえば、追跡サーバ260は、サーバA270によって要求された対話追跡データが受信されたことを示すために報告データ274を生成することができる。追跡サーバ260は、サーバA270から受信したリダイレクトデータ272からのデータを、サーバ280に提供される報告データ274に含めることができる。たとえば、追跡サーバ260は、報告データ274にリダイレクトデータ272の一部または全部を含むことができる。サーバB280は、レポートを生成するために、または対話統計をデジタルコンポーネントプロバイダに提供するために、データがサーバA270によって受信されたという指示を使用することができる。たとえば、サーバB280は、クライアントデバイス106に関する対話追跡データが提供されている中間サーバの数を示す統計をデジタルコンポーネントプロバイダに提供することができる。
追跡サーバ260は、リダイレクトデータ272から、対話追跡データが提供されるべきさらなる中間サーバが存在しないことを決定することができ、追跡サーバ260はさらなる中間サーバにピングしないであろう。いくつかの例では、追跡サーバ260は、クライアントデバイス106に関する対話追跡データが提供されるべきすべての中間サーバに到達したことを示すデータをサーバB280から受信することができる。
いくつかの例では、段階(2B)、(2C)、および(2D)は順次実行され、段階(2B)は追跡サーバ260が、クライアントデバイスを宛先サーバ290に向けるクライアントデバイス106にリダイレクトデータ262を提供する段階(2A)と並行して開始される。
フロー250は段階(3)に続き、ここでクライアントデバイス106はリダイレクトデータ262を通じて宛先サーバ290に向けられる。段階(3)は、段階(2A)の後に順次発生し、段階(2B)、(2C)、および(2D)とは非同期に発生する。リダイレクトデータ262は、宛先サーバ290の場所データと、宛先サーバ290にリソースを要求するようにクライアントデバイス106に指示するデータとを含む。クライアントデバイス106は、宛先サーバ290から要求されたリソースをダウンロードし得る。
リソースを要求してから宛先サーバ290においてリソースにアクセスするまでの間にクライアントデバイス106が中間サーバへのリダイレクトを迂回することを可能にすることによって、フロー250はクライアントデバイスのユーザに対する待ち時間を削減し、クライアントデバイス106と中間サーバへのアクセスを提供するネットワークとの間の接続が切断され得る各リダイレクトにおいて起こり得る障害点を排除する。
図3は、ユーザを要求されたリソースに向けるための例示的なプロセス300のフローチャートである。いくつかの実装形態では、プロセス300は、1つまたは複数のサーバによって実装することができる。たとえば、プロセス300は、図2Bの追跡サーバ260、サーバA270、サーバB280、および宛先サーバ290によって実装することができる。いくつかの実装形態では、プロセス300は、コンピュータ可読記録媒体に記憶された命令として実装することができ、命令が1つまたは複数のサーバによって実行されると、命令は、1つまたは複数のサーバにプロセス300の動作を実行させることができる。
1つまたは複数のサーバが、クライアントデバイスにおいてデジタルコンポーネントとの対話を検出する(302)。クライアントデバイスは、ワイヤレス通信ネットワークを介して通信するモバイルデバイスであり得る。いくつかの実装形態では、1つまたは複数のサーバは、追跡サーバ260を実装するために使用することができ、追跡サーバ260は、クライアントデバイス106におけるデジタルコンポーネントとの対話を検出する。1つまたは複数のサーバは、モバイルデバイスとは無関係にワイヤード通信ネットワークを介して通信する。たとえば、図1を参照して上述したように、特定のデジタルコンポーネントとの対話は、クライアントデバイスにリソースに対する要求を開始させることができる。上述のように、クライアントデバイスは、リソース要求に様々なイベントデータを含めることができ、クライアントデバイスが対話したデジタルコンポーネントおよびデジタルコンポーネントのプロバイダを指定するデータを含めることができる。対話に応答して、追跡サーバは、以下により詳細に説明されるように、クライアントデバイスから受信したURLにおいて指定された宛先サーバにクライアントデバイスをリダイレクトし、追跡サーバがクライアントデバイスを宛先デバイスにリダイレクトしなかった場合にクライアントデバイスが辿ったであろうマルチサーバリダイレクトパスを辿ることができる。
1つまたは複数のサーバは、1つまたは複数のサーバがクライアントデバイスをリダイレクトする先となる中間サーバ、およびデジタルコンポーネントとの対話を通じて要求されている宛先サーバ識別する(304)。いくつかの実装形態では、追跡サーバ260は、デジタルコンポーネントとの対話を通じて要求されたリソースにアクセスするために宛先サーバ290に向けられる前に、追跡サーバ260がクライアントデバイス106をリダイレクトする先となるサーバA270およびサーバB280を識別する。たとえば、図2Bに関して上述したように、追跡サーバ260は、中間サーバ270および280ならびに宛先サーバ290を識別することができる。いくつかの実装形態では、追跡サーバは、追跡サーバに連絡するために使用されるURLを調べ、クライアントデバイスがリダイレクトされるべき中間サーバのパスを指定する情報を抽出する。代替として、追跡サーバは、対話が発生した特定のデジタルコンポーネントを識別し、デジタルコンポーネントを中間サーバにマッピングするデータ構造内で中間サーバのパスを調べることができる。
1つまたは複数のサーバは、クライアントデバイスを中間サーバに向けることなくクライアントデバイスを宛先サーバにリダイレクトする(306)。いくつかの実装形態では、追跡サーバ260は、クライアントデバイスを中間サーバ270および280に向けることなく、クライアントデバイス106を宛先サーバ290にリダイレクトすることができる。たとえば、図2Bに関して上述したように、追跡サーバ260は、段階(2A)を実行することができ、この段階では、段階(2B)、(2C)、および(2D)とは無関係に、クライアントデバイス106が目的地サーバ290に向けられる。
1つまたは複数のサーバは、デジタルコンポーネントとの対話に対応する対話データを含む要求を用いて中間サーバにピングする(308)。いくつかの実装形態では、追跡サーバ260は、デジタルコンポーネントとの対話に対応する対話データを含む要求を用いて、中間サーバ、サーバA270、およびサーバB280にピングする。たとえば、図2Bに関して上述したように、追跡サーバ260は、それぞれサーバA270またはサーバB280にピングするために、段階(2B)または(2D)を実行することができる。いくつかの例では、追跡サーバ260は、ピングすることを実行するための要求をプロキシサーバに送信する。いくつかの実装形態では、追跡サーバ260は、宛先デバイスへのクライアントデバイスのリダイレクトとは異なる第2のリダイレクトパスを開始することによって、中間サーバにピングする。
いくつかの実装形態では、追跡サーバ260は、ピングすることが開始されたときにカウンタを開始することと、カウンタを使用して要求を用いてピングすることの間に経過した時間量を追跡することとによって、サーバA270などの中間サーバにピングする。追跡サーバ260は、中間サーバ、あるいはA270またはサーバB280などのサーバにピングすることを再試行することができる。
1つまたは複数のサーバは、1つまたは複数のサーバを第2の中間サーバにリダイレクトするリダイレクト応答を中間サーバから受信する(310)。たとえば、1つまたは複数のサーバは、第2の中間サーバの場所を示すリダイレクト応答を中間サーバから受信することができる。いくつかの実装形態では、追跡サーバ260は、追跡サーバ260を第2の中間サーバ、またはサーバB280に向けるリダイレクトデータ272を受信する。
1つまたは複数のサーバは、リダイレクト応答からのデータを含む第2の要求を用いて第2の中間サーバにピングする(312)。たとえば、1つまたは複数のサーバは、1つまたは複数のサーバについての外部通信を実行するプロキシサーバを通じて第2の中間サーバにピングすることができる。いくつかの実装形態では、追跡サーバ260は、リダイレクトデータ272からのデータを含む第2の要求を用いてサーバB280にピングする。
1つまたは複数のサーバによって識別される2つ以上の中間サーバがあり得る。そのような例では、1つまたは複数のサーバは、1つまたは複数のサーバを後続の中間サーバに向ける中間サーバの各々からリダイレクトデータを受信することができる。たとえば、図2Bに関して上述したように、段階(2C)において追跡サーバ260をサーバB280にリダイレクトすることができる。
図4は、上記の動作を実行するために使用することができる例示的なコンピュータシステム400のブロック図である。システム400は、プロセッサ410、メモリ420、ストレージデバイス430、および入力/出力デバイス440を含む。コンポーネント410、420、430、および440の各々は、たとえばシステムバス450を使用して相互接続することができる。プロセッサ410は、システム400内で実行するための命令を処理することができる。一実装形態では、プロセッサ410はシングルスレッドプロセッサである。別の実装形態では、プロセッサ410はマルチスレッドプロセッサである。プロセッサ410は、メモリ420またはストレージデバイス430に記憶されている命令を処理することができる。
メモリ420は、システム400内に情報を記憶する。一実装形態では、メモリ420はコンピュータ可読媒体である。一実装形態では、メモリ420は揮発性メモリユニットである。別の実装形態では、メモリ420は不揮発性メモリユニットである。
ストレージデバイス430は、システム400に大容量ストレージを提供することができる。一実装形態では、ストレージデバイス430はコンピュータ可読媒体である。様々な異なる実装形態では、ストレージデバイス430は、たとえば、ハードディスクデバイス、光ディスクデバイス、複数のコンピューティングデバイスによってネットワーク上で共有されるストレージデバイス(たとえば、クラウドストレージデバイス)、または他の何らかの大容量ストレージデバイスを含むことができる。
入力/出力デバイス440は、システム400に入力/出力動作を提供する。一実装形態では、入力/出力デバイス440は、1つまたは複数のネットワークインターフェースデバイス、たとえば、イーサネット(登録商標)カード、シリアル通信デバイス、たとえばRS-232ポート、および/あるいはワイヤレスインターフェースデバイス、たとえば802.11カードを含むことができる。別の実装形態では、入力/出力デバイスは、入力データを受信し、出力データを他の入力/出力デバイス、たとえばキーボード、プリンタ、および表示デバイス460に送信するように構成されたドライバデバイスを含むことができる。しかしながら、モバイルコンピューティングデバイス、モバイル通信デバイス、セットトップボックステレビジョンクライアントデバイスなどの、他の実装形態も使用することができる。
例示的な処理システムが図4に記載されているが、本明細書に記載された主題の実装形態および機能動作は、本明細書に開示された構造およびそれらの構造的等価物を含む他のタイプのデジタル電子回路、あるいは本明細書に開示された構造およびそれらの構造的等価物を含むコンピュータソフトウェア、ファームウェア、またはハードウェア、あるいはそれらの1つまたは複数の組合せにおいて実装することができる。
電子文書(簡潔にするために、単に文書と呼ぶ)は、必ずしもファイルに対応しているわけではない。文書は、他の文書を保持しているファイルの一部、対象の文書専用の単一ファイル、または複数の調整ファイルに記憶され得る。
本明細書に記載の主題および動作の実施形態は、デジタル電子回路、あるいは本明細書に開示された構造およびそれらの構造的等価物を含むコンピュータソフトウェア、ファームウェア、またはハードウェア、あるいはそれらの1つまたは複数の組合せにおいて実装することができる。本明細書に記載の主題の実施形態は、1つまたは複数のコンピュータプログラム、すなわちコンピュータプログラム命令の1つまたは複数のモジュールとして実装することができ、データ処理装置による実行のため、またはデータ処理装置の動作を制御するために、コンピュータストレージ媒体(または、媒体)上に符号化される。代替として、または追加で、プログラム命令は、人工的に生成された伝搬信号、たとえば、データ処理装置によって実行するために適切な受信装置に送信するための情報を符号化するために生成された、機械生成電気信号、光信号、または電磁信号に符号化され得る。コンピュータストレージ媒体は、コンピュータ可読ストレージデバイス、コンピュータ可読ストレージ基板、ランダムまたはシリアルアクセスメモリアレイまたはデバイス、あるいはそれらの1つまたは複数の組合せであるか、それらに含めることができる。さらに、コンピュータストレージ媒体は伝搬信号ではないが、コンピュータストレージ媒体は、人工的に生成された伝搬信号に符号化されたコンピュータプログラム命令の送信元または宛先になることができる。コンピュータストレージ媒体は、1つまたは複数の別々の物理的コンポーネントまたは媒体(たとえば、複数のCD、ディスク、または他のストレージデバイス)であるか、それらに含めることができる。
本明細書に記載の動作は、1つまたは複数のコンピュータ可読ストレージデバイスに記憶されている、または他のソースから受信されたデータに対してデータ処理装置によって実行される動作として実装することができる。
「データ処理装置」という用語は、例として、プログラマブルプロセッサ、コンピュータ、システムオンチップ、または前述の複数のもの、あるいはそれらの組合せを含む、データを処理するためのあらゆる種類の装置、デバイス、および機械を包含する。装置は、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの専用論理回路を含むことができる。装置はまた、ハードウェアに加えて、対象のコンピュータプログラムの実行環境を作成するコード、たとえば、プロセッサファームウェアを構成するコード、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、またはそれらの1つまたは複数の組合せを含むことができる。装置および実行環境は、ウェブサービス、分散コンピューティング、およびグリッドコンピューティングインフラストラクチャなどの、様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとも呼ばれる)は、コンパイラ型言語またはインタープリタ型言語、宣言型言語または手続き型言語を含む任意の形式のプログラミング言語で記述することができ、スタンドアロンプログラムとして、あるいはモジュール、コンポーネント、サブルーチン、オブジェクト、またはコンピューティング環境における使用に適した他のユニットとしてなど、あらゆる形式で展開することができる。コンピュータプログラムは、必ずしもそうである必要はないが、ファイルシステム内のファイルに対応し得る。プログラムは、他のプログラムまたはデータ(たとえば、マークアップ言語文書に記憶されている1つまたは複数のスクリプト)を保持しているファイルの一部に、対象のプログラム専用の単一ファイルに、あるいは複数の協調ファイル(たとえば、1つまたは複数のモジュール、サブプログラム、またはコードの一部を記憶するファイル)に記憶することができる。コンピュータプログラムは、1つのサイトに配置されているか、または複数のサイトにわたって分散され、通信ネットワークによって相互接続されている1台のコンピュータまたは複数のコンピュータ上で実行されるように展開することができる。
本明細書に記載のプロセスおよび論理フローは、入力データを操作して出力を生成することによってアクションを実行するために1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルプロセッサによって実行することができる。プロセスおよび論理フローはまた、たとえばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの特殊目的論理回路によって実行することもでき、装置はそれらとして実装することもできる。
コンピュータプログラムの実行に適したプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方を含む。一般に、プロセッサは、読出し専用メモリ、ランダムアクセスメモリ、またはその両方から命令およびデータを受け取る。コンピュータの必須要素は、命令に従ってアクションを実行するためのプロセッサと、命令およびデータを記憶するための1つまたは複数のメモリデバイスとである。一般に、コンピュータはまた、データを記憶するための1つまたは複数の大容量ストレージデバイス、たとえば磁気、ディスク光磁気ディスク、または光ディスクを含むか、それらからデータを受信するか、またはそれらにデータを転送するために、あるいはその両方のために動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有する必要はない。さらに、コンピュータは、別のデバイス、たとえば、ほんの数例を挙げると、モバイル電話、携帯情報端末(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲーム機、全地球測位システム(GPS)受信機、またはポータブルストレージデバイスたとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)に組み込むことができる。コンピュータプログラム命令およびデータを記憶するために適したデバイスは、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイスなどの半導体メモリデバイスを含む、あらゆる形態の不揮発性メモリ、媒体、およびメモリデバイス、磁気ディスク、たとえば内蔵ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD-ROMおよびDVD-ROMディスクを含む。プロセッサおよびメモリは、専用論理回路によって補完されるか、またはその中に組み込まれることが可能である。
ユーザとの対話を提供するために、本明細書に記載の主題の実施形態は、たとえばユーザに情報を表示するためのCRT(陰極線管)またはLCD(液晶ディスプレイ)モニタなどのディスプレイデバイスと、キーボード、およびたとえばユーザがコンピュータに入力を提供することができるマウスまたはトラックボールなどのポインティングデバイスとを有するコンピュータ上で実装することができる。ユーザとの対話を提供するために、他の種類のデバイスを使用することもできる。たとえば、ユーザに提供されるフィードバックは、たとえば、視覚的フィードバック、聴覚的フィードバック、または触覚的フィードバックなどの任意の形態の感覚的フィードバックであり得、ユーザからの入力は、音響入力、音声入力、または触覚入力を含む任意の形式で受信することができる。さらに、コンピュータは、ユーザによって使用されるデバイスに文書を送受信することによって、たとえば、ウェブブラウザから受信した要求に応答して、ウェブページをユーザのクライアントデバイス上のウェブブラウザに送信することによって、ユーザと対話することができる。
本明細書に記載の主題の実施形態は、たとえばデータサーバとしてのバックエンドコンポーネントを含む、あるいは、たとえばアプリケーションサーバなどのミドルウェアコンポーネントを含む、あるいは、たとえばユーザが本明細書に記載の主題の実装形態と対話することができるグラフィカルユーザインタフェースまたはウェブブラウザを有するクライアントコンピュータなどのフロントエンドコンポーネントを含むコンピューティングシステム、あるいはそのようなバックエンドコンポーネント、ミドルウェアコンポーネント、またはフロントエンドコンポーネントのうちの1つまたは複数の任意の組合せにおいて実装することができる。システムのコンポーネントは、任意の形態または媒体のデジタルデータ通信、たとえば通信ネットワークによって相互接続することができる。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、ネットワーク間(たとえばインターネット)、およびピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
コンピューティングシステムはクライアントとサーバを含むことができる。クライアントとサーバは一般に互いに離れており、通常は通信ネットワークを通じて対話する。クライアントとサーバの関係は、それぞれのコンピュータ上で実行され、互いにクライアント-サーバ関係を有するコンピュータプログラムによって生じる。いくつかの実施形態では、サーバはデータ(たとえば、HTMLページ)をクライアントデバイスに送信する(たとえば、クライアントデバイスと対話するユーザにデータを表示し、ユーザからユーザ入力を受け取る目的で)。クライアントデバイスにおいて生成されたデータ(たとえば、ユーザとの対話の結果)は、サーバにおいてクライアントデバイスから受信することができる。
本明細書は多くの具体的な実装形態の詳細を含むが、これらはいかなる発明の範囲または主張され得るものに対する限定としてではなく、むしろ特定の発明の特定の実施形態に特有の特徴の説明として解釈されるべきである。本明細書において別々の実施形態の文脈において説明されている特定の特徴は、単一の実施形態において組み合わせて実装することもできる。逆に、単一の実施形態の文脈において説明されている様々な特徴はまた、別々にまたは任意の適切なサブコンビネーションで複数の実施形態において実装することができる。さらに、特徴は特定の組合せで作用するものとして上記で説明され、最初はそのように主張され得るが、場合によっては、主張される組合せからの1つまたは複数の特徴を組合せから切り取ることができ、主張される組合せは、サブコンビネーション、またはサブコンビネーションの変形に関するものであり得る。
同様に、動作は特定の順序で図面に描かれているが、これは、望ましい結果を達成するために、そのような動作が示された特定の順序または順番に実行されること、または示されたすべての動作が実行されることを必要とすると理解されるべきではない。特定の状況では、マルチタスキングおよび並列処理が有利な場合がある。さらに、上述の実施形態における様々なシステムコンポーネントの分離は、すべての実施形態においてそのような分離を必要とするものと理解されるべきではなく、説明されたプログラムコンポーネントおよびシステムは、一般に、単一のソフトウェア製品に一緒に統合されるか、複数のソフトウェア製品にパッケージ化され得ることを理解されたい。
したがって、主題の特定の実施形態が説明された。他の実施形態は添付の特許請求の範囲内にある。場合によっては、請求項に記載されているアクションは異なる順序で実行することができ、依然として望ましい結果を達成することができる。さらに、添付の図面に示されたプロセスは、望ましい結果を達成するために、示された特定の順序、または順番を必ずしも必要としない。特定の実装形態では、マルチタスキングおよび並列処理が有利な場合がある。