上で導入され、下でより詳細に検討される様々な概念は、説明される概念が実装のいかなる特定の方法にも限定されないので、多数の方法のいずれかで実装される可能性がある。特定の実装および応用の例は、主として例示を目的として提供される。
インターネットからダウンロードされ、たとえばウェブブラウザ内で表示されるコンテンツは、第三者のサーバからのさらなるコンテンツを要求し得る。たとえば、クライアントデバイスによって実行されるウェブページは、ウェブブラウザにコンテンツスロットのために第三者のサーバからのコンテンツを要求させることができるプロセッサが実行可能な命令(たとえば、JavaScript(登録商標))を含み得る1つまたは複数のコンテンツスロットを含み得る。ウェブブラウザは、ウェブページをレンダリングするときに要求を自動的に生成することができる。一部の実装において、プロセッサが実行可能な命令は、レンダリングされるウェブページにおけるコンテンツの生成または表示をもたらさない1つまたは複数の要求を生成するようにウェブブラウザに命じ得る。たとえば、ウェブブラウザがサーバに送信することができる要求は、ウェブページのためのコンテンツを提供した第三者のサーバへのステータスの通知または更新を含み得る。さらなるコンテンツの要求および応答は、クライアントデバイスがユーザに対してレンダリングするためのさらなるコンテンツを受信する結果とならないクライアントデバイスに関する無駄な帯域幅および計算リソースをもたらし得る。本明細書において説明されるシステムおよび方法は、クライアントデバイスのためのコンテンツをもたらさない送信の数を削減して、クライアントデバイスのための帯域幅および計算リソースを節約することができる。さらに、システムおよび方法は、応答または要求の送信の許可を制御することができ、これは、クライアントデバイスのユーザのプライバシーを向上させ得る。
たとえば、ウェブページ上のコンテンツスロットを埋めるために第三者によって提供されるコンテンツアイテムは、二次的なウェブページに関連付けられ得る。二次的なウェブページは、コンテンツアイテムの作動(たとえば、クリック)がウェブブラウザを二次的なページに連れて行くことができるのでランディングページと呼ばれ得る。たとえば、コンテンツアイテムは、二次的なウェブページへのHTMLリンクを含み得る。一部の実装において、ユーザは、コンテンツアイテムを閲覧するが、ランディングページを訪問するためにコンテンツアイテムを作動させない可能性がある。そして、後で、コンテンツアイテムを作動させることなく、ユーザは、ランディングページに自主的にナビゲートする可能性がある。訪問の原因をランディングページに帰することは、第三者のクッキーの使用を防止する「非クッキー」環境においては難しくなり得る。本明細書において説明されるシステムおよび方法は、ユーザのプライバシーを向上させながら、ランディングページへのナビゲーションの原因をコンテンツアイテムに帰することができる。
たとえば、本明細書において説明されるシステムは、ブラウザに基づくアプリケーションプログラミングインターフェース(API)を含み得る。APIは、ウェブページ内に表示されたコンテンツアイテムが、ブラウザがコンテンツアイテムをブラウザに登録することを要求するためにブラウザに呼び出しを行うことを可能にする。要求(たとえば、APIへの呼び出し)は、ランディングページのURL、コンバージョン報告URL、およびキャンペーンIDを含み得る。コンテンツアイテムがブラウザに登録され、ブラウザが異なるURLを訪問した後、ブラウザは、現在のページのURLをブラウザに登録されたランディングページのURLと比較することができる。ブラウザが登録されたランディングページのURLのうちの1つを訪問しているとブラウザが判定するとき、ブラウザは、ランディングページのURLに関連するコンバージョン報告URLへの応答メッセージを生成することができる。一部の実装において、応答メッセージは、メッセージまたは要求メッセージと呼ばれ得る。ブラウザは、ブラウザへのコンテンツアイテムの登録およびコンバージョン報告URLへの応答メッセージの送信に関するいくつかのポリシーを設定し、施行することができる。たとえば、ポリシーは、とりわけ、登録が行われ得る前に所定の長さの時間の間コンテンツアイテムが表示されることを必要とするタイミングの要件、不可視のまたは小さなコンテンツアイテム(たとえば、トラッキングピクセル)がブラウザに登録することを防止する表示の要件を設定することができる。
この解決策は、第三者のクッキーを有効化しないブラウザにおいてコンバージョンの測定が実行され得ない場合のいくつかの技術的な解決策を提供する。たとえば、コンテンツアイテム内のJavaScript(登録商標)ではなくブラウザに基づくAPIを使用することは、いくつかの方法でユーザのプライバシーを保護する。第1に、コンテンツアイテムのJavaScript(登録商標)はユーザによって制御されないが、ブラウザに基づくAPIは、ブラウザの特徴であり、ユーザによって制御または制限され得る。これは、上述のポリシーの構成を通じて、どの情報が共有され得るかおよびいつ共有され得るかをユーザが設定することを可能にする。第2に、ブラウザのベンダ(またはユーザ)が、報告URLへの応答メッセージの最大長およびその他の要求(たとえば、フォーマット)を設定し得る。これは、ブラウザが第三者に送信し得る情報の量を制限することができる。たとえば、ユーザエージェントのハッシュおよびブラウザについてのその他の情報が符号化され、報告メッセージ内で第三者に送り返され得ないように、キャンペーンIDが、短い限られた文字数に制限され得る。第3に、ブラウザがランディングページのURLを訪問したときのおよびIPアドレスおよびタイミングを隠蔽するために、ブラウザが、コンバージョン報告URLへの報告メッセージを遅らせるかまたはバッチ処理することができる。第4に、ブラウザが、報告メッセージをプロキシに送信することができ、それから、プロキシが、報告メッセージを第三者に転送する。プロキシは、報告メッセージに含まれる情報をさらに分かりにくくすることができる。
図1は、データをやりとりするための例示的なネットワークおよびデバイス環境100のブロック図を示す。示されるように、1つまたは複数のクライアントデバイス102は、全体的にコンテンツサーバ110と呼ばれ得る1つまたは複数のコンテンツサーバ110(1)~110(N)とネットワーク106を介して通信することができる。クライアントデバイス102は、1つまたは複数の仲介サーバ108を介してコンテンツサーバ110と通信することができる。クライアントデバイス102は、デスクトップコンピュータ、ラップトップコンピュータ、ポータブルコンピュータ、タブレットコンピュータ、ウェアラブルコンピュータ、組み込みコンピュータ、スマートテレビ、コンソール、モノのインターネット(IoT)デバイスもしくはスマート家電、または任意のその他の種類および形態のコンピューティングデバイスを含む任意の種類および形態のコンピューティングデバイスを含み得る。クライアントデバイス102は、全体的にリモートサーバ104と呼ばれ得る1つまたは複数のリモートサーバ104(1)~104(N)とネットワーク106を介して通信することができる。クライアントデバイス102からの要求に応答して、リモートサーバ104は、クライアントデバイス102に主コンテンツ(たとえば、ウェブページ)を送信するかまたはその他の方法で提供する。たとえば、クライアントデバイス102は、コンテンツを要求するためにアプリケーションを実行し得る。アプリケーションは、ウェブブラウザ、ソーシャルメディアアプリケーション、ビデオゲーム、またはその他のそのようなアプリケーションであることが可能である。クライアントデバイス102は、リモートサーバ104およびコンテンツサーバ110からのコンテンツを要求することができる。たとえば、リモートサーバ104は、コンテンツスロットを含むウェブページをホストし得る。ウェブページのコンテンツスロットは、クライアントデバイス102にコンテンツスロットを埋めるための(仲介サーバ108を介した)コンテンツサーバ110からのコンテンツを要求させることができるJavaScript(登録商標)またはその他のプロセッサが実行可能な命令を含み得る。プロセッサが実行可能な命令は、仲介サーバ108またはコンテンツサーバ110によってリモートサーバ104
に提供され得る。
システム100は、1つまたは複数のネットワーク106を含み得る。ネットワーク106は、ローカルエリアネットワーク(LAN)、インターネットなどの広域ネットワーク(WAN)、衛星ネットワーク、ケーブルネットワーク、広帯域ネットワーク、光ファイバネットワーク、マイクロ波ネットワーク、セルラネットワーク、ワイヤレスネットワーク、またはこれらのもしくはその他のそのようなネットワークの任意の組合せを含むネットワークの種類および形態を含み得る。システム100は、同じまたは異なる種類のネットワーク106を含み得る。たとえば、クライアントデバイス102と仲介サーバ108との間のネットワーク106は、第1の種類であることが可能であり、仲介サーバ108とコンテンツサーバ110との間のネットワーク106は、第2の種類であることが可能である。クライアントデバイス102と仲介サーバ108との間のネットワーク106および仲介サーバ108とコンテンツサーバ110との間のネットワーク106は、同じネットワークまたは同じネットワークの構成要素であることが可能である。
ネットワーク106は、たとえば、ゲートウェイ、モデム、ファイアウォール、ルータ、スイッチなどを含む複数のさらなるデバイスを含み得る。ネットワーク106は、ネットワーク106内でデータを受信および/または送信するように構成される任意の数のコンピューティングデバイス(たとえば、コンピュータ、サーバ、ルータ、ネットワークスイッチなど)も含み得る。ネットワーク106は、任意の数の有線および/またはワイヤレス接続を含み得る。クライアントデバイス102は、ネットワーク106内のその他のコンピューティングデバイスに(たとえば、光ファイバケーブル、CAT5ケーブルなどによって)結線されるトランシーバと(たとえば、WiFi、セルラ、無線などによって)ワイヤレスで通信し得る。ネットワーク106は、単一の物理マシンによって実行される複数の仮想マシンの間の仮想ネットワーク、または物理的に移動可能な媒体によるデータのオフライン移動などの抽象ネットワーク(abstract network)(たとえば、テープ媒体、CD-ROM、フラッシュ媒体、外付けハードドライブ、フロッピーディスクなどを介してデータを移動させるスニーカーネット)などの仮想的なネットワークを含み得るまたはそのような仮想的なネットワークであり得る。
システム100は、1つまたは複数の仲介サーバ108を含み得る。仲介サーバ108は、クライアントデバイス102から受信されたコンテンツ要求を管理することができる。コンテンツ要求は、リモートサーバ104によって提供された主コンテンツのコンテンツスロット内にレンダリングするための二次的なコンテンツまたはコンテンツアイテムとも呼ばれるコンテンツを求めるものであることが可能である。仲介サーバ108は、複数のコンテンツサーバ110からのコンテンツ要求を満たすことができる。たとえば、仲介サーバ108は、クライアントデバイス102からコンテンツの要求を受信することができ、コンテンツサーバ110の中から、要求されたコンテンツを提供するためのコンテンツサーバ110を選択することができる。選択は、負荷分散アルゴリズム、(たとえば、コンテンツサーバ110がコンテンツを提供する機会に入札する)オークションアルゴリズムなどによることが可能である。したがって、仲介サーバ108は、交換サーバ(exchange server)、ロードバランサ、オークションプロバイダ、または任意のその他のそのような用語で呼ばれ得る。
システム100は、1つまたは複数のコンテンツサーバ110を含み得る。コンテンツサーバ110は、コンテンツリポジトリを含み得る。コンテンツサーバ110は、仲介サーバ108またはクライアントデバイス102からコンテンツ要求を受信することに応答してコンテンツリポジトリからコンテンツを選択することができる。一部の実装において、クライアントデバイス102からのコンテンツ要求は、以前のデータのやりとりにおいてコンテンツサーバ110によってクライアントデバイス102に提供されたクッキーなどの識別子を含み得る。コンテンツサーバ110は、識別子に基づいてコンテンツリポジトリからコンテンツを選択することができる。たとえば、コンテンツサーバ110は、識別子を、これらに限定されないが、とりわけ、クライアントデバイス102のプリファレンスおよび計算リソース(たとえば、スクリーンサイズおよび解像度)などに関連付け得る。コンテンツサーバ110は、識別子に関連するデータに基づいてデータリポジトリからコンテンツを選択することができる。
システム100は、1つまたは複数のリモートサーバ104を含み得る。リモートサーバ104は、主コンテンツをホストし得る。主コンテンツは、ウェブページ、ソーシャルメディアページ、オーディオコンテンツ、テキストコンテンツ、ビデオコンテンツ、およびその他の形態のデータを含み得る。主コンテンツは、コンテンツスロットを含み得る。コンテンツスロットは、ブラウザによって実行されるときにブラウザにコンテンツスロットを埋めるための仲介サーバ108またはコンテンツサーバ110からのコンテンツを要求させることができるプロセッサが実行可能な命令を含み得る。一部の実装において、リモートサーバ104によってホストされる主コンテンツは、コンテンツサーバ110によって提供される二次的なコンテンツに関連付けられ得る。たとえば、リモートサーバ104によってホストされる主コンテンツは、二次的なコンテンツのためのランディングページとして働き得る。主コンテンツは、二次的なコンテンツが主コンテンツへのリンクを含むとき、二次的なコンテンツのためのランディングページであることが可能である。一部の実装においては、クライアントデバイス102のブラウザが、リモートサーバ104によってホストされるウェブページに自主的にナビゲートすることが可能であり、その他の実装においては、ブラウザが、コンテンツサーバ110によって提供される二次的なコンテンツの一部としてレンダリングされるリンクの作動(たとえば、クリック)によってリモートサーバ104によってホストされるウェブページに導かれることが可能である。
仲介サーバ108、リモートサーバ104、およびコンテンツサーバ110は、デスクトップコンピュータ、サーバ、ワークステーション、ラップトップコンピュータ、ポータブルコンピュータ、組み込みコンピュータ、または任意のその他の種類および形態のコンピューティングデバイスを含む任意の種類および形態のコンピューティングデバイスを含み得る。仲介サーバ108およびコンテンツサーバ110は、1つまたは複数の物理コンピューティングデバイスによって実行される仮想マシンを含むことが可能であり、サーバファーム、クラスタ、またはデバイスのクラウドとして構成されることが可能である。
図2は、データをやりとりするための例示的なコンピューティングデバイスを示すブロック図を示す。図1に関連して上で説明されたように、システム100は、クライアントデバイス102を含み得る。クライアントデバイス102は、リモートサーバ104からコンテンツを受信するためにウェブブラウザなどのアプリケーション208を実行し得る。仲介サーバ108が、コンテンツサーバ110からのコンテンツをクライアントデバイス102に提供することも可能である。
上で検討されたように、クライアントデバイス102は、クライアント、デバイス、クライアントデバイス、コンピューティングデバイス、ユーザデバイス、または任意のその他のそのような用語で呼ばれ得る。クライアントデバイス102は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、ビデオゲームコンソール、スマートテレビもしくはセットトップボックス、サーバ、ワークステーション、またはネットワーク106を介して通信することができる任意のその他の種類および形態のコンピューティングデバイスを含むかまたはその構成要素であることが可能である。一部の実装において、クライアントデバイス102は、ネットワーク106を介して通信するためのアプリケーション208を実行し得る。アプリケーション208は、ネットワーク106を介して通信するためのサービス、サーバ、デーモン、ルーチン、またはその他の実行可能な論理であることが可能である。アプリケーション208は、ウェブブラウザ、メールクライアント、ビデオプレーヤ、音楽プレーヤ、ビデオゲーム、または任意のその他のそのようなアプリケーションであることが可能である。そのようなアプリケーションは、コマンドラインインターフェース、グラフィカルユーザインターフェース、またはこれらのもしくはその他のインターフェースの任意の組合せを含み得る。アプリケーション208は、コンバージョンエンジン212のインスタンスを含み得る。
クライアントデバイス102は、1つまたは複数のプロセッサ200、ネットワークインターフェース202、およびI/Oインターフェース204を含み得る。クライアントデバイス102は、メモリ206を含み得る。メモリ206は、プロセッサ200によって実行されるときにプロセッサ200に本明細書において説明される動作のうちの1つまたは複数を実行させる機械命令を記憶することができる。プロセッサ200は、マイクロプロセッサ、ASIC、FPGAなど、またはこれらの組合せを含み得る。プロセッサ200は、マルチコアプロセッサまたはプロセッサのアレイであることが可能である。メモリ206は、プロセッサ200にプログラム命令を与えることができる電子、光、磁気、または任意のその他のストレージデバイスを含み得るがこれらに限定されない。メモリ206は、フロッピーディスク、CD-ROM、DVD、磁気ディスク、メモリチップ、ROM、RAM、EEPROM、EPROM、フラッシュメモリ、光学式媒体、またはプロセッサ200が命令を読むことができる任意のその他の好適なメモリを含み得る。命令は、C、C++、C#、Java(登録商標)、JavaScript(登録商標)、Perl、HTML、XML、Python、およびVisual Basicなどであるがこれらに限定されない任意の好適なコンピュータプログラミング言語のコードを含み得る。
クライアントデバイス102は、1つまたは複数のネットワークインターフェース202を含み得る。10 Base T、100 Base T、もしくは1000 Base T(「ギガビット」)を含むイーサネット(登録商標)、802.11a、802.11b、802.11g、802.11n、もしくは802.11acなどの802.11ワイヤレスの変種のいずれか、CDMA(登録商標)、LTE、3G、もしくは4Gセルラを含むセルラ、Bluetooth(登録商標)もしくはその他の近距離ワイヤレス接続、またはネットワーク106と通信するためのこれらのもしくはその他のインターフェースの組合せを含む任意の種類および形態のインターフェースを含み得る。クライアントデバイス102は、異なる種類の複数のネットワークインターフェース202を含み、様々なネットワーク106または異なるサブネットワークを介するインターネットなどのネットワーク106への接続を可能にし得る。
クライアントデバイス102は、1つまたは複数のI/Oインターフェース204を含み得る。I/Oインターフェース204は、ハードウェアに基づくかまたはソフトウェアに基づくことが可能である。I/Oインターフェース204は、感覚情報(たとえば、ディスプレイ上の視覚化、1つもしくは複数の音、触覚フィードバックなど)を生成することによってユーザにデータを運び、および/またはユーザから受け取られた感覚情報を電子信号に変換する任意の電子デバイス(たとえば、キーボード、マウス、ポインティングデバイス、タッチスクリーンディスプレイ、マイクロフォンなど)であることが可能である。1つまたは複数のユーザインターフェースデバイスは、様々な実装によれば、内蔵ディスプレイ、タッチスクリーン、マイクロフォンなどのようにクライアントデバイス102のハウジングの内部にあるか、またはクライアントデバイス102に接続されたモニタ、クライアントデバイス102に接続されたスピーカのようにクライアントデバイス102のハウジングの外部にあることが可能である。
クライアントデバイス102は、データおよびプロセッサが実行可能な命令をメモリ206に記憶することができる。たとえば、クライアントデバイス102は、アプリケーション208をプロセッサが実行可能な命令としてメモリ206に記憶することができる。アプリケーション208は、クライアントデバイスのI/Oインターフェース204(たとえば、ディスプレイ、スピーカなど)を介してコンテンツを受信し、コンテンツを表示するかもしくはその他の方法で出力するためのアプリケーション、アプレット、スクリプト、サービス、デーモン、ルーチン、またはその他の実行可能な命令であることが可能である。たとえば、アプリケーション208は、ランディングページ218またはその他のウェブページもしくはコンテンツを受信し、レンダリングするウェブブラウザであることが可能である。アプリケーション208は、ネットワークインターフェース202を介して受信されたおよび/またはプロセッサ200によってローカルで生成されたコンテンツを表示するための機能を含み得る。
クライアントデバイス102は、デバイスID 210を含み得る。クライアントデバイス102は、デバイスID 210を用いて仲介サーバ108、コンテンツサーバ110、またはリモートサーバ104に対してそのクライアントデバイス102自体を特定することができる。デバイスID 210は、英数字文字列、データ列、シリアル番号、媒体アクセス制御(MAC)アドレス、インターネットプロトコル(IP)アドレス、ユーザ名もしくはアカウント名、グローバル一意識別子(GUID)、クッキー、乱数もしくは擬似乱数、または任意のその他の種類および形態の識別子であることが可能であり、これらのまたはその他の識別子の組合せを含み得る。たとえば、デバイスID 210は、クライアントデバイスのユーザエージェントまたはMACアドレスのハッシュであることが可能である。デバイス識別子210は、クライアントデバイス102に対して固定であることが可能である。たとえば、デバイスID 210は、製造業者によってデバイス内に予め構成され得る。たとえば、デバイスID 210は、製造業者のシリアル番号またはMACアドレスであることが可能である。デバイスID 210は、クライアントデバイス102、リモートサーバ104、仲介サーバ108、またはコンテンツサーバ110によって動的に設定され得る。デバイスID 210は、静的であることが可能である。デバイスID 210は、所定のインターフェースにおいて更新され得る。たとえば、一意のまたは新しいデバイス識別子210が、仲介サーバ108との各通信のために設定され得る。デバイスID 210は、周期的に(たとえば、毎時、毎日、毎週など)またはその他の間隔で(たとえば、クライアントデバイスの再起動時、インターネットサービスへのログイン時などに)変更または更新され得る。デバイスID 210は、1つまたは複数のその他のデバイス識別子210(たとえば、モバイルデバイスに関するデバイス識別子、ホームコンピュータに関するデバイス識別子など)に関連付けられ得る。
クライアントデバイス102は、コンバージョンエンジン212を含み得る。コンバージョンエンジン212は、コンテンツアイテムをクライアントデバイス102に登録するためのアプリケーション、アプレット、スクリプト、サービス、デーモン、ルーチン、またはその他の実行可能な論理であることが可能である。コンバージョンエンジン212は、アプリケーション208の構成要素であることが可能であり、またはアプリケーション208と別れていることが可能である。たとえば、コンバージョンエンジン212は、特定のアプリケーション208と別れていることが可能であるスクリプトであることができ、複数のアプリケーション208(たとえば、クライアントデバイスのウェブブラウザおよび電子メールクライアント)からAPIの呼び出しを受信することができる。図3および図4に関連してさらに説明されるように、コンバージョンエンジン212は、コンテンツアイテムがアプリケーション208とインタラクションするためのインターフェースを提供することができる。たとえば、コンバージョンエンジン212は、アプリケーション208のモジュール、サブルーチン、またはアドオンであることが可能である。たとえば、コンバージョンエンジン212は、コンテンツアイテムがアプリケーション208に登録することを可能にするAPIまたはその他のフックを提供し得る。たとえば、コンテンツアイテムは、(プロセッサ200を介して)アプリケーション208によって実行されるときにAPIに呼び出しを行うプロセッサが実行可能な命令を含み得る。呼び出しは、コンテンツアイテムをアプリケーション208に登録するためのものであり得る。呼び出しは、ペイロードを含み得る。ペイロードは、キャンペーンID、ランディングページのURL、および報告URLを含み得る。アプリケーション208に登録されるとき、コンバージョンエンジン212は、ペイロードの内容を登録テーブル214に記憶することができる。たとえば、登録テーブル214は、アプリケーション208に登録されたコンテンツアイテムの各々に関するエントリを含み得るテーブルであることが可能である。テーブルの各エントリは、たとえば、キャンペーンID、ランディングページのURL、報告URL、およびタイムスタンプを記憶し得る。タイムスタンプは、エントリが登録テーブ
ル214に保存された時間を示すことができる。一部の実装において、ペイロードの内容は、登録テーブル214においてランディングページのURLにインデックス付けされ得る。
メモリ206は、集約テーブル216を含み得る。図3および図4に関連してさらに説明されるように、コンバージョンエンジン212は、1つまたは複数の報告ポリシーを含み得る。報告ポリシーは、報告メッセージが報告URLに(たとえば、生成時にもしくはユーザのプライバシーを守るために時間遅延させて)単一のメッセージとして送信されるべきであるのかまたはバッチで送信されるべきであるのかを示し得る。バッチ報告フラグが報告ポリシーに設定されるとき、コンバージョンエンジン212は、報告メッセージをバッチで送信することができる。報告メッセージを生成することに応じて、バッチ送信がアクティブであるとき、コンバージョンエンジン212は、バッチ送信の要件が満たされるまで報告メッセージを集約テーブル216に保存することができる。たとえば、報告ポリシーは、バッチ送信が周期的に(たとえば、12時間毎に)送信されるべきであることを示し得る。コンバージョンエンジン212は、送信時間がトリガされる(たとえば、上記の例においては00:00時または12:00時)まで、生成された報告メッセージを集約テーブル216に保存することができる。そして、コンバージョンエンジン212は、集約テーブル216から報告メッセージを読み、報告メッセージをそれぞれの報告URLに送信することができる。コンバージョンエンジン212は、集約テーブル216から報告された報告メッセージを除去するかまたはその他の方法で削除することができる。一部の実装において、報告ポリシーは、ランディングページ(たとえば、リモートサーバ104)に関して生成され得る。たとえば、リモートサーバ104は、どの報告URLまたはURLが報告メッセージまたはコンバージョンイベントのその他のインジケーションを受信し得るかを指定することができる。
また、図2に示されるように、システム100は、仲介サーバ108を含み得る。クライアントデバイス102と同様に、仲介サーバ108は、1つまたは複数のプロセッサ200、メモリ206、ネットワークインターフェース202、およびI/Oインターフェース204を含み得る。仲介サーバ108は、ネットワーク106を介してクライアントデバイス102、コンテンツサーバ110、またはリモートサーバ104と通信することができる。仲介サーバ108のメモリ206は、仲介サーバ108のプロセッサ200によって実行するために1つまたは複数のアプリケーションを記憶することができる。たとえば、仲介サーバ108は、FTPサーバ、ウェブサーバ、メールサーバ、ファイル共有サーバ、ピアツーピアサーバ、またはコンテンツ、もしくはクライアントがコンテンツサーバ110のコンテンツにアクセスすることを可能にするリダイレクトコマンドを配信するためのその他のそのようなアプリケーションとして仲介サーバ108が機能することを可能にするアプリケーションを含み得る。
仲介サーバ108は、コンテンツプロバイダセレクタ220を含み得る。コンテンツプロバイダセレクタ220は、アプリケーション、サーバ、サービス、デーモン、ルーチン、またはその他の実行可能な論理を含み得る。コンテンツプロバイダセレクタ220は、コンテンツサーバ110のリストからコンテンツサーバ110を選択するように構成され得る。たとえば、コンテンツプロバイダセレクタ220は、ラウンドロビンもしくはその他の負荷分散システムを使用してまたはオークションに基づくシステムによってコンテンツサーバ110のリストからコンテンツサーバ110を選択することができる。コンテンツプロバイダセレクタ220は、コンテンツサーバ110に要求を送信し、クライアントデバイス102にコンテンツを提供する機会への入札などのコンテンツサーバ110からの応答を受信するように構成される可能性がある。コンテンツサーバ110は、クライアントデバイス102がデバイスID 210を生成するかまたは取り出し、コンテンツアイテムの選択のために仲介サーバ108またはコンテンツサーバ110にデバイスID 210を提供することができるように、選択されたコンテンツサーバ110のドメインまたはアドレスなどの識別子を含み得る、クライアントデバイス102の要求に対する応答を生成するように構成され得る。
また、図2に示されるように、システム100は、複数のコンテンツサーバ110を含み得る。コンテンツサーバ110の各々は、ネットワーク106に接続され、直接かまたは仲介サーバ108を介してかのどちらかでクライアントデバイス102にコンテンツアイテム(たとえば、コンテンツ222)を提供するように構成された1つまたは複数のコンピューティングデバイスを含み得る。コンテンツサーバ110によって提供されるコンテンツ222は、たとえば、リモートサーバ104によって提供された主コンテンツのコンテンツスロット内にレンダリングされることが可能であるので二次的なコンテンツと呼ばれ得る。一部の実装において、コンテンツ222は、主コンテンツであることができ、または主コンテンツを含むことができる。コンテンツサーバ110は、コンテンツプロバイダ、サーバ、ウェブサーバ、データサーバ、パブリッシャ、サービスプロバイダ、またはその他の同様の用語で様々に呼ばれ得る。コンテンツサーバ110は、サーバファームまたはクラウドとして構成された複数のコンピューティングデバイスを含むことが可能であり、ルータ、ロードバランサ、ネットワークアドレス変換器、ファイアウォール、またはその他のそのようなデバイスを含む可能性がある。コンテンツサーバ110は、コンピュータサーバ(たとえば、FTPサーバ、ファイル共有サーバ、ウェブサーバなど)またはサーバの組合せ(たとえば、データセンター、クラウドコンピューティングプラットフォームなど)であることが可能である。コンテンツサーバ110は、テキスト、画像、ビデオ、オーディオ、マルチメディア、またはその他のデータ、またはこれらの任意の組合せを含む任意の種類および形態のコンテンツを提供することができる。コンテンツ222は、ライブメディアコンテンツ、収録済みのメディアコンテンツ、レンダリングされたコンテンツ、映画、テレビ番組、ポッドキャスト、ビデオブログ、ビデオゲームもしくはその他のインタラクティブコンテンツ、任意の形式の広告、ソーシャルメディア、または任意のその他の種類および形態のコンテンツを含み得る。
コンテンツサーバ110は、1つまたは複数のプロセッサ200、ネットワークインターフェース202、I/Oインターフェース204、および/またはメモリ206を含み得る。コンテンツサーバ110は、コンテンツセレクタ224を含み得る。コンテンツセレクタ224は、クライアントデバイス102に配信するためのコンテンツ222を選択するためのアプリケーション、サービス、サーバ、デーモン、ルーチン、またはその他の実行可能な論理を含み得る。コンテンツセレクタ224は、識別子データベースに記憶されたクライアントデバイス102についての情報に基づいてクライアントデバイス102に配信するためのコンテンツ222を選択する可能性がある。たとえば、データベースは、デバイスの能力(たとえば、スクリーンの解像度もしくは向き、色深度、帯域幅など)についての情報またはカスタマイズされたコンテンツの選択のための任意のその他のそのような情報を含む可能性がある。情報は、デバイスIDによってデータベース内でインデックス付けされ得る。コンテンツセレクタ224は、クライアントデバイス102から受信されたデバイスID 210に基づいてデータベースから情報を選択することができる。コンテンツ222を選択することに応じて、コンテンツセレクタ224は、コンテンツ222をクライアントデバイス102にプッシュするか、ストリーミングするか、またはそれ以外の方法で転送することができる。コンテンツ222は、オーディオ、ビデオ、アニメーション、テキスト、マルチメディア、静止したもしくは動くグラフィックス、実行可能なスクリプト、または任意のその他の種類および形態のコンテンツを含む任意の種類および形態のデータであることが可能である。コンテンツ222の各アイテムは、タグ、識別子、URL、またはプロセッサが実行可能な命令に関連付けられ得る。たとえば、各コンテンツ222は、アプリケーション208がコンテンツ222をレンダリングし、表示するとき、レンダリングされたコンテンツ222の選択(たとえば、クリック)がアプリケーション208をコンテンツ222によって特定されたURLにリダイレクトすることができるようなプロセッサが実行可能な命令を含み得る。たとえば、コンテンツ222は、第2のウェブページへのウェブリンク(たとえば、URL)を含むものとしてコンテ
ンツ222を特定するHTMLタグを含み得る。URLは、リモートサーバ104によってホストされるランディングページ218に関するURLであることが可能である。コンテンツ222は、報告URLおよびキャンペーンIDを含むかまたはそうでなければ包含し得る。キャンペーンIDは、コンテンツ222のクラス、グループ、対象、種類、またはその他の特徴をコンテンツサーバ110に対して特定し得る。報告URLは、コンテンツ222がクライアントデバイス102のアプリケーション208によってレンダリングされるときにpingされるネットワーク接続されたサーバのURLであることが可能である。報告URLは、仲介サーバ108、コンテンツサーバ110、またはその他のネットワーク接続されたサーバのURLであることが可能である。
また、図2に示されるように、システム100は、1つまたは複数のリモートサーバ104を含み得る。リモートサーバ104は、1つまたは複数のプロセッサ200、ネットワークインターフェース202、および/またはI/Oインターフェース204を含み得る。リモートサーバ104のメモリ206は、リモートサーバ104のプロセッサ200によって実行するために1つまたは複数のアプリケーションを記憶することができる。たとえば、リモートサーバ104は、リモートサーバ104がFTPサーバ、ウェブサーバ、メールサーバ、ファイル共有サーバ、ピアツーピアサーバとして機能することを可能にするアプリケーション、またはクライアントデバイス102にコンテンツを配信するためのその他のそのようなアプリケーションを含み得る。たとえば、リモートサーバ104は、メモリ206に記憶された1つまたは複数のランディングページ218を含み得る。ランディングページ218は、ウェブページ、あるいはオーディオ、ビデオ、アニメーション、テキスト、マルチメディア、静止したもしくは動くグラフィックス、実行可能なスクリプト、または任意のその他の種類および形態のコンテンツなどであるがこれらに限定されないその他の種類のコンテンツであることが可能である。各ランディングページ218は、URLによって特定され得る。ランディングページ218を取り出すかまたはランディングページ218にアクセスするために、URLが、クライアントデバイス102のアプリケーション208に入力され得る。クライアントデバイス102は、リモートサーバ104への、URLにあるランディングページ218(またはその他の形態のコンテンツ)の要求を生成することができる。ランディングページ218は、コンテンツ222のリダイレクト先として働き得る。たとえば、コンテンツ222がウェブブラウザによってレンダリングされるとき、コンテンツ222は、コンテンツ222がユーザによって作動させられる(たとえば、クリックされるかまたは選択される)ときにアプリケーション208がランディングページ218にリダイレクトされ得るようなランディングページ218へのハイパーリンクを含むことができる。一部の実装において、クライアントデバイス102のユーザは、自然にランディングページ218にナビゲートし得る。たとえば、ユーザは、レンダリングされたコンテンツ222の作動によってランディングページ218にリダイレクトされるのではなく、ウェブブラウザのナビゲーションバーにランディングページのURLを入力するかまたはオンライン検索によってランディングページ218を見つけ得る。
図3は、ネットワークおよびデバイス環境においてデータのやりとりを許可するフロー図300を示す。図1および図2も参照すると、ステップ302において、クライアントデバイス102が、第1のリモートサーバ104(1)からコンテンツをフェッチし得る。たとえば、リモートサーバ104(1)は、1つまたは複数のウェブサイトまたはその他の主コンテンツをホストし得る。ユーザは、リモートサーバ104(1)によってホストされるウェブサイトを指すURLを入力するかまたは選択し得る。クライアントデバイス102のアプリケーション208(たとえば、ウェブブラウザ)が、URLによって特定されたコンテンツ(たとえば、ウェブサイト)の要求を生成し得る。クライアントデバイス102は、HTTP要求またはRESTful要求によるなど、任意の好適なプロトコルによってリモートサーバ104(1)に要求を送信し得る。要求は、デバイス識別子、アカウント識別子、ユーザ識別子、セッション識別子、もしくはその他のそのような識別子、またはリモートサーバ104(1)によって生成され、クライアントデバイスに記憶されたクッキーを含み得る。たとえば、リモートサーバ104(1)は、(たとえば、認証手順またはその他のそのようなイベント中に)クライアントデバイス102にクッキーを既に提供した可能性があり、クライアントデバイス102は、その後の要求で同じクッキーを提供する可能性がある。
ステップ304において、リモートサーバ104(1)が、コンテンツを返し得る。要求は、要求に含まれるURLで特定されるウェブページまたはその他の種類のコンテンツであることが可能である。返されるコンテンツは、1つまたは複数のコンテンツスロットを含み得る。コンテンツスロットは、仲介サーバ108を介したコンテンツサーバ110からのコンテンツ222によって埋められ得る。コンテンツスロットは、アプリケーション208がリモートサーバ104(1)からのコンテンツを少なくとも部分的にレンダリングすること(またはそうでなければその命令を実行すること)に応じてコンテンツスロットを埋めるためのコンテンツの、仲介サーバ108またはコンテンツサーバ110への要求をアプリケーション208に生成させることができるプロセッサが実行可能な命令を含み得る。
ステップ306において、クライアントデバイス102が、リモートサーバ104(1)からのコンテンツをレンダリングし得る。上述のように、一例において、コンテンツは、リモートサーバ104(1)によってホストされるウェブページであることが可能である。コンテンツは、アプリケーション208に仲介サーバ108などのさらなるネットワークリソースからのさらなるコンテンツを要求させることができるプロセッサが実行可能な命令を含み得る。たとえば、ウェブページは、仲介サーバ108からのコンテンツを要求するためのプロセッサが実行可能な命令を含む二次的なコンテンツスロットを含み得る。
ステップ308において、クライアントデバイス102が、仲介サーバ108からコンテンツをフェッチし得る。二次的なコンテンツスロットをレンダリングすることは、二次的なコンテンツスロットを埋める(またはその中でレンダリングする)ためのコンテンツの、仲介サーバ108への要求をアプリケーション208に生成させることができる。クライアントデバイス102は、HTTP要求またはRESTful要求によるなど、任意の好適なプロトコルによってリモートサーバ104(1)に要求を送信し得る。要求は、デバイス識別子、アカウント識別子、ユーザ識別子、セッション識別子、もしくはその他のそのような識別子、またはクライアントデバイスによって生成されたかもしくは提供されたクッキーを含み得る。たとえば、リモートサーバ104(1)は、(たとえば、認証手順またはその他のそのようなイベント中に)クライアントデバイス102にクッキーを既に提供した可能性があり、クライアントデバイス102は、その後の要求で同じクッキーを提供する可能性がある。
ステップ310において、仲介サーバ108が、クライアントデバイス102にコンテンツを返し得る。一部の実装において、仲介サーバ108は、ステップ308のコンテンツの要求をコンテンツサーバ110に転送することができる。仲介サーバ108は、コンテンツサーバ110のリストからコンテンツを提供するコンテンツサーバ110を選択することができる。たとえば、仲介サーバ108は、ラウンドロビンもしくはその他の負荷分散システムを使用してまたはオークションに基づくシステムによってコンテンツサーバ110のリストからコンテンツサーバ110を選択することができる。コンテンツサーバ110は、要求に応答して返すコンテンツアイテムを選択することができ、クライアントデバイス102に直接または仲介サーバ108を介してクライアントデバイス102にコンテンツアイテムを送信することができる。たとえば、コンテンツサーバ110は、コンテンツアイテムを仲介サーバ108に送信することができ、仲介サーバ108は、ステップ310においてクライアントデバイス102にコンテンツアイテムを送信することができる。
ステップ312において、クライアントデバイス102が、コンテンツをレンダリングし得る。クライアントデバイス102は、ステップ304において返されたコンテンツのレンダリングの一部としてコンテンツをレンダリングし得る。たとえば、ステップ310において返されたコンテンツは、コンテンツの要求の生成を引き起こしたコンテンツスロット内にレンダリングされ得る。ステップ314において、コンテンツアイテムが、クライアントデバイス102に登録され得る。(ステップ312において)コンテンツアイテムをレンダリングすることは、コンテンツアイテムをクライアントデバイス102に登録させ得る。たとえば、コンテンツアイテムは、ペイロード(たとえば、不可視のデータ)およびプロセッサが実行可能な命令を含み得る。ペイロードは、たとえば、ランディングページのURL、1つまたは複数の識別子、および報告URLを含み得る。コンテンツアイテムは、コンテンツアイテムがアプリケーション208に登録するようにさせることができるプロセッサが実行可能な命令も含み得る。たとえば、コンテンツアイテムは、たとえば、クライアントデバイス102のコンバージョンエンジン212によってコンテンツアイテムに公開されたJavaScript(登録商標) APIへの呼び出しを含み得る。別の例において、コンテンツアイテムは、1つまたは複数の属性またはプロセッサが実行可能な命令を含むことができるタグを含み得る。APIへの呼び出しは、コンテンツアイテムのペイロードを含み得る。たとえば、APIへの呼び出しは、ランディングページのURL、1つまたは複数の識別子、および報告URLを含み得る。コンバージョンエンジン212は、API呼び出しからのデータを登録テーブル214に記憶することができる。ステップ302~314は、複数の回繰り返され得る。たとえば、リモートサーバ104(1)からクライアントデバイス102に提供されるコンテンツは、複数のコンテンツアイテムが仲介サーバ108から返される複数のコンテンツスロットを含み得る。一部の実装において、コンテンツアイテムの各々は、コンバージョンエンジン212を介して登録テーブル214に登録され得る。ステップ302~314は、複数の異なる第1のリモートサーバ104(1)に関して複数の回繰り返され得る。たとえば、ユーザは、そ
れぞれがコンテンツスロットを含み得る複数の異なるウェブページにナビゲートし得る。異なるウェブページの各々に関するコンテンツスロットを埋めるために返されたコンテンツアイテムは、クライアントデバイス102がウェブページにナビゲートするときに登録テーブル214に登録され得る。
ステップ316において、クライアントデバイス102が、第2のリモートサーバ104(2)からコンテンツをフェッチし得る。ステップ316におけるコンテンツの要求は、1つまたは複数のコンテンツアイテムが登録テーブル214に登録された後に行われ得る。第2のリモートサーバ104(2)は、第1のリモートサーバ104(1)と同様に、1つまたは複数のウェブページをホストし得る。一部の実装において、ウェブページのうちの1つまたは複数は、登録テーブル214に登録されたコンテンツアイテムのうちの1つのためのランディングページであることが可能である。ウェブページは、コンテンツアイテムがウェブブラウザをウェブページに導くURLを含むとき、コンテンツアイテムのためのランディングページであることが可能である。ステップ316において、クライアントデバイス102が、HTTP要求またはRESTful要求によるなど、任意の好適なプロトコルによってリモートサーバ104(2)に要求を送信し得る。
ステップ318において、リモートサーバ104(2)が、要求されたコンテンツを返し得る。リモートサーバ104(2)は、HTTP、HTTPS、またはその他のプロトコルによってクライアントデバイス102にコンテンツを送信し得る。リモートサーバ104(2)からコンテンツを受信することに応じて、クライアントデバイス102は、たとえば、ウェブブラウザによってコンテンツをレンダリングし得る。コンテンツをレンダリングすることは、ウェブブラウザのユーザに対してコンテンツを表示し得る。
ステップ320において、コンバージョンエンジン212が、URLを登録テーブル214内のURLとマッチングし得る。リモートサーバ104(2)から返されたコンテンツをレンダリングすることに応じて、コンバージョンエンジン212は、返されたコンテンツに関するURLが登録テーブル214に登録されているかどうかを判定し得る。一部の実装において、登録テーブル214内のデータは、URLによってインデックス付けされ得る。これらの例において、コンバージョンエンジン212は、リモートサーバ104(2)から返されたコンテンツのURLをキーとして使用し得る。コンバージョンエンジン212は、任意のデータ(たとえば、コンテンツアイテム識別子または報告URL)が登録テーブル214内のURLに関連付けられるかどうかを判定し得る。
ステップ320において、コンバージョンエンジン212が一致を発見する場合、ステップ322において、コンバージョンエンジン212は、報告メッセージを送信し得る。コンバージョンエンジン212は、登録テーブル214内で一致したURLにインデックス付けされた報告URLに報告メッセージを送信し得る。一部の実装において、報告URLは、(図3に示されるように)仲介サーバ108に関するまたは関連付けられるURLであることが可能である。一部の実装において、報告URLは、報告メッセージを受信し、仲介サーバ108などの最終的な送信先に転送するプロキシデバイスに関するものであることが可能である。プロキシは、報告メッセージから特定可能なデータ削除するために報告メッセージを処理することができる。たとえば、プロキシは、報告メッセージから報告メッセージの送信元IPアドレスを削除し得る。一部の実装において、報告URLは、リモートサーバ104に関連するURLであることが可能である。報告メッセージは、報告URLへのpingbackメッセージであることが可能である。報告URLにおけるサーバによる報告メッセージの受信は、クライアントデバイスがコンテンツアイテムをレンダリングし、表示したこと、およびクライアントデバイスがコンテンツアイテムのランディングページにその後自主的にナビゲートしたことをサーバに示し得る。
図4は、ネットワークおよびデバイス環境においてデータのやりとりを許可する例示的な方法400を示す。方法400は、方法400においてクライアントデバイス102、リモートサーバ104、および仲介サーバ108によって実行されるステップを示し得る。図1および図2も参照すると、ステップ402において、クライアントデバイス102が、仲介サーバ108からのコンテンツを要求し得る。クライアントデバイス102は、たとえば、ウェブページのコンテンツスロットをレンダリングすることに応じて仲介サーバ108へのコンテンツの要求を生成し得る。たとえば、ウェブページのコンテンツスロットは、ウェブブラウザに仲介サーバ108への要求を生成させることができるプロセッサが実行可能な命令を含み得る。クライアントデバイス102は、HTTP要求またはRESTful要求によるなど、任意の好適なプロトコルによってリモートサーバ104(1)に要求を送信し得る。要求は、デバイス識別子、アカウント識別子、ユーザ識別子、セッション識別子、もしくはその他のそのような識別子、またはクライアントデバイスによって生成されたかもしくはクライアントデバイス102に提供されたクッキーを含み得る。たとえば、リモートサーバ104(1)は、(たとえば、認証手順またはその他のそのようなイベント中に)クライアントデバイス102にクッキーを既に提供した可能性があり、クライアントデバイス102は、その後の要求で同じクッキーを提供する可能性がある。
ステップ404において、要求に応答して、仲介サーバ108が、コンテンツを選択し得る。一部の実装において、仲介サーバ108は、コンテンツを選択するかまたは提供することができるコンテンツサーバ110を選択し得る。たとえば、仲介サーバ108は、ラウンドロビンもしくはその他の負荷分散システムを使用してまたはオークションに基づくシステムによってコンテンツサーバ110のリストからコンテンツサーバ110を選択することができる。コンテンツサーバ110は、要求に応答して返すコンテンツアイテムを選択することができ、クライアントデバイス102に直接または仲介サーバ108を介してクライアントデバイス102にコンテンツアイテムを送信することができる。たとえば、コンテンツサーバ110は、コンテンツアイテムを仲介サーバ108に送信することができ、仲介サーバ108は、クライアントデバイス102にコンテンツアイテムを送信することができる。ステップ406において、仲介サーバ108が、ステップ402の要求に対する応答としてコンテンツをクライアントデバイス102に送信し得る。
ステップ408において、コンテンツアイテムが、クライアントデバイス102に登録され得る。コンテンツは、ペイロード(たとえば、不可視のデータ)およびプロセッサが実行可能な命令を含み得る。コンテンツのレンダリング中のプロセッサが実行可能な命令の実行は、コンバージョンエンジン212によって提供されるAPIへの呼び出しを生成し得る。API呼び出しによって、コンテンツアイテムは、コンテンツアイテムをクライアントデバイス102に登録するためにコンバージョンエンジン212にペイロードを渡すことができる。ペイロードは、たとえば、ランディングページのURL、キャンペーンID、1つまたは複数の識別子、および報告URLを含み得る。キャンペーンIDは、仲介サーバ108またはコンテンツサーバ110に対してコンテンツアイテムを特定することができる。同じ種類の、同じ第三者からの、またはそれ以外の点で関連付けられるコンテンツアイテムは、同じキャンペーンIDを含み得る。
一部の実装において、コンバージョンエンジン212は、1つまたは複数の登録ポリシーを含み得る。コンバージョンエンジン212は、コンテンツをクライアントデバイス102に登録する前に登録ポリシーが満たされるかどうかを判定し得る。登録ポリシーは、クライアントデバイス102のユーザによって設定または制御され得る。たとえば、ユーザは、どのコンテンツ(またはその種類)がコンバージョンエンジン212によって登録され得るのかを示すホワイトリストまたはブラックリストを生成することができる。ホワイトリストおよびブラックリストは、URLによってコンテンツのプロバイダ(たとえば、仲介サーバ108、リモートサーバ104、またはコンテンツサーバ110)を示すことができる。ホワイトリストおよびブラックリストは、登録され得るコンテンツの種類を示すことができる。たとえば、ユーザは、(プロバイダと無関係な)ビデオコンテンツがコンバージョンエンジン212に登録し得ないようにビデオコンテンツをブラックリストに載せる可能性がある。登録ポリシーは、コンテンツが登録され得る前に満たされなければならない1つまたは複数の要件を含み得る。たとえば、一部の実装において、コンバージョンエンジン212は、コンテンツが時間の所定の長さの間ユーザに対して表示される場合にのみコンテンツを登録する可能性がある。コンバージョンエンジン212は、コンテンツアイテムがレンダリングされ、ユーザに対して表示されるときに作動する(たとえば、開始する)タイマースクリプトを生成または実行することができる。コンバージョンエンジン212は、コンテンツアイテムを含むウィンドウが閉じられるか、ユーザが異なるウェブページにナビゲートするか、またはコンテンツがそれ以外の方法でもはやユーザが利用不可能であるかもしくはユーザに表示されないとき、終了し得る。ユーザは、時間閾値(たとえば、10秒、30秒、1分)を設定し得る。コンバージョンエンジン212は、コンテンツが表示される時間の長さが時間閾値を超える場合にのみコンテンツアイテムを登録する可能性がある。登録ポリシーは、登録のための表示頻度を設定し得る。表示頻度は、コンテンツアイテムがコンバージョンエンジン212に登録され得る前にコンテンツアイテムが表示されなければならない期間当たりの回数であることが可能である。期
間は、1日、1週間、1ヶ月、または3ヶ月であることが可能である。たとえば、登録ポリシーは、コンテンツアイテムが登録され得る前にコンテンツアイテムが1ヶ月以内に少なくとも2回表示される必要があることを示し得る。これらの実装において、コンバージョンエンジン212は、コンテンツアイテムを登録テーブル214に候補コンテンツアイテムとして登録し得る。コンバージョンエンジン212は、所定の閾値以内の表示頻度を満たさない候補コンテンツアイテムを登録テーブル214から周期的に除去する(たとえば、削除する)ことができる。たとえば、コンバージョンエンジン212は、候補コンテンツアイテムを毎時、毎日、毎週、または毎月除去し、登録ポリシーによって示される表示頻度未満の表示頻度を有する候補コンテンツアイテムを除去し得る。登録テーブル214内のコンテンツアイテムは、コンテンツアイテムが表示頻度を超える回数表示され、コンバージョンエンジン212が登録テーブル214内のコンテンツアイテムのエントリから候補タグを削除するまで、到着するURLとのマッチングに利用され得ない可能性がある。一部の実装において、ユーザは、登録テーブル214を除去するか、リセットするか、またはそうでなければ削除することを選択し得る。たとえば、コンバージョンエンジン212は、1日、1週間、1ヶ月、または3ヶ月よりも古い登録テーブル214内のエントリを自動的に削除し得る。一部の実装において、ユーザは、コンテンツアイテムが登録テーブル214に入力され得ないようにコンバージョンエンジン212を非アクティブ化し得る。
登録ポリシーは、可視性の要件を含み得る。一部の実装において、仲介サーバ108からのコンテンツは、レンダリングされるときにユーザに対して視覚的に現れない可能性がある。たとえば、コンテンツは、クライアントデバイス102に第三者への要求を生成させるプロセッサが実行可能な命令のみを含む可能性があり、コンテンツは、レンダリングされ、ユーザに対して表示されるテキスト、画像、オーディオ、またはその他のデータを含まない可能性がある。別の例において、コンテンツは、表示されるときに比較的小さな寸法のサイズでレンダリングされるかまたはそうでなければユーザから隠される可能性がある。たとえば、コンテンツは、1ピクセルのみでレンダリングされる可能性がある。登録ポリシーの可視性の要件は、コンテンツが登録されるための、レンダリングされるときのコンテンツの必要とされるサイズを示し得る。たとえば、可視性の要件は、コンバージョンエンジン212がコンテンツの登録を許可するために、レンダリングされるコンテンツが少なくとも5ピクセル×5ピクセルでなければならないことを示し得る。この例において、レンダリングされるコンテンツが5ピクセル×5ピクセル未満である場合、コンバージョンエンジン212は、コンテンツアイテムを登録しないと決定し得る。
ステップ410において、クライアントデバイス102が、コンテンツの要求を生成し得る。ステップ410は、この例においては、登録テーブル214が1つまたは複数のエントリを投入されると行われ得る。リモートサーバ104は、1つまたは複数のウェブページをホストし得る。一部の実装において、ウェブページのうちの1つまたは複数は、登録テーブル214に登録されたコンテンツアイテムのうちの1つのためのランディングページであることが可能である。ウェブページは、コンテンツアイテムがウェブブラウザをウェブページに導くURLを含むとき、コンテンツアイテムのためのランディングページであることが可能である。クライアントデバイス102は、HTTP要求またはRESTful要求によるなど、任意の好適なプロトコルによってリモートサーバ104に要求を送信し得る。ステップ412において、リモートサーバ104が、要求内で特定されたコンテンツを選択し得る。たとえば、要求は、URLを含むことができ、リモートサーバ104は、URLに置かれたウェブページをフェッチすることができる。ステップ414において、リモートサーバ104が、クライアントデバイス102にコンテンツを送信し得る。
ステップ416において、クライアントデバイス102が、リモートサーバ104からのコンテンツをレンダリングし得る。リモートサーバ104からのコンテンツは、ウェブページであることが可能である。一部の実装において、コンバージョンエンジン212は、アプリケーション208(たとえば、ウェブブラウザ)がリモートサーバ104からのウェブページのレンダリングを開始するときにJavaScript(登録商標)の(またはその他のプロセッサが実行可能な)タイマーを実行し得る。コンバージョンエンジン212は、クライアントデバイス102のウェブブラウザが別のウェブページにナビゲートするかまたはウェブページを表示するウィンドウを閉じるまでタイマーを実行し得る。ウェブページは、URLに関連付けられ得る。コンバージョンエンジン212は、URLを決定するかまたはウェブブラウザから受信することができる。たとえば、コンバージョンエンジン212は、ウェブブラウザの一番前のまたはアクティブなウィンドウのロケーションバー内のURLに関してウェブブラウザに呼び出しを行い得る。
ステップ418において、コンバージョンエンジン212が、コンテンツが登録されているかどうかを判定し得る。たとえば、コンバージョンエンジン212は、リモートサーバ104から返されたウェブページが登録テーブル214に登録されているかまたは登録テーブル214のエントリに関連付けられているかどうかを判定し得る。たとえば、上述のように、コンバージョンエンジン212は、登録テーブル214にコンテンツアイテムを登録することができる。コンテンツアイテムは、登録テーブル214のエントリとして含まれるペイロードを含み得る。登録テーブル214内のコンテンツアイテムに関するエントリは、ランディングページのURL、1つもしくは複数の識別子、またはその他のデータを含み得る。登録テーブル214は、ランディングページのURLによってインデックス付けされ得る。コンバージョンエンジン212は、ステップ412および414においてリモートサーバ104によって提供されたウェブページのURLに関して登録テーブル214を検索し得る。コンバージョンエンジン212は、URLを登録テーブル214への入力キーとして使用して登録テーブル214の探索または検索を実行することによってウェブページのURLが登録テーブル214に保存されたランディングページのURLのうちの1つと一致するかどうかを判定する。コンバージョンエンジン212が登録テーブル214内でウェブページのURLを発見する場合、クライアントデバイス102は、(ステップ412および414におけるリモートサーバ104からの)ウェブページがコンテンツアイテムのためのランディングページであったことを示した仲介サーバ108またはコンテンツサーバ110からのコンテンツアイテムを以前受信した。コンバージョンエンジン212がURLとの一致を発見しない場合、ウェブページは、以前受信されたコンテンツアイテムのためのランディングページとして働いておらず、方法400は、ステップ420において終了し得る。コンテンツが登録されている場合、方法400は、ステップ422に続き得る。
ステップ422において、コンバージョンエンジン212が、報告が許可されるかどうかを判定し得る。コンバージョンエンジン212は、報告が許可されるかどうかを判定するために報告ポリシーを参照することができる。報告ポリシーは、コンテンツのレンダリングが報告され得るかどうかに関する規則を含むことができる。たとえば、報告ポリシーは、表示時間の要件を含み得る。表示時間の要件は、秒、分、または時間で表された時間の長さであることが可能である。表示時間の要件は、ユーザまたは仲介サーバ108によって設定され得る。表示時間の要件は、コンバージョンエンジン212がコンテンツに関する報告メッセージを生成する前に、リモートサーバのコンテンツがステップ416においてレンダリングされ後表示されなければならない時間の長さを示し得る。たとえば、上述のように、コンバージョンエンジン212は、コンテンツがユーザに対してレンダリングされるときにタイマーをセットすることができる。コンテンツを含むウィンドウを閉じることに応じて、コンバージョンエンジン212は、タイマーによって決定された時間を表示時間の要件と比較することができる。表示された時間が表示時間の要件未満である場合、コンバージョンエンジン212は、報告が許可されないと判定し得る。表示された時間が表示時間の要件を超えている場合、コンバージョンエンジン212は、報告が許可されると判定し得る。報告ポリシーは、登録ポリシーのホワイトリストおよびブラックリストと同様のホワイトリストおよびブラックリストを含み得る。クライアントデバイス102のユーザまたは仲介サーバ108が、報告が許可されるリモートサーバ104のリスト(ホワイトリスト)または報告が許可されないリモートサーバ104のリスト(ブラックリスト)を作成することができる。ステップ422においてコンバージョンエンジン212が報告が許可されないと判定する場合、方法400は、ステップ420において終了し得る。ステップ422においてコンバージョンエンジン212が報告が許可されると判定する場合、方法400は、ステップ424に続き得る。
ステップ424において、コンバージョンエンジン212が、報告メッセージを生成し得る。上述のように、ステップ418において、コンバージョンエンジン212は、コンテンツが登録テーブル214に登録されていると判定し得る。コンバージョンエンジン212は、たとえば、登録テーブル214の探索を実行するためのキーとしてコンテンツのURLを使用することによって登録テーブル214からコンテンツに関連するエントリを取り出すことができる。コンテンツのエントリは、1つまたは複数の識別子(たとえば、キャンペーンID)および1つまたは複数のURL(たとえば、報告URL)を含み得る上述のペイロードを含むことができる。報告メッセージは、pingback応答であることが可能である。pingback応答は、XMLの遠隔手続き呼び出し(remote procedural call)であることが可能である。応答は、HTTPまたはHTTPS上で送信先に送信されることが可能であり、応答のペイロードは、XMLによって符号化されることが可能である。報告メッセージの送信先は、登録テーブル214から取り出された報告URLであることが可能である。応答のペイロードは、1つまたは複数の識別子を含み得る。識別子は、デバイスID 210、キャンペーンID、もしくはこれらの組合せであることが可能であり、またはデバイスID 210、キャンペーンID、もしくはこれらの組合せを含むことが可能である。たとえば、コンバージョンエンジン212は、デバイスID 210の最上位ビットをキャンペーンIDと連結し得る。応答のペイロードの一部またはすべては、暗号化されるかまたはハッシュされることが可能である。たとえば、コンバージョンエンジン212は、ブラウザ、アプリケーション、デバイス、もしくはセッションに固有の識別子、デバイスの種類もしくはシリアル番号、クロックスキュー時間、ハードウェア識別子、または任意のその他のそのようなデータからの入力をハッシュすることによって応答の一部を生成し得る。一部の実装において、報告ポリシーは、応答のペイロードの内容に関する(たとえば、ビット数または文字数で表される)サイズの制限を設定し得る。たとえば、報告ポリシーは、報告メッセージのペイロードがキャンペーンIDのサイズおよび内容に制限されることを示し得る。この例において、応答のペイロードは、見られたコンテンツについての情報を含み得るが、コンテンツをレンダリングするかまたはそうでなければ受信したクライアントデバイス102についての情報は含み得ない。
ステップ426において、コンバージョンエンジン212が、報告メッセージがバッチ送信のために保持されるべきであるかどうかを判定し得る。報告ポリシーは、バッチ送信フラグまたはビットを含み得る。設定されているとき、コンバージョンエンジン212は、バッチ送信のために報告メッセージを保持し得る。ステップ426においてコンバージョンエンジン212がバッチ送信フラグが設定されていると判定する場合、方法400は、ステップ428の保持フェーズに進み得る。ステップ428において、コンバージョンエンジン212が、報告メッセージを集約テーブル216に書き込むかまたは保存し得る。コンバージョンエンジン212は、報告メッセージを、いつ報告メッセージが生成されたかまたは集約テーブル216に保存されたかを示すタイムスタンプとともに集約テーブル216に保存することができる。一部の実装において、報告ポリシーは、バッチの要件を含み得る。コンバージョンエンジン212がバッチの要件が満たされたと判定するとき、コンバージョンエンジン212は、集約テーブル216に記憶された報告メッセージを、それらの報告メッセージのそれぞれの報告URLによって示されるようにそれらの報告メッセージのそれぞれの送信先に送信することができる。バッチの要件は、量に基づくかまたは時間に基づくことが可能である。量に基づくバッチの要件は、バッチ送信に含まれることを必要とされる報告メッセージの数を設定し得る。たとえば、コンバージョンエンジン212は、10個、50個、または100個の報告メッセージが集約テーブル216にまとめられる(たとえば、保存される)ときに報告メッセージを送信し得る。時間に基づくバッチの要件は、集約テーブル216に保存された報告メッセージが送信される間隔(たとえば、時間、日、週、または月)を設定し得る。
ステップ430において、コンバージョンエンジン212が、バッチの一部として応答を送信し得る。たとえば、ステップ430において、コンバージョンエンジン212が、バッチの要件が満たされると判定することが可能であり、コンバージョンエンジン212が、集約テーブル216から報告メッセージの各々を取り出すことが可能である。コンバージョンエンジン212は、報告メッセージの各々をそれらの報告メッセージのそれぞれの送信先に送信し得る。ステップ426においてコンバージョンエンジン212がバッチ送信フラグが設定されていないと判定する場合、方法400は、ステップ434に進むことができ、コンバージョンエンジン212が、報告メッセージを送信することができる。
ステップ432および436において、仲介サーバ108が、応答を記録し得る。報告メッセージは仲介サーバ108に送信されるものとして図4に示されるが、報告メッセージは、任意のサーバ(たとえば、リモートサーバ104、コンテンツサーバ110、またはプロキシサーバ)に送信され得る。同様に、コンバージョンエンジン212は、異なる送信先に(ステップ430において)バッチ送信で報告メッセージの各々を送信し得る。たとえば、コンバージョンエンジン212は、報告メッセージの第1の部分を第1の仲介サーバ108に送信し、報告メッセージの第2の部分を第2の仲介サーバ108に送信し、報告メッセージの第3の部分をリモートサーバ104に送信し得る。仲介サーバ108またはより広く報告メッセージの受信者は、報告メッセージが受信されたことを記録し得る。仲介サーバ108は、報告メッセージのインジケーションをコンバージョンテーブルに保存し得る。仲介サーバ108は、報告メッセージの内容をコンバージョンテーブルに保存し得る。たとえば、仲介サーバ108は、報告メッセージのキャンペーンIDをコンバージョンテーブルに保存し得る。周期的に、仲介サーバ108は、たとえば、どれだけ頻繁に所与のコンテンツサーバ110からのコンテンツアイテムが見られ、そして、クライアントデバイスがその後自主的にコンテンツアイテムのランディングページにナビゲートしたのかを判定するためにコンバージョンテーブルを分析することができる。
したがって、本開示の少なくとも1つの態様によれば、ネットワーク化された環境においてデータ送信を許可するための方法が、ウェブブラウザによって表示されたコンテンツアイテムからの登録要求を、クライアントデバイスによって実行されるウェブブラウザによって受信することを含み得る。登録要求は、第1のURLおよび第2のURLを含み得る。方法は、第1のURL、第2のURL、およびタイムスタンプを、クライアントデバイスに記憶された登録テーブルに、クライアントデバイスによって実行されるウェブブラウザによって記憶することを含み得る。方法は、ウェブブラウザによって表示されたウェブページの第3のURLを、クライアントデバイスによって実行されるウェブブラウザによって特定することを含み得る。方法は、第3のURLが登録テーブルに記憶された第1のURLと一致し、ウェブページの表示時間がタイムスタンプの所定の継続時間以内であることを、クライアントデバイスによって実行されるウェブブラウザによって判定することを含み得る。方法は、第2のURLへの応答を、クライアントデバイスによって実行されるウェブブラウザによって送信することを含み得る。
一部の実装において、方法は、第2のURLへの応答をウェブブラウザによって生成することを含み得る。方法は、第2のURLへの応答を集約テーブルにウェブブラウザによって記憶することを含み得る。方法は、バッチの要件が満たされるとウェブブラウザによって判定することを含み得る。方法は、第2のURLへの応答を複数の応答を含むバッチ送信としてウェブブラウザによって送信することを含み得る。
一部の実装において、方法は、ウェブページがウェブブラウザによって表示される時間の継続時間をウェブブラウザによって判定することを含み得る。方法は、ウェブページがウェブブラウザによって表示される時間の継続時間が所定の閾値を上回ることに応じて第2のURLへの応答をウェブブラウザによって送信することを含み得る。
一部の実装において、方法は、コンテンツアイテムがウェブブラウザによって表示される時間の継続時間をウェブブラウザによって判定することを含み得る。方法は、コンテンツアイテムがウェブブラウザによって表示される時間の継続時間が所定の閾値を上回ることに応じて第1のURL、第2のURL、およびタイムスタンプをウェブブラウザによって記憶することを含み得る。
一部の実装において、方法は、第1のURLおよび第2のURLが時間の所定の長さ未満の間ウェブブラウザに記憶されたことを、クライアントデバイスによって実行されるウェブブラウザによって判定することを含み得る。方法は、時間の所定の長さの後、クライアントデバイスに記憶されたコンバージョンテーブルから第1のURLおよび第2のURLをウェブブラウザによって削除することを含み得る。登録要求は、データペイロードを有するアプリケーションプログラミングインターフェース(API)呼び出しを含む。方法は、それに応答して第2のURLにデータペイロードの少なくとも一部を送信することを含み得る。方法は、第2のURLへの応答に関するペイロードの制限を設定することを含み得る。方法は、プロキシサーバを介して第2のURLへの応答を送信することを含み得る。
本開示の少なくとも1つの態様によれば、ネットワーク化された環境においてデータ送信を許可するためのシステムが、クライアントデバイスによって実行されるウェブブラウザを含み得る。ウェブブラウザは、ウェブブラウザによって表示されたコンテンツアイテムから登録要求を受信するためにコンバージョンエンジンを実行し得る。登録要求は、第1のURLおよび第2のURLを含み得る。コンバージョンエンジンは、第1のURL、第2のURL、およびタイムスタンプをクライアントデバイスに記憶された登録テーブルに記憶し得る。コンバージョンエンジンは、ウェブブラウザによって表示されたウェブページの第3のURLを特定し得る。コンバージョンエンジンは、第3のURLが登録テーブルに記憶された第1のURLと一致し、ウェブページの表示時間がタイムスタンプの所定の継続時間以内であることを判定し得る。コンバージョンエンジンは、第2のURLへの応答を送信し得る。
一部の実装において、ウェブブラウザは、第2のURLへの応答を生成し得る。ウェブブラウザは、第2のURLへの応答を集約テーブルに記憶し得る。ウェブブラウザは、バッチの要件が満たされると判定し、第2のURLへの応答を複数の応答を含むバッチ送信として送信し得る。
一部の実装において、ウェブブラウザは、ウェブページがウェブブラウザによって表示される時間の継続時間を判定し得る。ウェブブラウザは、ウェブページがウェブブラウザによって表示される時間の継続時間が所定の閾値を上回ることに応じて第2のURLへの応答を送信し得る。
一部の実装において、ウェブブラウザは、コンテンツアイテムがウェブブラウザによって表示される時間の継続時間を判定し得る。ウェブブラウザは、コンテンツアイテムがウェブブラウザによって表示される時間の継続時間が所定の閾値を上回ることに応じて第1のURL、第2のURL、およびタイムスタンプを記憶し得る。
ウェブブラウザは、第1のURLおよび第2のURLが時間の所定の長さ未満の間ウェブブラウザに記憶されたと判定し得る。ウェブブラウザは、時間の所定の長さの後、クライアントデバイスに記憶されたコンバージョンテーブルから第1のURLおよび第2のURLを削除し得る。登録要求は、データペイロードを有するアプリケーションプログラミングインターフェース(API)呼び出しを含む。
一部の実装において、ウェブブラウザは、応答で第2のURLにデータペイロードの少なくとも一部を送信し得る。ウェブブラウザは、第2のURLへの応答に関するペイロードの制限を設定し得る。ウェブブラウザは、プロキシサーバを介して第2のURLへの応答を送信し得る。一部の実装において、プロキシサーバは、クライアントデバイスのIPアドレスが追跡され得ないようにクライアントデバイスのIPアドレスを第三者のサーバから隠すことができる。プロキシは、バッチ報告を生成し、個々のユーザのプライバシーを守るために複数のクライアントデバイスからの報告メッセージを集約することもできる。
本明細書に記載の主題の実装および動作は、本明細書で開示された構造およびそれらの構造的均等物を含む、デジタル電子回路、またはコンピュータソフトウェア、ファームウェア、もしくはハードウェア、またはそれらのうちの1つもしくは複数の組合せで実装され得る。本明細書に記載の対象の実装は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置による実行のために、またはデータ処理装置の動作を制御するために1つまたは複数のコンピュータストレージ媒体上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。代替的にまたは追加的に、プログラム命令は、データ処理装置による実行のために好適なレシーバ装置に送信するために情報を符号化するように生成される人為的に生成された伝播信号、たとえば、マシンによって生成された電気的信号、光学的信号、または電磁的信号上に符号化されることが可能である。コンピュータストレージ媒体は、コンピュータ可読ストレージデバイス、コンピュータ可読ストレージ基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらのうちの1つもしくは複数の組合せであるか、あるいはそれらに含まれることが可能である。さらに、コンピュータストレージ媒体は、伝播信号ではないが、人為的に生成された伝播信号に符号化されたコンピュータプログラム命令の送信元または送信先であることが可能である。コンピュータストレージ媒体は、1つもしくは複数の別個の構成要素もしくは媒体(たとえば、複数のCD、ディスク、もしくはその他のストレージデバイス)であるか、またはそれらに含まれることも可能である。したがって、コンピュータストレージ媒体は、有形である可能性がある。
本明細書に記載の動作は、1つもしくは複数のコンピュータ可読ストレージデバイスに記憶された、またはその他のソースから受信されたデータに対してデータ処理装置によって実行される動作として実装され得る。
用語「クライアント」または「サーバ」は、1つのプログラミング可能なプロセッサ、1台のコンピュータ、1つのシステムオンチップ、またはそれらの複数もしくは組合せなどの、データを処理するためのすべての種類の装置、デバイス、およびマシンを含む。装置は、専用の論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含み得る。装置は、ハードウェアに加えて、問題にしているコンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサのファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、またはそれらのうちの1つもしくは複数の組合せを構成するコードも含み得る。装置および実行環境は、ウェブサービスインフラストラクチャ、分散コンピューティングインフラストラクチャ、およびグリッドコンピューティングインフラストラクチャなどの様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られる)は、コンパイラ型言語もしくはインタープリタ型言語、宣言型言語もしくは手続き型言語を含む任意の形態のプログラミング言語で記述可能であり、独立型プログラムとしての形態、またはモジュール、コンポーネント、サブルーチン、オブジェクト、もしくはコンピューティング環境内での使用に好適なその他の単位としての形態を含む任意の形態で展開され得る。コンピュータプログラムは、ファイルシステム内のファイルに対応する可能性があるが、必ずそうであるとは限らない。プログラムは、その他のプログラムもしくはデータを保持するファイルの一部(たとえば、マークアップ言語のドキュメントに記憶された1つもしくは複数のスクリプト)、問題にしているプログラムに専用の単一のファイル、または複数の組織されたファイル(たとえば、1つもしくは複数のモジュール、サブプログラム、もしくはコードの一部を記憶するファイル)に記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、または1つの場所に置かれるか、もしくは複数の場所に分散され、通信ネットワークによって相互に接続される複数のコンピュータ上で実行されるように展開され得る。
本明細書に記載のプロセスおよび論理フローは、入力データに対して演算を行い、出力を生成することによって行為を行うために1つまたは複数のコンピュータプログラムを1つまたは複数のプログラミング可能なプロセッサが実行することによって実行され得る。また、プロセスおよび論理フローは、専用の論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実行されることが可能であり、さらに、装置は、それらの専用の論理回路として実装されることが可能である。
コンピュータプログラムの実行に好適なプロセッサは、汎用マイクロプロセッサと専用マイクロプロセッサとの両方、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。概して、プロセッサは、読み出し専用メモリ、またはランダムアクセスメモリ、またはこれらの両方から命令およびデータを受け取る。コンピュータの必須の要素は、命令に従って行為を実行するためのプロセッサ、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。また、概してコンピュータは、データを記憶するための1つもしくは複数の大容量ストレージデバイス、たとえば、磁気ディスク、光磁気ディスク、もしくは光ディスクを含むか、またはこれらの大容量ストレージデバイスからデータを受け取るか、もしくはこれらの大容量ストレージデバイスにデータを転送するか、もしくはそれら両方を行うために動作可能なように結合される。しかし、コンピュータは、そのようなデバイスを有していなくてもよい。さらに、コンピュータは、別のデバイス、たとえば、ほんのいくつか例を挙げるとすれば、モバイル電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)レシーバ、またはポータブルストレージデバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)に組み込まれることが可能である。コンピュータプログラム命令およびデータを記憶するのに好適なデバイスは、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば、内蔵ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD-ROMディスクおよびDVD-ROMディスクを含むすべての形態の不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路によって補完され得るか、または専用論理回路に組み込まれ得る。
ユーザとのインタラクションを提供するために、本明細書に記載の対象の実装は、ディスプレイデバイス、たとえば、CRT(ブラウン管)、LCD(液晶ディスプレイ)、OLED(有機発光ダイオード)、TFT(薄膜トランジスタ)、プラズマ、その他の柔軟な構成、またはユーザに対して情報を表示する任意のその他のモニタと、ユーザがコンピュータに入力を与え得るキーボード、ポインティングデバイス、たとえば、マウス、トラックボールなど、またはタッチスクリーン、タッチパッドなどとを有するコンピュータ上に実装されることが可能である。その他の種類のデバイスが、ユーザとのインタラクションを提供するためにやはり使用されることが可能であり、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであることが可能であり、ユーザからの入力は、音響、発話、または触覚による入力を含む任意の形態で受け取られることが可能である。加えて、コンピュータは、ユーザによって使用されるデバイスにドキュメントを送信し、そのデバイスからドキュメントを受信することによって、たとえば、ウェブブラウザから受信された要求に応答してユーザのクライアントデバイスのウェブブラウザにウェブページを送信することによってユーザとインタラクションすることができる。
本明細書に記載の対象の実装は、バックエンド構成要素を、たとえば、データサーバとして含むか、またはミドルウェア構成要素、たとえば、アプリケーションサーバを含むか、またはフロントエンド構成要素、たとえば、ユーザが本明細書に記載の対象の実装とインタラクションすることができるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータを含むか、または1つもしくは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、もしくはフロントエンド構成要素の任意の組合せを含むコンピューティングシステムに実装され得る。システムの構成要素は、任意の形態または媒体のデジタルデータ通信、たとえば、通信ネットワークによって相互に接続されることが可能である。通信ネットワークは、ローカルエリアネットワーク(「LAN」)および広域ネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、ならびにピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む可能性がある。
本明細書において検討されたシステムがユーザについての個人情報を収集するか、または個人情報を利用する可能性がある状況に関して、ユーザは、プログラムまたは特徴が個人情報(たとえば、ユーザのソーシャルネットワーク、ソーシャルな行為もしくは活動、ユーザのプリファレンス、またはユーザの位置についての情報)を収集する可能性があるかどうかを制御するか、あるいはユーザにより関連性がある可能性があるコンテンツをコンテンツサーバもしくはその他のデータ処理システムから受け取るべきかどうかまたはどのようにして受け取るべきかを制御する機会を与えられる可能性がある。さらに、パラメータを生成するときに個人を特定することができる情報が削除されるように、特定のデータが、それが記憶されるかまたは使用される前に1つまたは複数の方法で匿名化される可能性がある。たとえば、ユーザの身元を匿名化することができ、したがって、個人を特定できる情報がそのユーザに関して決定され得ないようにし、または位置情報が取得される場合にユーザの地理的な位置を(都市、郵便番号、もしくは州のレベルなどに)一般化することができ、したがって、ユーザの特定の位置が決定され得ないようにする。このように、ユーザは、どのようにして情報がユーザについて収集され、コンテンツサーバによって使用されるかを制御する可能性がある。
本明細書は多くの特定の実装の詳細を含むが、これらは、いかなる発明の範囲または特許請求される可能性があるものの範囲に対する限定とも見なされるべきでなく、むしろ、特定の発明の特定の実装に固有の特徴の説明と見なされるべきである。別々の実装に関連して本明細書において説明されている特定の特徴が、単一の実装に組み合わせて実装されることも可能である。反対に、単一の実装に関連して説明されている様々な特徴が、複数の実装に別々に、または任意の適切な部分的組合せで実装されることも可能である。さらに、特徴は、特定の組合せで動作するものとして上で説明されている可能性があり、最初にそのように主張されてさえいる可能性があるが、主張された組合せの1つまたは複数の特徴は、場合によっては組合せから削除されことが可能であり、主張された組合せは、部分的組合せ、または部分的組合せの変形を対象とする可能性がある。
同様に、動作が図中に特定の順序で示されているが、これは、そのような動作が示された特定の順序でもしくは逐次的順序で実行されること、または所望の結果を達成するために示されたすべての動作が実行されることを必要とするものと理解されるべきでない。特定の状況においては、マルチタスクおよび並列処理が有利である可能性がある。さらに、上述の実装における様々なシステム構成要素の分割は、すべての実装においてそのような分割を必要とするものと理解されるべきでなく、説明されたプログラム構成要素およびシステムは、概して、単一のソフトウェア製品に一緒に統合されるか、または複数のソフトウェア製品にパッケージングされることが可能であることが理解されるべきである。
このように、対象の特定の実装が説明された。その他の実装は、添付の請求項の範囲内にある。場合によっては、請求項に挙げられた行為は、異なる順序で実行され、それでも所望の結果を達成することができる。加えて、添付の図面に示されたプロセスは、所望の結果を達成するために、必ずしも示された特定の順序または逐次的順序である必要はない。特定の実装においては、マルチタスクおよび並列処理が利用される可能性がある。