(57)【特許請求の範囲】
【請求項１】
少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサによって実行されたとき、システムに
ウェブページの第１のレンダリング結果を生成することであって、前記第１のレンダリング結果はスクリプトオンでレンダリングされる、生成することと、
前記ウェブページの第２のレンダリング結果を生成することであって、前記第２のレンダリング結果はスクリプトオフでレンダリングされる、生成することと、
前記第１のレンダリング結果の主要なコンポーネントのセットと前記第２のレンダリング結果の主要なコンポーネントのセットとの間の類似スコアを決定することと、
前記類似スコアが類似閾値を満たすと決定することに応答して、前記ウェブページのためのURLをコンテンツニュートラルURLデータストアに保存することと
ブラウザから要求を受信することであって、前記要求はURLを提供する、受信することと、
前記提供されたURLを前記コンテンツニュートラルURLデータストア内のURLに一致させることに応答して、前記ブラウザが前記URLをスクリプトオフでレンダリングできるように、前記提供されたURLがコンテンツニュートラルなURLであることを示す応答を前記ブラウザへ提供することと
を行わせる命令を保存するメモリと
を含む、コンピュータシステム。
【請求項２】
前記メモリは、前記少なくとも１つのプロセッサによって実行されたとき、前記システムに、
前記第２のレンダリング結果から欠けている、前記第１のレンダリング結果におけるアウトリンクを識別することと、
前記アウトリンクを識別することに応答して、前記ウェブページのための前記URLをコンテンツニュートラルURLデータストアに保存することと
を行わせる命令をさらに保存する、請求項１に記載のコンピュータシステム。
【請求項３】
前記メモリは、前記少なくとも１つのプロセッサによって実行されたとき、前記システムに、
前記第２のレンダリング結果から欠けている、前記第１のレンダリング結果におけるトークンを識別することと、
前記トークンを識別することに応答して、前記ウェブページのための前記URLをコンテンツニュートラルなURLとして識別することと
を行わせる命令をさらに保存する、請求項１に記載のコンピュータシステム。
【請求項４】
ストップワードと数字が、前記トークンを識別する前に前記第１のレンダリング結果および前記第２のレンダリング結果から削除される、請求項３に記載のコンピュータシステム。
【請求項５】
前記メモリは、前記少なくとも１つのプロセッサによって実行されたとき、前記システムに、
前記第２のレンダリング結果から欠けている、前記第１のレンダリング結果におけるトークンの量を識別することと、
前記量が閾値を満たしていると決定することと、
前記量が前記閾値を満たしていると決定することに応答して、前記ウェブページのための前記URLをコンテンツニュートラルなURLとして決定することと
を行わせる命令をさらに保存する、請求項１に記載のコンピュータシステム。
【請求項６】
前記主要なコンポーネントのセットは、スクリーンスペースのパーセンテージを構成する前記主要なコンポーネントを含む、請求項１に記載のコンピュータシステム。
【請求項７】
前記命令が、前記少なくとも１つのプロセッサによって実行されるとき、前記システムに、
フェッチレコード内の複数のウェブページそれぞれのために、
前記ウェブページの第１のレンダリング結果を生成することであって、前記第１のレンダリング結果がスクリプトオンでレンダリングされている、生成することと、
前記ウェブページの第２のレンダリング結果を生成することであって、前記第２のレンダリング結果がスクリプトオフでレンダリングされている、生成することと、
前記主要な部分の比較に基づいて、前記ウェブページがコンテンツニュートラルであるか否かを決定するために、前記第１のレンダリング結果を前記第２のレンダリング結果と比較することと、
前記ウェブページがコンテンツニュートラルであるとき、コンテンツニュートラルなURLのリストに前記ウェブページのためのURLを保存することと、
前記ウェブページがコンテンツニュートラルでないとき、非コンテンツニュートラルなURLのリストに前記ウェブページのためのURLを保存することと
を行わせ、かつ
コンテンツニュートラルなURLの前記リストを使用して、少なくとも１つのパターンを決定することと、
コンテンツニュートラルURLデータストアに前記パターンを保存することと
を行わせる命令をさらに含む、請求項１に記載のコンピュータシステム。
【請求項８】
前記命令が、前記少なくとも１つのプロセッサによって実行されるとき、前記コンテンツニュートラルURLデータストア内に前記パターンを記憶する前に、前記システムに、
非コンテンツニュートラルなURLの前記リスト内のURLが前記パターンと一致するか否かを決定することと、
非コンテンツニュートラルなURLの前記リスト内のどのURLも前記パターンに一致しないと決定したことに応答して、前記コンテンツニュートラルURLデータストア内に前記パターンを保存することと
を行わせる命令をさらに含む、請求項７に記載のコンピュータシステム。
【請求項９】
前記命令が、前記少なくとも１つのプロセッサによって実行されるとき、前記コンテンツニュートラルURLデータストア内に前記パターンを記憶する前に、前記システムに、
前記パターンに一致するURLの母集団から、非コンテンツニュートラルなURLであるURLのパーセンテージを決定することと、
前記パーセンテージが１パーセント未満のとき、前記コンテンツニュートラルURLデータストアに前記パターンを保存することと、
を行わせる命令をさらに含む、請求項７に記載のコンピュータシステム。
【請求項１０】
少なくとも１つのプロセッサを使用して、ウェブページの第１のレンダリング結果を生成するステップであって、前記第１のレンダリング結果がスクリプトオンでレンダリングされる、ステップと、
前記少なくとも１つのプロセッサを使用して、前記ウェブページの第２のレンダリング結果を生成するステップであって、前記第２のレンダリング結果がスクリプトオフでレンダリングされる、ステップと、
前記第１のレンダリング結果の主要なコンポーネントのセットを前記第２のレンダリング結果の主要なコンポーネントのセットとの類似スコアを計算するステップと、
前記類似スコアが類似閾値を満たすとき、前記ウェブページがコンテンツニュートラルであると決定するステップと、
前記ウェブページがコンテンツニュートラルであるとき、コンテンツニュートラルなURLのリストに前記ウェブページのためのユニフォームリソースロケータ（URL）を保存するステップと
ブラウザから要求を受信するステップであって、前記要求はURLを提供する、ステップと、
前記提供されたURLをコンテンツニュートラルなURLの前記リストに一致させることに応答して、前記ブラウザが前記提供されたURLをスクリプトオフでレンダリングできるように、前記提供されたURLがコンテンツニュートラルなURLであることを示す応答を前記ブラウザへ提供するステップと
を含む、方法。
【請求項１１】
前記類似スコアは、前記主要なコンポーネントのセットのバウンディングボックスにおける重複の量を表す、請求項１０に記載の方法。
【請求項１２】
フェッチレコード内の複数のウェブページそれぞれのために、
前記ウェブページの第１のレンダリング結果を生成するステップであって、前記第１のレンダリング結果がスクリプトオンでレンダリングされる、ステップと、
前記ウェブページの第２のレンダリング結果を生成するステップであって、前記第２のレンダリング結果がスクリプトオフでレンダリングされる、ステップと、
前記主要な部分の比較に基づいて、前記ウェブページがコンテンツニュートラルであるか否かを決定するために、前記第１のレンダリング結果を前記第２のレンダリング結果と比較するステップと、
前記ウェブページがコンテンツニュートラルであるとき、コンテンツニュートラルなURLのリストに前記ウェブページのためのURLを保存するステップと、
前記ウェブページがコンテンツニュートラルでないとき、非コンテンツニュートラルなURLのリストに前記ウェブページのためのURLを保存するステップと
をさらに含み、
コンテンツニュートラルなURLの前記リストから、少なくとも１つのパターンを決定するステップと、
コンテンツニュートラルURLデータストアに前記パターンを保存するステップと
をさらに含む、請求項１０に記載の方法。
【請求項１３】
前記コンテンツニュートラルURLデータストア内に前記パターンを記憶する前に、
非コンテンツニュートラルなURLの前記リストからのURLが前記パターンに一致するか否かを決定するステップと、
非コンテンツニュートラルなURLの前記リストからのどのURLも前記パターンに一致しないと決定したことに応答して、前記コンテンツニュートラルURLデータストア内に前記パターンを保存するステップと
をさらに含む、請求項１２に記載の方法。
【請求項１４】
前記コンテンツニュートラルURLデータストア内に前記パターンを記憶する前に、
前記パターンに一致するコンテンツニュートラルなURLの前記リスト内のURLの第１の量を決定するステップと、
前記パターンに一致する非コンテンツニュートラルなURLの前記リスト内のURLの第２の量を決定するステップと、
前記第２の量が前記第１の量と前記第２の量との合計の１パーセント未満であるとき、前記コンテンツニュートラルURLデータストアに前記パターンを保存するステップと
をさらに含む、請求項１２に記載の方法。
【請求項１５】
前記第２のレンダリング結果から欠けている、前記第１のレンダリング結果におけるアウトリンクを識別するステップと、
前記識別するステップに応答して、前記ウェブページがコンテンツニュートラルではないと決定するステップと
をさらに含む、請求項１０に記載の方法。
【請求項１６】
前記第２のレンダリング結果から欠けている、前記第１のレンダリング結果におけるトークンの量を識別するステップと、
前記量がトークン閾値を満たしていると決定するステップと、
前記量が前記トークン閾値を満たしていると決定することに応答して、前記ウェブページがコンテンツニュートラルではないと決定するステップと
をさらに含む、請求項１０に記載の方法。
【請求項１７】
前記トークンの量を識別するステップの前に、ストップワードを削除するステップをさらに含む、請求項１６に記載の方法。
【請求項１８】
前記トークン閾値は１つのトークンの量である、請求項１６に記載の方法。
【請求項１９】
前記主要なコンポーネントのセットは、閾値サイズを満たすボックスサイズを有するコンポーネントを含む、請求項１０に記載の方法。
【請求項２０】
URLによって識別されたウェブページをレンダリングする要求を受信するステップと、
レンダリングの前に、前記URLが、コンテンツニュートラルなURLを識別するデータストア内のコンテンツニュートラルなURLであるとして識別されると決定するステップであって、URLは、スクリプトオフのページレイアウトの類似性とスクリプトオンのページレイアウトの類似性とに基づいてコンテンツニュートラルである、ステップと、
前記URLがコンテンツニュートラルなURLであると決定するステップに応答して、スクリプトに関してのブラウザ設定に関わらず、スクリプトオフで前記ウェブページをレンダリングするステップと
を含む、方法。
【請求項２１】
前記URLがコンテンツニュートラルなURLであるとして識別されると決定するステップが、前記URLがコンテンツニュートラルなURLを識別する前記データストア内の所定のパターンと一致すると決定するステップを含む、請求項２０に記載の方法。
【請求項２２】
前記URLがコンテンツニュートラルなURLであると決定するステップが、
前記データストア内に保存されたコンテンツニュートラルなURLのリストに含まれるブラウザのタイプの指示に基づいて、前記URLが前記ウェブページをレンダリングするための前記要求を処理するブラウザのタイプにとってコンテンツニュートラルであると決定するステップ
を含む、請求項２０に記載の方法。
【請求項２３】
前記URLがコンテンツニュートラルなURLであると決定するステップが、
サービスに対して要求を送信するステップであって、前記サービスは前記URLがコンテンツニュートラルなURLであるか否かを決定する、ステップと、
前記URLがコンテンツニュートラルなURLであることを示す応答を前記サービスから受信するステップと
を含む、請求項２０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
多くのウェブページは、動的に作成され、ウェブブラウザのユーザによって見られる最後のページは、ブラウザレンダリングプロセスによって少なくとも部分的に生成されることを意味する。
【背景技術】
【０００２】
スクリプト、イメージ、およびスタイルシートのような埋め込みオブジェクトは、しばしばウェブページに組み込まれ、コンテンツおよびレンダリングされたウェブページの外観に影響を与える。例えば、JavaScript（登録商標）コードのようなスクリプトオブジェクトを実行すると、ウェブページをユーザに表示し、ページのための表示されたコンテンツを変更する方法にしばしば影響する。しかし、スクリプトオブジェクトを実行することは集中的な処理であり、しばしば他の埋め込みオブジェクトのダウンロードをもたらし、ネットワーク帯域幅に対して負担となり、ウェブページのロードを遅くする可能性がある。スマートフォンやタブレットのようなモバイルコンピューティングデバイスにおいて、このような追加の活動は、電池残量の浪費の元になり得る。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
実施形態は、コンテンツニュートラルウェブページを識別する。言い換えると、スクリプトが作用しないウェブページは、任意の有効な方法においてレンダリングされたウェブページのコンテンツに影響を与えない。
【課題を解決するための手段】
【０００４】
コンテンツニュートラルウェブページを識別するためのパターンが格納されてもよく、およびブラウザに提供されてもよい。ブラウザがウェブページをレンダリングする準備ができたとき、ウェブページがパターンの１つに適合するかどうかを確認してもよい。その場合、ブラウザはスクリプトをオフでウェブページをレンダリングしてもよい。これは、ユーザに表示されたコンテンツに影響を与えることなく、ブラウザがより効率的にウェブページをレンダリングすることを可能にする。いくつかの実施形態において、いくつかのウェブページが、別のブラウザの種類用ではないが、例えばスマートフォンでのモバイルブラウザのために、コンテンツニュートラルである可能性があるため、パターンはモバイル対フル（mobile vs. full）のようなブラウザの種類を含んでもよい。
【０００５】
一態様において、システムは少なくとも１つのプロセッサと、少なくとも１つのプロセッサによって実行されたとき、システムに動作を実行させる命令を含むメモリと、を含む。動作は、ウェブページの第１のレンダリング結果を生成することと、ウェブページの第２のレンダリング結果を生成することと、を含み、第１のレンダリング結果はスクリプトがオンでレンダリングされ、第２のレンダリング結果はスクリプトがオフでレンダリングされる。動作は、第１のレンダリング結果と第２のレンダリング結果における差がコンテンツニュートラルであるか否かを決定すること、および差がコンテンツニュートラルであるとき、ウェブページのためのURLをコンテンツニュートラルURLとして識別することと、も含む。
【０００６】
本明細書に記載される主題の１つまたは複数の実施形態は、１つまたは複数の以下の利点を実現するように実装されることができる。例えば、第１のレンダリング結果と第２のレンダリング結果における任意の差がコンテンツニュートラルであるか否かを決定することが、第２のレンダリング結果から欠けている、第１のレンダリング結果におけるアウトリンクを識別することと、アウトリンクを識別することに応答して、差がコンテンツニュートラルでないと決定することと、を含んでもよい。別の例として、第１のレンダリング結果と第２のレンダリング結果における任意の差がコンテンツニュートラルであるか否かを決定することが、第２のレンダリング結果から欠けている、第１のレンダリング結果におけるトークンを識別することと、トークンを識別することに応答して、差がコンテンツニュートラルでないと決定することと、を含むことができる。別の例として、第１のレンダリング結果と第２のレンダリング結果における任意の差がコンテンツニュートラルであるか否かを決定することが、第２のレンダリング結果から欠けている、第１のレンダリング結果におけるトークンの量を識別することと、量が閾値を満たしていると決定することと、量が閾値を満たしていると決定することに応答して、差がコンテンツニュートラルでないと決定することと、を含んでもよい。ストップワードは、トークンの差を決定する前に削除されてもよい。
【０００７】
別の例として、第１のレンダリング結果と第２のレンダリング結果における任意の差がコンテンツニュートラルであるか否かを決定することが、第１のレンダリング結果の主要なコンポーネントと第２のレンダリング結果の主要なコンポーネントとの間の類似スコアを計算することと、類似スコアが類似閾値を満たすか否かを決定することと、類似スコアが類似閾値を満たすとき、差がコンテンツニュートラルであると決定することと、を含んでもよい。
【０００８】
別の例として、動作は、フェッチレコード内の複数のウェブページそれぞれのために、ウェブページの第１のレンダリング結果を生成し、第1のレンダリング結果がスクリプトオンでレンダリングされており、ウェブページの第2のレンダリング結果を生成し、第2のレンダリング結果がスクリプトオフでレンダリングされており、およびウェブページがコンテンツニュートラルであるか否かを決定するために、第1のレンダリング結果を第2のレンダリング結果と比較することも、含んでもよい。ウェブページがコンテンツニュートラルであるとき、動作は、コンテンツニュートラルURLのリストにウェブページのためのURLを保存することと、ウェブページがコンテンツニュートラルでないとき、非コンテンツニュートラルURLのリストに前記ウェブページのためのURLを保存することと、を含んでもよい。動作は、コンテンツニュートラルURLのリストを使用して、少なくとも1つのパターンを決定すること、およびコンテンツニュートラルURLデータストアにパターンを保存することも含んでもよい。いくつかの実施形態において、動作は、パターンが非コンテンツニュートラルURLのリスト内のURLに適用するか否かを決定することと、パターンが非コンテンツニュートラルURLのリスト内のURLに適用できないとき、コンテンツニュートラルURLデータストア内のパターンを保存することと、を含んでもよい。いくつかの実施形態において、動作は、非コンテンツニュートラルURLであるパターンに一致するURLのパーセンテージを決定することと、パーセンテージが１パーセント未満のとき、コンテンツニュートラルURLデータストアにパターンを保存することと、を含んでもよい。
【０００９】
別の態様において、コンピュータ実装方法は、少なくとも１つのプロセッサを使用して、ウェブページの第１のレンダリング結果を生成するステップであって、第1のレンダリング結果がスクリプトオンでレンダリングされている、生成するステップと、少なくとも１つのプロセッサを使用して、ウェブページの第2のレンダリング結果を生成するステップであって、第2のレンダリング結果がスクリプトオフでレンダリングされている、生成するステップと、を含む。方法は、ウェブページがコンテンツニュートラルであるか否かを決定するために、第1のレンダリング結果を第2のレンダリング結果と比較するステップと、ウェブページがコンテンツニュートラルであるとき、コンテンツニュートラルURLのリストにウェブページのためのユニフォームリソースロケータ（Uniform Resource Locator 、URL）を保存するステップと、を含んでもよい。
【００１０】
本明細書に記載される主題の１つまたは複数の実施形態は、１つ又は複数の以下の利点を実現するように実装されることができる。例えば、方法は、フェッチレコード内の複数のウェブページそれぞれのために、ウェブページの第１のレンダリング結果をスクリプトオンで生成するステップと、ウェブページの第2のレンダリング結果をスクリプトオフで生成するステップと、およびウェブページがコンテンツニュートラルであるか否かを決定するために、第1のレンダリング結果を前記第2のレンダリング結果と比較するステップと、を含んでもよい。方法は、コンテンツニュートラルURLの前記リストから、少なくとも1つのパターンを決定するステップと、コンテンツニュートラルURLデータストアにパターンを保存するステップと、をさらに含んでもよい。いくつかの実施形態において、方法は、パターンに一致するコンテンツニュートラルURLのリスト内のURLの第1の量を決定するステップと、パターンに一致する非コンテンツニュートラルURLのリスト内のURLの第２の量を決定するステップと、第2の量が第1の量と第2の量の合計の１パーセント未満であるとき、コンテンツニュートラルURLデータストアにパターンを保存するステップと、をさらに含んでもよい。
【００１１】
別の態様において、方法は、URLによって識別されたウェブページをレンダリングする要求を受信するステップと、レンダリングの前に、前記URLがコンテンツニュートラルURLであると決定するステップと、を含む。方法は、URLがコンテンツニュートラルURLであると決定するステップに応答して、スクリプトに関してのブラウザ設定に関わらず、スクリプトオフでウェブページをレンダリングするステップも含んでもよい。いくつかの実施形態において、URLがコンテンツニュートラルであると決定するステップが、URLがコンテンツニュートラルURLのデータストア内の所定のパターンと一致すると決定するステップを含む。いくつかの実施形態において、URLがコンテンツニュートラルURLであると決定するステップが、URLがウェブページをレンダリングするための要求を処理するブラウザのタイプにとってコンテンツニュートラルであると決定するステップを含む。いくつかの実施形態において、URLがコンテンツニュートラルURLであると決定するステップが、サービスに対して要求を送信するステップであって、サービスはURLがコンテンツニュートラルURLであるか否かを決定する、送信するステップと、URLがコンテンツニュートラルURLであると示す応答をサービスから受信するステップと、を含む。
【００１２】
別の態様において、非一時的コンピュータ可読媒体は、コンピュータシステムに１つ又は複数の上述した方法を実行させる、回路基板に形成された少なくとも１つのプロセッサによって実行可能な命令を含んでもよい。
【００１３】
本明細書に記載される主題の１つまたは複数の実施形態は、１つまたは複数の以下の利点を実現するように実装されることができる。一例として、スクリプトオフでウェブページをレンダリングすることは、CPUとネットワーク帯域幅とモバイルデバイスのバッテリー消費を節約する。しかし、多くのウェブページはウェブページのコンテンツをロードするためにスクリプトを使用するため、いつもスクリプトオフのブラウザ設定を使用することは、視聴者にコンテンツを失うことをもたらす。コンテンツニュートラルパターンのデータストアは、スクリプトがコンテンツに影響を与えないとき、ブラウザが選択的にスクリプトオフにすること可能にする。コンテンツニュートラルURLのためのスクリプトオフは、ロード時間をより速くし、CPU使用率を減少し、（システムはスクリプトエンジンを開始する必要がないため）RAM使用率を減少し、および消費電力を減少することをもたらす。
【図面の簡単な説明】
【００１４】
【図１】開示された主題に従ったシステム例を図示する。
【図２】実施形態に従った、レンダリングされたウェブページのレンダリング結果のブロック図である。
【図３】実施形態に従った、コンテンツニュートラルURLパターンを示すプロセス例を図示する流れ図である。
【図４】実施形態に従った、２つのレンダリング結果がコンテンツニュートラルであるか否かを判断するプロセス例を図示する流れ図である。
【図５】実施形態に従った、最適化されたレンダリングの情報を提供するプロセス例を図示する流れ図である。
【図６】開示した技術を実装するために使用されることができるコンピュータデバイスの例を示す。
【図７】開示した技術を実装するために使用されることができる分散型コンピュータデバイスの例を示す。
【発明を実施するための形態】
【００１５】
開示された実施形態は、コンテンツニュートラルウェブページ、あるいはスクリプトオブジェクトがレンダリングされたページに対してコンテンツニュートラルであるページを識別し、およびブラウザが、ブラウザレンダリングエンジンがスクリプトを実行することなくそのようなウェブページをレンダリングすることを可能にする。これは、しばしば3つの要因によってレンダリング時間を増加し、スマートフォンやタブレットといった限定されたリソースを備えた演算デバイスにとって重要である。スクリプトオンでレンダリングされたウェブページのレンダリング結果がスクリプトオフでレンダリングされたウェブページのレンダリング結果と類似であるとき、ウェブページは、最適化されたレンダリングのための候補となってもよい。類似点は、ページのトークンの類似点、アウトリンクの類似点、ページレイアウトの類似点などによって決定されてもよい。いくつかの実施形態において、アウトリンクまたはトークンの任意の差は、重大な差であると見なされ得る。いくつかの実施形態において、レイアウトの主要なコンポーネントが閾値を満たす類似の測定基準を有する場合、レンダリング結果は、類似であると考えられてもよい。ページのスクリプトオブジェクトがコンテンツニュートラルである場合、システムはコンテンツニュートラルURLのリストにウェブページを格納してもよい。いくつかの実施形態において、システムは、別のコンテンツニュートラルURLを識別するために使用されることができるパターンを識別するために、コンテンツニュートラルURLを集めてもよい。
【００１６】
ブラウザがウェブページのレンダリングを開始するとき、ウェブページにとってスクリプトオブジェクトがコンテンツニュートラルであるか、すなわちURLがコンテンツニュートラルであるかどうかをサービスに尋ねてもよい。サービスは、完全に一致するかまたはデータストアのパターンに一致するかのいずれかにより、要求されたウェブページのURLをコンテンツニュートラルURLのデータストアと一致させてもよい。サービスが一致を見つけた場合、サービスは、ブラウザにスクリプトオブジェクトがコンテンツニュートラルであることを伝えてもよく、およびブラウザはスクリプトオフでウェブページのレンダリングを進めてもよい。そうでなければ、（例えば、ウェブページのURLがデータストア内のパターンと一致しない場合）ブラウザはスクリプトオンでページをレンダリングし、あるいはウェブページをレンダリングするとき、スクリプトを実行するか否かを決定するためにブラウザ設定を使用することができる。このような最適化されたブラウザレンダリングは、よりリソースが効率的なブラウザレンダリングプロセスにする。いくつかの実施形態において、コンテンツニュートラルURLデータストアは、モバイルブラウザとデスクトップブラウザとの間で区別されてもよい。
【００１７】
図１は、実施形態例に従ったシステムのブロック図である。システム１００は、コンテンツニュートラルURLおよびコンテンツニュートラルURLパターンを識別するために使用されてもよく、並びにブラウザレンダリングプロセスを最適化するためにパターンを使用してもよい。システム１００は、多数の異なるデバイスの形態を成すコンピューティングデバイスを含んでもよい。例えば、システム１００は、図６に示すようなコンピュータデバイスの例６００、および図７に示すようなコンピュータデバイスの例７００であるコンピューティングデバイスを含んでもよい。
【００１８】
システム１００は、バッチレンダリングシステム１１０を含んでもよい。バッチレンダリングシステム１１０は、標準サーバ、そのようなサーバのグループ、クライアントサーバシステム、あるいはラックサーバシステムであってもよい。さらに、バッチレンダリングシステム１１０は、パーソナルコンピュータで実装されてもよい。バッチレンダリングシステム１１０は、メモリに保存された、1つ又は複数の機械実行可能命令またはソフトウェア、ファームウェア、あるいはそれらの組合せの一部を実行するように構成された1つ又は複数のプロセッサを含んでもよい。例えば、バッチレンダリングシステム１１０は、レンダリングエンジン１２０、フェッチサービス１２２、ウェブ巡回エンジン１２４、およびコンテンツニュートラルURL識別エンジン１２６を含んでもよい。バッチレンダリングシステム１１０は、バッチモードでレンダリングされたウェブページを、例えばインデックスプロセスの一部として生成してもよく、および処理生成フェッチレコード１３２において生成してもよく、これはバッチレンダリングシステム１１０がコンテンツニュートラルURLパターン１３０を生成するために使用されてもよい。
【００１９】
ダウンストリームプロセスは、バッチレンダリングシステム１１０がバッチモードでウェブページをレンダリングすることを要求してもよい。いくつかの実施形態において、バッチレンダリングシステム１１０は、ダウンストリームプロセス（図示せず）を含んでもよい。例えば、ダウンストリームプロセスは、インデックスエンジンまたは広告プラットフォームであってもよい。ダウンストリームプロセスは、バッチレンダリングエンジン１２０の1つが特定のウェブページのためにレンダリング結果を生成することを要求してもよい。バッチレンダリングエンジン１２０のそれぞれは、個人のウェブブラウザに対してレンダリングをエミュレートするように構成されてもよいが、バッチレンダリングのための最適化を伴う。ウェブページは、スタイルシート、JavaScript（登録商標）、画像などのような埋め込みオブジェクトを含んでもよい。バッチレンダリングエンジン１２０は、フェッチサービス１２２を使用して、埋め込みオブジェクトのためのコンテンツを要求してもよい。
【００２０】
フェッチサービス１２２は、埋め込みオブジェクトがホストサーバ１９０からフェッチされる必要があるかを決定してもよく、埋め込みオブジェクトはキャッシュから返されることができ、およびオブジェクトは返される必要がない。ホストサーバ１９０は、1つ又は複数のウェブページ又は1つ又は複数のウェブページに埋め込まれたリソースを提供するインターネットを介してアクセス可能なコンピューティングデバイスの任意の種類であってもよい。埋め込みオブジェクトがフェッチされる必要がある場合、フェッチサービス１２２は、従来の技術を使用してウェブ巡回エンジン１２４を介して埋め込みオブジェクトのためのコンテンツを要求してもよい。インデックスエンジンのようなダウンストリームプロセスは、ウェブ巡回エンジン１２４を介してサーバ１９０からコンテンツを要求してもよい。フェッチ要求の結果として、バッチレンダリングシステム１１０は、フェッチレコード１３２を生成してもよい。フェッチレコード１３２は、リクエストされ、かつホストサーバ１９０から読み出されたウェブページについての情報を含んでもよい。
【００２１】
ウェブ巡回エンジン１２４、バッチレンダリングエンジン１２０、およびフェッチサービス１２２は、例えばワールドワイドウェブ上で発見されることができるウェブページのような、多数のウェブページを効率的にレンダリングするために一緒に動作する。ウェブページのレンダリングの結果は、レンダリング結果であり、ダウンストリーム要求プロセスのために利用可能な、あるいは利用不可能な、様々なデータ要素を含む。コンテンツニュートラルURL識別エンジン１２６は、コンテンツニュートラルURLパターン１３０を生成するためにバッチレンダリングエンジン１２０を使用してもよい。コンテンツニュートラルURL識別エンジン１２６は、入力としてフェッチレコード１３２を使用して、周期的に（例えば、毎日、週２、等）で動作してもよい。コンテンツニュートラルURL識別エンジン１２６は、バッチレンダリングエンジン１２０に、スクリプトオンでフェッチレコード１３２からURLの第1のレンダリング結果を生成する、およびスクリプトオフでURLの第2のレンダリング結果を生成するように依頼してもよい。JavaScript（登録商標）のようなスクリプトオブジェクトは、ウェブページがブラウザによってレンダリングされるときに実行される、ウェブページに含まれたコードである。スクリプトオブジェクトは、レンダリングされたウェブページの見た目とコンテンツを操作すること、別のスクリプトオブジェクトの実行を初期化すること、インターネット等から追加のコンテンツをダウンロードすることができる。従って、スクリプトオブジェクトは、ブラウザによって実行されることを目的とされている。しかし、スクリプトオブジェクトを実行することは、高レベルの処理リソースを消費し、およびしばしばコンテンツフェッチの追加をもたらし、これはレンダリングプロセスを遅延し、帯域幅を不通にし、およびバッテリー容量を消耗する。ブラウザは、通常レンダリングプロセスを高速化する、スクリプトオフにする設定を含むが、結果のコンテンツは影響を受ける可能性があり、ページが正確にレンダリングされない、あるいはコンテンツの欠如となる可能性がある。
【００２２】
URLのレンダリングされたコンテンツが、スクリプトオブジェクトを実行することによって影響を受けるか否かを決定するために、コンテンツニュートラルURL識別エンジン１２６はスクリプトオンのURLの第1のレンダリング結果およびスクリプトオフのURLの第2のレンダリング結果を要求する。例えば、コンテンツニュートラルURL識別エンジン１２６は、バッチレンダリングエンジン１２０の1つがレンダリング結果を提供することを要求してもよい。コンテンツニュートラルURL識別エンジン１２６は、スクリプトオブジェクトを実行することが、レンダリングされたウェブページのコンテンツに影響を与えるか否かを決定するために、第1のレンダリング結果と第2のレンダリング結果を比較してもよい。いくつかの実施形態において、コンテンツが影響を受ける場合、URLは非コンテンツニュートラルURLのリストに追加されてもよい。コンテンツが重大な影響（例えば、類似である等）を受けない場合、コンテンツニュートラルURL識別エンジン１２６は、URLがコンテンツニュートラルであると識別してもよい。いくつかの実施形態において、URLは、コンテンツニュートラルURLパターン１３０のようなデータストアに保存されてもよい。いくつかの実施形態において、URLは、コンテンツニュートラルURLの一時リストに保存され、およびコンテンツニュートラルURLについてパターンを決定するために後で使用されてもよい。従って、いくつかの実施形態において、コンテンツニュートラルURL識別エンジン１２６は、多くのURLについてこのテストを実行し、およびコンテンツニュートラルであるURLのパターンを決定する。例えば、コンテンツニュートラルURL識別エンジン１２６は、同じホストに属する全てのURLについて、コンテンツニュートラル状態を集めてもよい。ホストに関しての全てのURLがコンテンツニュートラルである場合、ホストはコンテンツニュートラルURLパターン１３０のパターンとして含まれてもよい。いくつかの実施形態において、パターンに一致するURLの少ないパーセンテージ（例えば、１％未満）がコンテンツニュートラルである場合、コンテンツニュートラルURL識別エンジン１２６は、コンテンツニュートラルURLパターン１３０のパターンとして当該ホストを含んでもよい。いくつかの実施形態において、コンテンツニュートラルURLおよび非コンテンツニュートラルURLのリストの集約は、例えばホスト内の特定のパスのために使用されてもよい別のパターンを作ってもよい。
【００２３】
いくつかの実施形態において、コンテンツニュートラルURL識別エンジン１２６はまた、コンテンツニュートラルURLパターン１３０内のパターンがさらにコンテンツニュートラルであることを検証してもよい。例えば、コンテンツニュートラルURL識別エンジン１２６は、パターンに一致するURLのサンプルを選択し、レンダリングエンジンにスクリプトオンおよびスクリプトオフでレンダリング結果を生成することを要求し、および二つのレンダリング結果を比較してもよい。コンテンツニュートラルURLパターン１３０のパターンに一致するURLが、もはやコンテンツニュートラルではない場合、パターンは削除されてもよい。
【００２４】
いくつかの実施形態において、コンテンツニュートラルURL識別エンジン１２６は、URLまたはURLパターンが、従来のパーソナルブラウザから独立したモバイルブラウザにとってコンテンツニュートラルであるか否かを判定してもよい。例えば、いくつかのウェブサイトはウェブページのモバイル版とフル版を有し、およびフル版はコンテンツニュートラルではないが、モバイル版はコンテンツニュートラルであってもよい。従って、コンテンツニュートラルURL識別エンジン１２６は、１つのURLについて４つのレンダリング結果をレンダリングしてもよい。第１の二つのレンダリング結果は、従来のパーソナルブラウザをエミュレートするレンダリングエンジンによってレンダリングされてもよく、しかし一方、残りの二つのレンダリング結果は、スマートフォンまたはタブレット等のモバイルデバイス上のブラウザをエミュレートするレンダリングエンジンによってレンダリングされてもよい。コンテンツニュートラルURLパターン１３０は、このように、例えばモバイルブラウザ用または従来のブラウザ用といったブラウザの種類によってパターンがコンテンツニュートラルであるか否かを示すデータを含んでもよい。
【００２５】
簡潔にするために図１には図示しないが、いくつかの実施形態において、バッチレンダリングシステム１１０は２つ以上の分離したコンピューティングデバイスにわたって分散されてもよい。さらに、１つまたは複数のバッチレンダリングエンジン１２０、フェッチサービス１２２、ウェブ巡回エンジン１２４、およびコンテンツニュートラルURL識別エンジン１２６は、１つまたは複数のコンピューティングデバイスの全体に分散されてもよい。いくつかの実施形態において、１つまたは複数のバッチレンダリングエンジン１２０、フェッチサービス１２２、ウェブ巡回エンジン１２４、およびコンテンツニュートラルURL識別エンジン１２６は、バッチレンダリングシステム１１０の別のコンポーネントを備えたメモリまたはハードウェアプロセッサのようなリソースを共有してもよい。同様に、フェッチレコード１３２およびコンテンツニュートラルURLパターン１３０も、複数のコンピューティングデバイスにわたって分散されたメモリに保存されてもよい。いくつかの実施形態において、バッチレンダリングシステム１１０の様々なコンポーネントは、コンピューティングデバイスのハードウェアコンポーネントを共有してもよく、あるいは、いくつかのコンピューティングデバイスの論理的パーティションであってもよい。
【００２６】
バッチレンダリングシステム１１０は、ネットワーク１６０を介してクライアント１８０およびサーバ１９０と通信してもよい。ネットワーク１６０は、例えば、インターネットであってもよく、あるいはネットワーク１６０は、例えばゲートウェイデバイス、ブリッジ、スイッチ、及び／又はその他を使用して実装される、有線または無線ローカルエリアネットワーク（LAN）、ワイドエリアネットワーク（WAN）、それらの組合せ等であることもできる。ネットワーク１６０を介して、バッチレンダリングシステム１１０は、クライアント１８０及び／又はホストサーバ１９０と通信し、並びにデータの送受信をしてもよい。例えば、バッチレンダリングシステム１１０は、クライアント１８０にコンテンツニュートラルURLパターン１３０を提供してもよく、あるいは特定のURLがコンテンツニュートラルであるか否かを確認する要求をクライアント１８０から受信してもよく、およびコンテンツニュートラルURLパターン１３０に基づいて応答を提供してもよい。
【００２７】
クライアント１８０は、パーソナルウェブブラウザ１４０がインストールされた、図６で描かれたコンピューティングデバイス６００のようなパーソナルコンピューティングデバイスであってもよい。パーソナルウェブブラウザの例は、スマートフォンあるいはタブレットのようなモバイルデバイス用、またはラップトップあるいはデスクトップのようなパーソナルコンピュータ用の、Chrome、Safari、Internet Explorer、Firefoxなどを含む。ブラウザ１４０は、特定のURLがスクリプトオフでレンダリングされることができるか否かを決定するために、サービスを使用するように構成されてもよい。いくつかの実施形態において、サービスは、コンテンツニュートラルURLパターン１３０のコピーを、ブラウザ１４０による使用のためにクライアント１８０に転送してもよい。いくつかの実施形態において、ブラウザ１４０は、特定のURLがコンテンツニュートラルURLパターン１３０のパターンのうちの１つに一致するかを確認するように、サービスに依頼するように構成されてもよい。特定のURLがコンテンツニュートラルであるとき、ブラウザ１４０は、特定のURLがスクリプトオフでレンダリングされることができるか否かを決定するためにサービスを使用し、スクリプトオフでレンダリングを実行することによって最適化されたレンダリングを実行する。従って、ブラウザ１４０は、スクリプトのブラウザ設定に関わらず、ユーザによる行動なしで選択的にスクリプトオンまたはオフするように構成されてもよく、およびコンテンツが影響を受けないリソースを節約するためにそうすることができる。
【００２８】
図２は、実施形態に従った、バッチレンダリングエンジン１２０によってレンダリングされたレンダリング結果２００のブロック図である。レンダリング結果２００は、様々なコンポーネントを含んでもよく、すべてが図２に図示されているわけではない。例えば、レンダリング結果２００は、レンダリングされたページの画像２０５を含むことができる。画像２０５は、ウェブブラウザによってディスプレイデバイスを介してユーザに表示される画像であってもよい。画像２０５は、例えば、レンダリングされたページのサムネイルをユーザに表示するために、およびウェブページの表示要素がどこに発生するかを（例えば、それらのXおよびY座標に基づいて）決定するために使用されることができる。レンダリング結果２００は、ドキュメントオブジェクトモデル（DOM）ツリー２１０を含むこともできる。DOMツリー２１０は、ウェブページのHTML構造を表す。例えば、DOMツリー２１０は、ウェブページのためのトークンおよびアウトリンクを含む。レンダリング結果２００は、レイアウト２１５も含んでもよい。レイアウト２１５は、ウェブページの各要素のためのボックスを含み、ボックスは、画像２０５の要素のXおよびY座標を指定する。従って、レイアウト２１５は、要素が発生するウェブページ上の場所、それがウェブページ上でどのくらいの領域をとるか、などの指示を提供する。従って、レイアウト２１５は、ウェブページのどれ位が広告であるのか、パラグラフ（paragraph）がどのくらい目立つか（例えば、マスメディア広告、あるいはマスメディア以外の手段による広告）、要素が可視であるか否か、等の情報を提供する。言い換えれば、レイアウト２１５は、レンダリングされたウェブページの要素についての幾何学的情報を提供する。レンダリング結果２００は、エラー２２０も含んでもよい。エラー２２０は、例えばJavaScript（登録商標）といったスクリプトオブジェクトを動作した結果として遭遇したエラーを含む。レンダリング結果２００は、レンダリング中にフェッチされた埋め込みリソース２２５のリストも含んでもよく、およびレンダリングプロセスの一部分として生成された別の要素（図示せず）を含むこともできる。従って、レンダリング結果２００は、ホスティングサーバからのコンテンツのフェッチを介してのみ、利用不可能な情報を提供する。コンテンツニュートラルURL識別エンジンのような、ダウンストリーム要求プロセスは、スクリプトオブジェクトの動作がレンダリングされたウェブページのコンテンツを著しく変更するか否かを決定するため、等といった様々な目的のためにレンダリング結果情報を使用することができる。例えば、ウェブページの広告部分のコンテンツは、重要であると考えられる必要はなく、URLは、広告の位置の差があったとしても、依然としてコンテンツニュートラルであってもよい。いくつかの実施形態において、レイアウトの主要なコンポーネントの差だけが重要であると考えられてもよい。主要なコンポーネントは、レイアウト２１５の最も大きなボックス（例えば、高さと幅が最大であるボックス）であってもよい。
【００２９】
図３は、実施形態に従った、コンテンツニュートラルURLパターンを識別するための処理例３００を図示した流れ図である。プロセス３００は、図１のシステム１１０などのようなシステムによって実行されてもよい。システムは、スクリプトオンでウェブページのレンダリング結果を生成するために、スクリプトオフでウェブページの第２のレンダリング結果をレンダリングするために、および、スクリプトが任意の顕著なあるいは重要な方法でコンテンツに影響を与えるかどうかを決定するか言い換えればスクリプトがコンテンツニュートラルであるかどうかを決定するのにレンダリング結果を比較するために、プロセス３００を使用してもよい。いくつかの実施形態において、システムは、特定のURLのレンダリング結果に基づいて、コンテンツニュートラルURLのためのパターンを決定してもよい。パターンは、データストアに保存され、要求されたURLがコンテンツニュートラルであるとき、スクリプトオフすることによって（フルまたはモバイルにかかわらない）パーソナルブラウザにレンダリングを最適化させるサービスの一部分として、使用されてもよい。
【００３０】
プロセス３００は、フェッチレコードからウェブページを取得するシステムから開始してもよい（３０５）。フェッチレコードは、ウェブ巡回エンジンを介してウェブページあるいは埋め込みオブジェクトに対するフェッチ要求を記録するファイルからのものであってもよい。いくつかの実施形態において、フェッチレコードは、インデックスプロセスの一部分、例えば、インターネットを介して利用可能なドキュメントのためのインデックスプロセスとして、生成されてもよい。ウェブページは、URLのような識別子によってフェッチレコードに識別されてもよい。従って、ウェブページは、URLとして参照されてもよく、ウェブページやURLを参照することは、本明細書で使用されるように一般的に同義であることが理解されよう。システムは、スクリプトオンでウェブページの第１のレンダリング結果を生成してもよい（３１０）。言い換えると、システムは、第１のレンダリング結果を生成するとき、JavaScript（登録商標）（あるいは他のスクリプト言語）を動作してもよい。システムは、スクリプトオフでウェブページの第２のレンダリング結果を生成してもよい（３１５）。システムは、次いでレンダリング結果がコンテンツニュートラルであるかどうかを決定するために、第１のレンダリング結果と第２のレンダリング結果とを比較してもよい（３２０）。
【００３１】
図４に関してより詳細に説明されるように、システムは、レンダリング結果がコンテンツニュートラルであるか否かを決定するために、様々なテストを使用してもよい。レンダリング結果がコンテンツニュートラルである場合（３２０、はい）、システムは、コンテンツニュートラルURLのリストにウェブページのURLを追加してもよい（３３０）。このリストは、コンテンツニュートラルURLのためのパターンを決定するために使用される一時的なリストであってもよい。レンダリング結果が類似でない場合（３２０、いいえ）、システムは、非コンテンツニュートラルURLのリストにウェブページのURLを追加してもよい（３２５）。このリストのウェブページは、コンテンツが欠落することなしにスクリプトオフでレンダリングされることができない。非コンテンツニュートラルURLのリストは、一時的なメモリに保存されたリストであってもよく、およびコンテンツニュートラルURLのためのパターンを決定するために使用されてもよい。フェッチレコードに調べるべき別のウェブページがある場合（３３５、いいえ）、システムは、フェッチレコードから次のURLを取得してもよく（３４０）、および次のウェブページを使用してステップ３０５から３３０を繰り返してもよい。いくつかの実施形態において、ステップ３０５から３４０によって表されるサイクルは、フェッチコードの全てのURLがコンテンツニュートラル性に関して調べられるまで、継続されてもよい。いくつかの実施形態において、特定の日付または時間の後のフェッチレコードだけが調べられてもよい。
【００３２】
フェッチレコードの全てのウェブページがコンテンツニュートラル性に関して調べられる場合（３３５、はい）、システムは、コンテンツニュートラルURLのリストと非コンテンツニュートラルURLのリストとを使用して、コンテンツニュートラルURLのためのパターンを決定してもよい（３４５）。いくつかの実施形態において、システムはURLの残りである潜在的パターンを備えたURLの一部分である、任意のクエリ文字列を取り除いてもよい。URLは、クエリ文字列なしの残りの部分が一致する場合、潜在的パターンと一致する。いくつかの実施形態において、システムは、URLのホスト部分以外の全てを取り除いてもよい。後にくるものにかかわらず、ホスト部分が一致する場合、URLはパターンと一致する。いくつかの実施形態において、システムは、パターンを決定するために、クラスタリングのような集約の別の形態を使用してもよい。パターンは、ホスト（例えば、www.pattern.com）を示してもよく、またはホスト内の異なるディレクトリ（例えば、www.pattern.com/services）等を示してもよい。潜在的パターンがコンテンツニュートラルであるかを見るために、システムは、パターンに一致する非コンテンツニュートラルURLリストにおいてパターンに一致するURLの量、およびコンテンツニュートラルURLにおいてパターンに一致するURLの量を決定してもよい。いくつかの実施形態において、非コンテンツニュートラルURLリスト内のURLが、潜在的パターンと一致する場合、潜在的パターンは、非コンテンツニュートラルURLであると考えられる。いくつかの実施形態において、潜在的パターンに一致するURLの少ないパーセンテージ、例えば１％以下は、非コンテンツニュートラルであることができ、およびパターンは、まだコンテンツニュートラルであると考えられてもよい。潜在的パターンがコンテンツニュートラルである場合、システムは、パターンをデータストアに保存してもよい（３５０）。スクリプトがコンテンツに影響を及ぼさない（例えば、URLがコンテンツニュートラルである）場合、データストアは、スクリプトをオフすることによってブラウザにウェブページのレンダリングを最適化させるために、サービスによって使用されてもよい。
【００３３】
いくつかの実施形態において、システムは、異なるブラウザのタイプによってレンダリングされたレンダリング結果とともに、プロセス３００の一部または全てを繰り返してもよい。例えば、ブラウザタイプはフルブラウザあるいはモバイルブラウザであってもよい。第１および第２のレンダリング結果がフルブラウザによってレンダリングされた場合、システムは、モバイルブラウザを使用してステップ３０５から３３５を繰り返してもよい。従って、コンテンツニュートラルURLのリストは、ブラウザタイプの指示を含んでもよく、データストアのパターンもまた、ブラウザタイプの指示を含んでもよい。これは、システムに、URLが１つのブラウザタイプ（例えば、モバイルブラウザ）のために、かつ異なるブラウザタイプのためではなく（例えば、フルブラウザ）、コンテンツニュートラルであるか否かを示すことを許可する。
【００３４】
図４は、実施形態に従った、２つのレンダリング結果がコンテンツニュートラルであるか否かを決定するためのプロセス例４００を図示する流れ図である。プロセス４００は、例えば、図３のステップ３２０の一部として実行されてもよい。プロセス４００が、レンダリング結果類似点を決定するための３つのテストを図示するが、実施形態は、図示されたテストの内、１つ、２つ、あるいは全てを含むことができ、および図示されていない付加的な類似のテストを含んでもよいことを理解されたい。
【００３５】
プロセス４００は、２つのレンダリング結果のトークンを比較するステップを含んでもよい（４０５）。トークンは、例えばユーザ可視のワード等のドキュメントのテキストを含んでもよい。トークンは、図２のDOMツリー２１０のようなDOMツリーを処理することによって生成されてもよい。いくつかの実施形態において、ストップワードと数字は、比較を実施する前に削除されてもよい。第１のレンダリング結果のためのトークンが第２のレンダリング結果のためのトークンと異なる場合（４１０、はい）、システムは、スクリプトオンでのレンダリングによって追加された固有のトークンの量が、トークン閾値未満であるか否かを任意で決定してもよい（４１５）。言い換えると、スクリプトオンでレンダリングすることが、少数の固有のトークンという結果にしかならない場合、システムは、差がささいなものであると見なしてもよい。いくつかの実施形態において、トークン閾値は５であってもよい。追加された固有のトークンの量がトークン閾値を満たす場合（４１５、いいえ）、システムは、レンダリング結果が類似ではないと見なしてもよい（４３０）。レンダリング結果が類似でないとき、レンダリング結果を生成するために使用されるURLは、コンテンツニュートラルでない。いくつかの実施形態において、システムは、テスト４１５をスキップしてもよく、トークンの任意の差は重要であると見なされてもよく、およびレンダリング結果は類似ではない。量がトークン閾値を満たさない場合（４１５、はい）、システムは、トークンの差がささいなものであると見なしてもよい。従って、第１のレンダリング結果のための固有のトークンは、第２のレンダリング結果のトークンと同じである場合（４１０、いいえ）、または固有のトークンの量がトークン閾値を満たさない場合（４１５、はい）、レンダリング結果は類似であると見なされてもよく、およびシステムは、別のテストを実行することを続けてもよい。トークンテストのみを含む実施形態において、システムは、レンダリング結果が類似であると決定するステップを備えたステップ４４５を直接開始してもよい。
【００３６】
いくつかの実施形態において、トークンが同じ（４１０、いいえ）または（４１５、はい）である場合、システムは、アウトリンクを比較してもよい（４２０）。アウトリンクは、別のウェブページへのあるいはレンダリングされたページからの別のドキュメントへのリンクを表す。アウトリンクは、レンダリング結果のDOMツリーのアンカータグノード（<a> タグ）から抽出されてもよい。システムがアウトリンクに差を発見した場合（４２５、はい）、システムは、差が重要であり、かつレンダリング結果は類似でないと見なしてもよい（４３０）。従って、ウェブページはコンテンツニュートラルでないと見なされる。２つのレンダリング結果のアウトリンクが同じである場合（４２５、いいえ）、システムは、レンダリング結果が類似であると見なしてもよく（例えば、ステップ４５０に進むことによって）、あるいは別の類似のテストの実行に進んでもよい。いくつかの実施形態において、システムは、ステップ４０５と４１５の前に、かつ無関係に、ステップ４２０と４２５を実行してもよい。
【００３７】
別の類似のテストにおいて、システムは、レイアウトの主要なコンポーネントを決定してもよい（４３５）。レンダリング結果のレイアウトは、ボックスで構成され、各ボックスはスクリーン座標によって定義されている。一般に、各ボックスは、ウェブページのそれぞれの要素に対応する。例えば、レイアウトは、DOMツリー（全てのDOM要素が対応するレンダリングボックスを有することができるわけではないが）のDOMノードのボックス表示を含むことができる。ボックスは、レンダリングツリーとしても知られる、ツリー構造に編成されることができる。従って、例えば、テーブルは、レイアウトのボックスによって表わされてもよく、およびパラグラフはレイアウトの別のボックスによって表わされてもよい。ウェブページの主要なコンポーネントは、スクリーン座標によって定義されるように、最も大きなボックスを備えたレイアウトのそれらの要素である。いくつかの実施形態において、システムは、セットの主要なコンポーネントの所定の数をいれてもよく、例えば、それによってセットは最も大きな主要なコンポーネントを含む。いくつかの実施形態において、システムは、スクリーンのパーセンテージを構成するセットの主要なコンポーネントを含んでもよい。そのような実施形態において、最大の主要なコンポーネントは、そのパーセンテージよりも多くを要する場合、最大の主要なコンポーネントは、セットの唯一のメンバーであってもよい。いくつかの実施形態において、閾値以上のボックスサイズを有する任意のコンポーネントは、主要なコンポーネントのセットに含まれてもよい。いくつかの実施形態において、システムは、主要なコンポーネントを発見するために、オニオンピーリング（onion peeling）技法を使用してもよい。例えば、レンダリングツリーのルートボックスで開始して、システムは、横型探索を実行してもよく、およびルートボックスの最大の子ボックスを識別してもよい。現在のボックスの最大の子ボックス（例えば、ルートボックスの最大の子ボックス）を発見し、システムは次いで最大の子を選択し、さらに深く進んでもよい。システムは、子ボックスがいずれも支配していないとき、例えば、親のボックス領域の半分にわたって占有しているとき、システムはさらに深く進むことを止めてもよい。システムがさらに深く進むことを止めたとき、主要なコンポーネントは支配する子を有することに失敗したボックスである。
【００３８】
システムは、セットの主要なコンポーネント間の類似スコアを計算してもよい（４４０）。例えば、システムは、主要なコンポーネントボックスの重複スコアを使用してもよい。重複スコアにおいて、システムは、主要なコンポーネントに関して重複領域を計算してもよく、これは第２のレンダリング結果の対応する主要なコンポーネントの領域と重なる、第１のレンダリング結果の主要なコンポーネントの領域を表す。システムは、次いで各主要なコンポーネントの総領域に関する、重複領域の調和平均を表す類似スコアを計算する。例えば、システムは、式
【数１】
0006386089.tif 000002
を使用してもよく、oaは二つのコンポーネント間の重複領域であり、a1は第１のレンダリング結果における主要なコンポーネントボックスの総領域であり、a2は第２のレンダリング結果における主要なコンポーネントボックスの総領域である。もちろん、システムは、スコアを計算するために他の類似のメトリクスを使用してもよい。そのような類似のメトリクスの例は、カッツシミラリティ（Katz similarity）を含むが、それに限定するものではない。類似スコアが、類似閾値を満たす場合（445、はい）、レンダリング結果は、類似であると見なされ、従ってウェブページはコンテンツニュートラルである（４５０）。いくつかの実施形態において、類似閾値は高くてもよい（例えば８０％またはそれ以上）。類似スコアが閾値を満たさない場合（４４５、いいえ）、システムはレンダリング結果が類似していないと見なしてもよい（４３０）。いくつかの実施形態において、類似スコアが類似閾値（４４５、はい）を満たす場合、システムは、図４に図示していないレンダリング結果に基づいた追加の類似のテストを実行してもよい。例えば、システムは、DOMツリーまたはレイアウト、あるいはレンダリング結果の別のコンポーネントについて最長共通部分列（LCS）を計算してもよく、およびレンダリング結果が類似であるか否かを決定するためにLCS値を使用してもよい。例えば、LCSの類似が閾値を満たす場合、システムは、レンダリング結果が類似であると見なしてもよい。レンダリング結果が類似であろうと（４５０）または類似でなかろうと（４３０）、一旦システムが決定すると、プロセス４００は終了する。
【００３９】
図５は、実施形態に従った、最適化されたレンダリングのための情報を提供するプロセス例５００の流れ図である。プロセス５００は、ブラウザのためのサービスとして実行されてもよい。ブラウザは、図１のブラウザ１４０のような、モバイルかまたはフルのクライアントブラウザであることができ、あるいは図１のバッチレンダリングエンジン１２０のような、バッチレンダリングエンジンであることもできる。いくつかの実施形態において、サービスは、クラウドベースのサービスであってもよい。言い換えると、ブラウザは、クラウドベースのサービスにネットワークを介して要求を送信してもよく、これは、ブラウザに応答を提供してもよい。いくつかの実施形態において、サービスは図１のバッチレンダリングシステム１１０のような、サーバ上で実行されてもよい。別の実施形態において、サービスは、ブラウザが動作するコンピューティングデバイスに対してローカルであってもよい。例えば、コンテンツニュートラルURLパターンのデータストアは、ブラウザを動作するコンピューティングデバイスに転送されてもよく、およびサービスは、コンピューティングデバイスで実行されてもよい。いくつかの実施形態において、サービスは、図１のクライアント１８０のような、クライアント上で実行されてもよい。
【００４０】
プロセス５００は、ブラウザからURLを受信するサービスで開始する（５０５）。ブラウザは、モバイルブラウザ、フルブラウザであってもよく、およびクライアント上で動作する、あるいはバッチレンダリングエンジンとして動作してもよい。サービスは、リクエストからのURLがコンテンツニュートラルURLパターンと一致するか否かを決定してもよい（５１０）。いくつかの実施形態において、パターンは、フルURLを表してもよく、それによって、一致は完全な要求されたURLで作られる。いくつかの実施形態において、パターンは、例えば削除されたクエリ文字列を備えた、あるいはワイルドカードによって置き換えられた様々な部分を備えた、部分的なURLを表してもよい。要求されたURLが、コンテンツニュートラルデータストアの少なくとも１つに一致する場合（５１０、はい）、サービスは、URLがコンテンツニュートラルであり、かつスクリプトオフでレンダリングされることができることを示す応答を提供する（５１５）。この指示に応答して、ブラウザは、スクリプトオフでURLをレンダリングしてもよく、処理および帯域幅リソースを節約する。ブラウザは、スクリプトを実行するブラウザ設定がオンであるか否かに関わらず、これを実行してもよい。リクエストされたURLがコンテンツニュートラルデータストアのパターンに一致しない場合（５１０、いいえ）、サービスは、URLが非コンテンツニュートラルであり、およびスクリプトオフでレンダリングされる場合にコンテンツが失われることを示す応答を提供する。この指示に応答して、ブラウザは、スクリプトを実行するブラウザ設定に従ってURLをレンダリングしてもよく、これは、通常スクリプトオンでレンダリングするように設定される。ブラウザがレンダリングプロセスを最適化するために使用できる情報を提供して、次いでプロセス５００は終了する。
【００４１】
図６は、汎用コンピュータデバイス６００の例を示しており、それは、図１のバッチレンダリングシステム１１０、及び／又はクライアント１８０として動作し得、また、本明細書に記載される技法を用いて使用され得る。コンピューティングデバイス６００は、コンピューティングデバイスの種々の形態例、例えば、ラップトップ、デスクトップ、ワークステーション、パーソナルデジタルアシスタント、携帯電話、スマートフォン、タブレット、サーバ、ならびにウェアラブルデバイスを含む他のコンピューティングデバイスなどを表わすことが意図される。本明細書に示される構成要素、それらのつながりや関係、およびそれらの機能は、単なる例であることを意味するものであり、この文書において記載される及び／又は請求される発明の実施形態を限定することを意味するものではない。
【００４２】
コンピューティングデバイス６００は、インターフェース６０８経由で接続される、例えばシリコーンベースのハードウェアプロセッサ等のプロセッサ６０２、メモリ６０４、ストレージデバイス６０６、および拡張ポート６１０を含む。いくつかの実施形態において、コンピューティングデバイス６００は、インターフェース６０８経由で接続される、いくつかある構成要素の中でも、送受信機６４６、通信インターフェース６４４、およびＧＰＳ（全地球測位システム）レシーバモジュール６４８を含み得る。デバイス６００は、通信インターフェース６４４を通して無線で通信し得、それは、必要に応じて、デジタル信号処理回路を含み得る。構成要素６０２、６０４、６０６、６０８、６１０、６４０、６４４、６４６、および６４８のそれぞれは、必要に応じて、一般的なマザーボード上にまたは他の様式で搭載され得る。
【００４３】
プロセッサ６０２は、メモリ６０４内またはストレージデバイス６０６上に記憶された命令を含む、コンピューティングデバイス６００内の実行のための命令を処理することができ、外部入出力デバイス、例えばディスプレイ６１６などの上にＧＵＩのためのグラフィカル情報を表示する。ディスプレイ６１６は、モニタまたはフラットタッチスクリーンディスプレイであり得る。いくつかの実施形態において、複数のプロセッサ及び／又は複数のバスが、必要に応じて、複数のメモリや複数の種類のメモリと共に、使用され得る。また、複数のコンピューティングデバイス６００は、（例えば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして）必要な動作の一部分を提供する各デバイスと、接続され得る。
【００４４】
メモリ６０４は、コンピューティングデバイス６００内に情報を記憶する。一実施形態において、メモリ６０４は、揮発性メモリのユニットまたは複数ユニットである。別の実施形態において、メモリ６０４は、不揮発性メモリのユニットまたは複数ユニットである。メモリ６０４はまた、コンピュータで読み取り可能な媒体の別の形態、例えば磁気もしくは光学ディスクなどであり得る。いくつかの実施形態において、メモリ６０４は、拡張インターフェースを通して提供される拡張メモリを含み得る。
【００４５】
ストレージデバイス６０６は、コンピューティングデバイス６００のためのマスストレージを提供することができる。一実施形態において、ストレージデバイス６０６は、コンピュータで読み取り可能な媒体、例えば、フロッピーディスクデバイス、ハードディスクデバイス、光学ディスクデバイス、またはテープデバイス、フラッシュメモリもしくは他の類似の固体メモリデバイス、あるいはストレージエリアネットワークもしくは他の構成におけるデバイスを含む、デバイスのアレイなどであり得るか、それらを含み得る。コンピュータプログラム製品は、そのようなコンピュータで読み取り可能な媒体に明白に具体化され得る。コンピュータプログラム製品はまた、実行されるときに、例えば上記したものなどの、１つ以上の方法を行う命令を含み得る。コンピュータまたはマシンで読み取り可能な媒体は、ストレージデバイス、例えばメモリ６０４、ストレージデバイス６０６、またはプロセッサ６０２上のメモリなどである。
【００４６】
インターフェース６０８は、コンピューティングデバイス６００のための帯域消費型の動作を扱う高速コントローラ、またはより低い帯域消費型の動作を扱う低速コントローラ、あるいはそのようなコントローラの組み合わせであり得る。外部インターフェース６４０は、他のデバイスとのデバイス６００の近接領域通信を可能にするように、提供され得る。いくつかの実施形態において、コントローラ６０８は、ストレージデバイス６０６および拡張ポート６１４に結合され得る。種々の通信ポート（例えば、ＵＳＢ、ブルートゥース（登録商標）、イーサネット（登録商標）、無線イーサネット）を含み得る拡張ポートは、例えば、ネットワークアダプタを通して、１つ以上の入出力デバイス、例えば、キーボード、ポインティングデバイス、スキャナ、または例えばスイッチもしくはルータなどのネットワーキングデバイスに結合され得る。
【００４７】
コンピューティングデバイス６００は、図面に示されるように、多くの異なる形態で実装され得る。例えば、それは、標準サーバ６３０として、またはそのようなサーバのグループにおいて複数回、実装され得る。それはまた、ラックサーバシステムの一部として実装され得る。加えて、それは、パーソナルコンピュータ、例えばラップトップコンピュータ６３２、デスクトップコンピュータ６３４、またはタブレットあるいはスマートフォン６３６などで実装され得る。システム全体は、互いに通信する複数のコンピューティングデバイス６００で構成され得る。他の構成が可能である。
【００４８】
図７は、汎用コンピュータデバイス７００の例を示しており、それは、図１のシステム１１０であり得るとともに本明細書に記載される技法を用いて使用され得る。コンピューティングデバイス７００は、大規模データ処理デバイス、例えばサーバ、ブレードサーバ、データセンター、メインフレーム、および他の大規模コンピューティングデバイスなどの種々の形態例を表わすことが意図される。コンピューティングデバイス７００は、場合によっては１つ以上の通信ネットワークによって相互接続されるネットワーク接続ストレージノードを含む、複数プロセッサを有する分散型システムであり得る。本明細書に示された構成要素、それらのつながりや関係、およびそれらの機能は、単なる例示であることを意味するものであり、この文書において記載されるか請求される発明の実施形態を限定することを意味するものではない。
【００４９】
分散型コンピューティングシステム７００は、任意の数のコンピューティングデバイス７８０を含み得る。コンピューティングデバイス７８０は、ローカルもしくはワイドエリアネットワーク、専用光学リンク、モデム、ブリッジ、ルータ、スイッチ、有線もしくは無線ネットワーク等の上で通信する、サーバまたはラックサーバ、メインフレーム等を含み得る。
【００５０】
いくつかの実施形態において、各コンピューティングデバイスは、複数のラックを含み得る。例えば、コンピューティングデバイス７８０ａは、複数のラック７５８ａ〜７５８ｎを含む。各ラックは、１以上のプロセッサ、例えばプロセッサ７５２ａ〜７５２ｎおよび７６２ａ〜７６２ｎなどを含み得る。プロセッサは、データプロセッサ、ネットワーク接続ストレージデバイス、および他のコンピュータ制御デバイスを含み得る。いくつかの実施形態において、１つのプロセッサは、マスタープロセッサとして動作し得、スケジューリングおよびデータ分散タスクを管理し得る。プロセッサは、１以上のラックスイッチ７５８を通して相互接続され得、１以上のラックが、スイッチ７７８を通して接続され得る。スイッチ７７８は、複数の接続されたコンピューティングデバイス７００間の通信に対処し得る。
【００５１】
各ラックは、メモリ、例えばメモリ７５４やメモリ７６４など、およびストレージ、例えば７５６および７６６などを含み得る。ストレージ７５６および７６６は、マスストレージを提供し得、揮発性もしくは不揮発性ストレージ、例えばネットワーク接続ディスク、フロッピーディスク、ハードディスク、光学ディスク、テープ、フラッシュメモリもしくは他の類似の固体メモリデバイス、あるいはストレージエリアネットワークまたは他の構成におけるデバイスを含む、デバイスのアレイなどを含み得る。ストレージ７５６または７６６は、複数のプロセッサ、複数のラック、または複数のコンピューティングデバイス間で共有され得、1つ以上のプロセッサによって実行可能な命令を記憶するコンピュータで読み取り可能な媒体を含み得る。メモリ７５４および７６４は、例えば、揮発性メモリのユニットまたは複数ユニット、不揮発性メモリのユニットもしくは複数ユニット、及び／又はコンピュータで読み取り可能な媒体の他の形態、例えば、磁気もしくは光学ディスク、フラッシュメモリ、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、およびそれらの組み合わせなどを含み得る。メモリ、例えばメモリ７５４などはまた、プロセッサ７５２ａ〜７５２ｎ間で共有され得る。索引などのデータ構造は、例えば、ストレージ７５６やメモリ７５４にわたって、記憶され得る。コンピューティングデバイス７００は、図示されない他の構成要素、例えば、コントローラ、バス、入出力デバイス、通信モジュール等を含み得る。
【００５２】
システム１１０などのシステム全体は、互いと通信する複数のコンピュータデバイス７００で構成され得る。例えば、デバイス７８０aは、デバイス７８０ｂ、７８０ｃ、および７８０ｄと通信し得、これらは、集合的にシステム１００として知られ得る。別の例として、図１のシステム１００は、１以上のコンピュータデバイス７００を含み得る。コンピュータデバイスのうちのいくつかは、互いに地理的に近く位置し得、その他は、地理的に離れて位置し得る。コンピュータデバイス７００のレイアウトは、単なる例であり、システムは、他のレイアウトまたは構成を取り得る。
【００５３】
さまざまな実施形態は、ストレージシステム、少なくとも１つの入力デバイス、および少なくとも１つの出力デバイスからデータや命令を受信するように、並びにそれらにデータや命令を送信するように、結合される、特殊目的もしくは一般の目的であり得る、回路基板に形成された少なくとも1つのプログラム可能なプロセッサを含むプログラム可能なシステム上で実行可能または解釈可能である1つ以上のコンピュータプログラムにおける実施形態を含むことができる。
【００５４】
これらのコンピュータプログラム（プログラム、ソフトウェア、ソフトウェアアプリケーション、またはコードとしても知られる）は、プログラム可能なプロセッサに対する機械語命令を含み、高レベル手続言語及び／又はオブジェクト指向プログラミング言語で、ならびに／あるいはアセンブリ／機械言語で実装することができる。本明細書で使用される場合、「機械可読媒体」「コンピュータ可読媒体」という用語は、機械語命令及び／又はデータをプログラム可能なプロセッサに提供するために使用される任意の非一時的コンピュータプログラム製品、装置、及び／又はデバイス（例えば、磁気ディスク、光ディスク、メモリ（読み取り専用メモリを含む）、プログラマブル論理デバイス（PLD））を指す。
【００５５】
本明細書で述べたシステムおよび技術は、バックエンドコンポーネント（例えば、データサーバとして）を含むコンピューティングシステム、またはミドルウェアコンポーネント（例えば、アプリケーションサーバ）を含むコンピューティングシステム、またはフロントエンドコンポーネント（例えば、ユーザが本明細書で述べたシステムおよび技術の実装と相互作用することができるグラフィカルユーザインタフェースまたはウェブブラウザを備えたクライアントコンピュータ）を含むコンピューティングシステム、またはこのようなバックエンド、ミドルウェア、またはフロントエンドコンポーネントの任意の組合せで、実装されることができる。前記システムのコンポーネントは、デジタルデータ通信（例えば通信ネットワーク）の任意の形式または媒体で接続されることができる。通信ネットワークの例としては、ローカルエリアネットワーク（“LAN”）、ワイドエリアネットワーク（“WAN”）、およびインターネットを含む。
【００５６】
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントおよびサーバは、通常、相互に離れており、および通常は、通信ネットワークを通じて相互作用する。クライアントとサーバの関係は、それぞれのコンピュータ上で動作し、互いにクライアント−サーバ関係を有するコンピュータプログラムの効力によって生じる。
【００５７】
多くの実施形態が説明されてきた。それにもかかわらず、本発明の精神および範囲から逸脱することなく、さまざまな変更がなされ得る。さらに、図に示された論理フローは、望ましい結果を達成するために、図示された特定の順序または連続する順序である必要はない。さらに、他のステップを設けても、または記載されたフローから複数のステップを除いてもよく、また、記載されたシステムに他の要素を追加してもよく、またはそこから除去してもよい。従って、他の実施形態は、添付の特許請求の範囲に含まれる。
【符号の説明】
【００５８】
１１０  バッチレンダリングシステム
１２０  バッチレンダリングエンジン
１２２  フェッチサービス
１２４  ウェブ巡回エンジン
１２６  コンテンツニュートラルURL識別エンジン
１３０  コンテンツニュートラルURLパターン
１３２  フェッチレコード
１４０  ブラウザ
１６０  ネットワーク
１８０  クライアント
１９０  サーバ
２００  レンダリング結果
２０５  イメージ
２１０  DOMツリー
２１５  レイアウト
２２０  エラー
２２５  埋め込みリソース
【図１】
0006386089.tif 000003
【図２】
0006386089.tif 000004
【図３】
0006386089.tif 000005
【図４】
0006386089.tif 000006
【図５】
0006386089.tif 000007
【図６】
0006386089.tif 000008
【図７】
0006386089.tif 000009