JP6568985B2 - Batch optimized rendering and fetch architecture - Google Patents

Batch optimized rendering and fetch architecture Download PDF

Info

Publication number
JP6568985B2
JP6568985B2 JP2018111739A JP2018111739A JP6568985B2 JP 6568985 B2 JP6568985 B2 JP 6568985B2 JP 2018111739 A JP2018111739 A JP 2018111739A JP 2018111739 A JP2018111739 A JP 2018111739A JP 6568985 B2 JP6568985 B2 JP 6568985B2
Authority
JP
Japan
Prior art keywords
task
rendering
content
embedded
web page
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018111739A
Other languages
Japanese (ja)
Other versions
JP2018160264A (en
Inventor
ハオ・ファン
エリック・アルジャン・ヘンドリクス
フイ・シュ
クリスティアン・タプス
ルペシュ・カプア
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Priority to JP2018111739A priority Critical patent/JP6568985B2/en
Publication of JP2018160264A publication Critical patent/JP2018160264A/en
Application granted granted Critical
Publication of JP6568985B2 publication Critical patent/JP6568985B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Transfer Between Computers (AREA)

Description

本発明は、バッチ最適化レンダリング及びフェッチアーキテクチャに関する。   The present invention relates to a batch optimized rendering and fetch architecture.

ワールドワイドウェブは、情報が豊富である。今日では、1兆以上のユニークなウェブページがあると推定されている。これらのページの多くは、例えばNew York Timesのホームページなどに動的に作成され、レンダリングされたウェブページのコンテンツや外観に効果を与えることができる、画像やビデオのような埋め込みコンテンツへのリンクを有する。例えば、ブラウザがJavaScript(登録商標、以下同じ)コードのようなスクリプトを実行するとき、これはブラウザがウェブページのレンダリングを完了した後に、ウェブページがユーザに対してどのように見えるかに影響を与え、ページのコンテンツ及び/又は外観を変更することができる。別の例として、いくつかのウェブページは、テキストの見た目を変える方法をブラウザに指示するスタイルシートを使用する。典型的なウェブページは、そのような追加の埋め込みアイテムのハンドラを有することができ、そのいくつかはブラウザレンダリングエンジンのために特別に設計されるか、あるいはブラウザレンダリングエンジンに向けられている。レンダリングプロセスによって生成された追加の情報は、インターネット検索エンジンのような、ダウンストリームシステムに役立つことができる。単一のユーザのウェブブラウザのために、リアルタイムで単一のウェブページをレンダリングすることは比較的容易であるが、ましてやワールドワイドウェブ上の全てのページ(1兆ページ)のように多数のページをレンダリングすること、あるいはワールドワイドウェブ(100億ページ)上の上位1%だけをリアルタイムでレンダリングすることは難しい。   The World Wide Web is rich in information. Today, it is estimated that there are over 1 trillion unique web pages. Many of these pages are dynamically created on the New York Times home page, for example, and include links to embedded content such as images and videos that can affect the content and appearance of the rendered web page. Have. For example, when a browser executes a script such as JavaScript code, this will affect how the web page will look to the user after the browser has finished rendering the web page. And can change the content and / or appearance of the page. As another example, some web pages use style sheets that tell the browser how to change the appearance of the text. A typical web page can have handlers for such additional embedded items, some of which are specifically designed for or directed to the browser rendering engine. Additional information generated by the rendering process can be useful for downstream systems, such as Internet search engines. Rendering a single web page in real time for a single user's web browser is relatively easy, but many more pages, like all the pages on the World Wide Web (1 trillion pages) Or rendering only the top 1% on the World Wide Web (10 billion pages) in real time.

実施形態は、ウェブページインデックスシステムのような、ダウンストリームユーザのためのウェブページのバッチレンダリングのために最適化されたレンダリングサーバおよびフェッチサーバを含む。ダウンストリームユーザは、1つまたは複数の埋め込みアイテムを有するウェブページ(例えば、そのURLを使用して)を識別するとき、ダウンストリームユーザはレンダリングサーバがレンダリング結果を生成するためにURLをレンダリングすることを要求してもよい。レンダリングサーバは、多数の(例えば、何万もの)レンダリングエンジンを含むことができる。各レンダリングエンジンは、多くのレンダリングエラーを排除するバッチレンダリングのために最適化されたブラウザカーネルをシミュレートする。レンダリングの間、レンダリングエンジンは埋め込みアイテムを発見すると、レンダリングエンジンはフェッチサーバから埋め込みアイテムを要求する。フェッチサーバは、各埋め込みアイテム(例えば、そのURL)のための識別子と、ウェブクローラ(web-crawler)によって検索されたアイテムのためのコンテンツとによって適合された埋め込みアイテムのデータストアを含む。埋め込みアイテムのためのデータストアを探す前に、フェッチサーバは書き換え規則を使用してURLを書き換えてもよい。URのためのコンテンツが別の埋め込みアイテム(例えば、リダイレクトURLによって表される)と重複しているとき、書き換え規則は、URLをリダイレクトURLと置き換えてもよい。要求された埋め込みアイテムが重複している場合、フェッチサーバは、リダイレクトURを使用するようにURLを書き換えてもよく、これは要求されたURLのためのコンテンツをフェッチする代わりに、リダイレクトURLのための既に検索されたコンテンツを使用できるようにする。このような重複排除方法は、フェッチサーバによって作られるクロール要求の実際の数を劇的に減少することができ、レンダリングエンジンの応答時間を向上することができる。書き換え規則は、URLがブラックリストに載せられていることを示してもよい。いくつかの実施形態において、フェッチサーバは、埋め込まれた画像の実際のコンテンツではなく、サイズを格納してもよい。レンダリングエンジンが画像を要求したとき、フェッチサーバが画像のサイズを有するモック画像を生成し、モック画像をレンダリングエンジンに返してもよい。レンダリングエンジンがウェブページのレンダリングを完了しているとき、レンダリング結果をウェブページの処理を向上するためにレンダリング結果の情報を使用することができる、インデックスエンジンのようなダウンストリームユーザに提供してもよい。   Embodiments include a rendering server and a fetch server optimized for batch rendering of web pages for downstream users, such as a web page indexing system. When a downstream user identifies a web page (eg, using its URL) that has one or more embedded items, the downstream user renders the URL for the rendering server to generate a rendering result. May be requested. A rendering server can include multiple (eg, tens of thousands) rendering engines. Each rendering engine simulates a browser kernel optimized for batch rendering that eliminates many rendering errors. During rendering, when the rendering engine finds an embedded item, the rendering engine requests the embedded item from the fetch server. The fetch server includes an embedded item data store matched by an identifier for each embedded item (eg, its URL) and content for items retrieved by a web-crawler. Prior to looking for a data store for an embedded item, the fetch server may rewrite the URL using rewrite rules. When the content for the UR overlaps with another embedded item (eg, represented by a redirect URL), the rewrite rule may replace the URL with the redirect URL. If the requested embedded item is a duplicate, the fetch server may rewrite the URL to use the redirect UR, which instead of fetching the content for the requested URL, Make the already searched content available for. Such a deduplication method can dramatically reduce the actual number of crawl requests made by the fetch server and can improve the response time of the rendering engine. The rewrite rule may indicate that the URL is blacklisted. In some embodiments, the fetch server may store the size rather than the actual content of the embedded image. When the rendering engine requests an image, the fetch server may generate a mock image having the size of the image and return the mock image to the rendering engine. When the rendering engine has finished rendering the web page, it can also provide the rendering result to downstream users, such as an index engine, that can use the rendering result information to improve the processing of the web page. Good.

1つの態様において、コンピュータシステムは、少なくとも1つのプロセッサと、メモリと、を含むコンピュータシステムであって、メモリが、埋め込みアイテムのためのコンテンツのデータストアと、少なくとも1つのプロセッサによって実行されたときにシステムに動作を行わせる命令を格納する。該動作は、バッチプロセスから、ウェブページをレンダリングするための要求を受信することと、ウェブページの埋め込みアイテムを識別することと、を含む。該動作は、書き換え規則に基づいて、前記埋め込みアイテムが以前にフェッチされた埋め込みアイテムのためのコンテンツの重複であるコンテンツを有すると判定することと、判定に応答して、データストアから前記以前にフェッチされた埋め込みアイテムのための前記コンテンツを提供することと、以前にフェッチされた埋め込みアイテムのための前記コンテンツを使用して、前記ウェブページについてのレンダリング結果を生成することと、およびバッチプロセスにレンダリング結果を提供することと、も含む。   In one aspect, a computer system includes at least one processor and a memory when the memory is executed by a content data store for an embedded item and at least one processor. Stores instructions that cause the system to perform operations. The operations include receiving a request to render a web page from a batch process and identifying an embedded item on the web page. The operation determines, based on rewrite rules, that the embedded item has content that is a duplicate of content for a previously fetched embedded item, and in response to the determination, from the data store Providing the content for a fetched embedded item, generating rendering results for the web page using the content for a previously fetched embedded item, and a batch process Providing rendering results.

本明細書に記載される主題の1つ又は複数の実施形態は、以下の特徴の内の1つ又は複数を含むことができる。例えば、埋め込みアイテムが以前にフェッチされた埋め込みアイテムのためのコンテンツの重複であるコンテンツを有すると判断することは、書き換え規則のテンプレートに前記埋め込みアイテムを照合させることを含み、書き換え規則がリダイレクト識別子を含むことができる。このような実施形態において、以前にフェッチされた埋め込みアイテムのための前記コンテンツを提供することが、以前にフェッチされた埋め込みアイテムのための前記コンテンツ及び/又はクエリ文字列なしでURLを含んでもよいテンプレートを示すための前記リダイレクト識別子を使用することを含む。   One or more embodiments of the subject matter described in this specification can include one or more of the following features. For example, determining that an embedded item has content that is a duplicate of content for a previously fetched embedded item includes matching the embedded item to a rewrite rule template, wherein the rewrite rule includes a redirect identifier. Can be included. In such embodiments, providing the content for previously fetched embedded items may include a URL without the content and / or query string for previously fetched embedded items. Using the redirect identifier to indicate a template.

他の例として、埋め込みアイテムは、第1の埋め込みアイテムであり、かつ動作がウェブページの第2の埋め込みアイテムを識別することを含んでもよく、前記第2の埋め込みアイテムがブラックリストに載せられているか否かを判断し、第2の埋め込みアイテムが第2の埋め込みアイテムのためのフェッチコンテンツなしでブラックリストに載せられているとき、エラーを返し、および第2の埋め込みアイテムのためのコンテンツなしでレンダリング結果を生成することを含んでもよい。別の例として、レンダリング結果を生成するとき、動作が仮想時計の使用を含んでもよく、仮想時計はリアルタイムとは無関係に進む。別の例において、レンダリング結果を生成するとき、動作が仮想時計の使用を含んでもよく、仮想時計が以前にフェッチされた埋め込みアイテムの提供されたコンテンツを待つ間に進行しない。   As another example, the embedded item may be a first embedded item and the action may include identifying a second embedded item on the web page, wherein the second embedded item is blacklisted. If the second embedded item is blacklisted with no fetch content for the second embedded item, returns an error, and no content for the second embedded item It may include generating a rendering result. As another example, when generating a rendering result, the action may include the use of a virtual clock, which proceeds independently of real time. In another example, when generating a rendering result, the action may include the use of a virtual clock and does not proceed while the virtual clock waits for the provided content of the previously fetched embedded item.

他の例として、埋め込みアイテムは第1の埋め込みアイテムであってもよく、動作がウェブページの第2の埋め込みアイテムを識別することと、第2の埋め込みアイテムが画像を含むことを判断することと、サイズテーブルを使用して、第2の埋め込みアイテムのためのサイズを指定するモック画像を生成することと、レンダリング結果を生成するときにモック画像を使用することと、を含んでもよい。   As another example, the embedded item may be a first embedded item, the action identifying a second embedded item on the web page, and determining that the second embedded item includes an image. , Using a size table to generate a mock image that specifies a size for the second embedded item and using the mock image when generating a rendering result.

別の態様において、コンピュータ実装された方法は、ウェブページをレンダリングするための要求をバッチプロセスから受信するステップと、仮想時計とウェブページをレンダリングするためのタスクリストを初期化するステップであって、仮想時計が、埋め込みアイテムのための要求が未処理であるときかつタスクが準備完了であるとき、依然として停止している、初期化するステップと、を含む。該方法はまた、仮想時計がタスクリストの停止タスクのためのランタイムに一致するとき、ウェブページのためのレンダリング結果を生成するステップと、バッチプロセスのためのレンダリング結果を生成するステップと、を含む。   In another aspect, a computer-implemented method includes receiving a request to render a web page from a batch process, and initializing a virtual clock and a task list for rendering the web page, The virtual clock includes an initialization step that is still stopped when a request for an embedded item is outstanding and the task is ready. The method also includes generating a rendering result for the web page and generating a rendering result for the batch process when the virtual clock matches the runtime for the stop task in the task list. .

本明細書に記載される主題の1つ又は複数の実施形態は、以下の特徴の内の1つ又は複数を含むことができる。例えば、タスクリストを初期化するステップが、ランタイムセットを備えた停止タスクを仮想時計に追加された所定の時間に追加するステップを含んでもよい。所定の時間は少なくとも5秒であってもよい。別の例として、該方法は、埋め込みアイテムに対する要求が未処理ではない、かつ仮想時計よりも大きいランタイムを有するただ一つのタスクがタスクリストにあるとき、仮想時計をタスクリスト内のタスクのランタイムに進めるステップをさらに含んでもよい。別の例として、該方法は、ウェブページの埋め込み画像を識別するステップと、埋め込み画像のためのコンテンツを要求するステップと、要求に応答して、埋め込み画像のためにサイズを指定するが、空のコンテンツを有するモック画像を受信するステップと、レンダリング結果を生成するときにモック画像を使用するステップと、を含んでもよい。別の例として、バッチプロセスは、インデックスエンジンであってもよく、かつ該方法は、レンダリング結果の情報に基づいて、ウェブページのためのランクを降格させるステップをさらに含み、及び/又は動的に生成されたコンテンツにインデックスを付けるためにレンダリング結果を使用するステップをさらに含む。   One or more embodiments of the subject matter described in this specification can include one or more of the following features. For example, initializing the task list may include adding a stopped task with a runtime set at a predetermined time added to the virtual clock. The predetermined time may be at least 5 seconds. As another example, the method uses a virtual clock to the runtime of a task in the task list when a request for an embedded item is not outstanding and there is only one task in the task list that has a runtime greater than the virtual clock. A further step may be included. As another example, the method includes identifying an embedded image of a web page, requesting content for the embedded image, and specifying a size for the embedded image in response to the request, but empty. Receiving a mock image having the content of and using the mock image when generating a rendering result. As another example, the batch process may be an index engine and the method further includes demoting a rank for the web page based on rendering result information and / or dynamically The method further includes using the rendering result to index the generated content.

別の態様において、方法は、ウェブページ内の埋め込みアイテムのユニフォームリソースロケータ(URL)のためのバッチレンダリングプロセスから要求を受信するステップと、書き換えられたURLを判断する書き換え規則を適用するステップを含む。該方法は、書き換えられたURLのためのコンテンツがデータストアに存在するか否かを判断するステップと、コンテンツが存在するとき、コンテンツを前記バッチレンダリングプロセスに提供するステップを含んでもよい。コンテンツが存在しないとき、該方法は、コンテンツのフェッチを初期化し、ここでバッチレンダリングプロセスがフェッチの間にタイムアウトなしで待機するように構成される、初期化するステップと、ウェブ巡回エンジンからコンテンツを受信するステップと、バッチレンダリングプロセスのためのコンテンツを提供するステップと、データストアのコンテンツを保存するステップを含んでもよい。コンテンツは、ウェブページのレンダリング結果をウェイ請求項するためにバッチレンダリングプロセスによって使用されてもよい。   In another aspect, a method includes receiving a request from a batch rendering process for a uniform resource locator (URL) of an embedded item in a web page and applying a rewrite rule that determines the rewritten URL. . The method may include determining whether content for the rewritten URL exists in the data store and providing the content to the batch rendering process when the content is present. When content is not present, the method initializes content fetching, wherein the batch rendering process is configured to wait without timeout between fetches, and content from the web patrol engine. Receiving, providing content for a batch rendering process, and storing data store content. The content may be used by a batch rendering process to claim a web page rendering result.

本明細書に記載される主題の1つ又は複数の実施形態は、以下の特徴の内の1つ又は複数を含むことができる。例えば、書き換え規則を適用するステップは、URLをリダイレクトURLと関連しているテンプレートに照合させるステップを含んでもよく、ここでURLがテンプレートに一致するとき、前記リダイレクトURLが、書き換えられたURLであると判断され、およびURLがテンプレートに一致しないとき、URLが書き換えられたURLであると判断される。別の例として、該方法は、変更率またはデータストアに保存された埋め込みアイテムのタイプに基づいて、書き換えられたURLのための前記コンテンツが古いと判断するステップと、書き換えられたURLのためのコンテンツが古いと判断するステップに応答して、ウェブ巡回エンジンから更新されたコンテンツを受信するステップと、更新されたコンテンツを備えたデータストアを更新するステップと、書き換えられたURLのためのコンテンツとして、更新されたコンテンツを提供するステップを含んでもよい。   One or more embodiments of the subject matter described in this specification can include one or more of the following features. For example, the step of applying the rewrite rule may include the step of matching the URL to a template associated with the redirect URL, where the redirect URL is the rewritten URL when the URL matches the template. When the URL does not match the template, it is determined that the URL is a rewritten URL. As another example, the method may determine that the content for a rewritten URL is stale based on the rate of change or the type of embedded item stored in the data store; In response to determining that the content is stale, receiving updated content from the web patrol engine, updating the data store with the updated content, and content for the rewritten URL Providing updated content may also be included.

別の態様として、コンピュータシステムは、少なくとも1つのプロセッサと、画像識別によって格納されたサイズのテーブルおよび少なくとも1つのプロセッサによって実行されたときにシステムに動作を行わせる命令を保存するメモリと、含む。該動作は、ウェブページの埋め込みアイテムを識別することと、サイズのテーブルから埋め込み画像のためのサイズを判断し、サイズを使用してモック画像を生成することと、を含むことができる。該動作は、モック画像を使用してウェブページのためのレンダリング結果を生成することを含んでもよい。   In another aspect, a computer system includes at least one processor and a memory that stores a table of sizes stored by image identification and instructions that, when executed by the at least one processor, cause the system to perform an action. The operations may include identifying an embedded item on the web page, determining a size for the embedded image from a size table, and using the size to generate a mock image. The operation may include generating a rendering result for the web page using the mock image.

別の態様として、コンピュータ実装された方法は、ウェブページをレンダリングするための要求をバッチプロセスから受信するステップと、ウェブページの少なくとも1つの埋め込み画像を識別するステップと、を含む。該方法は、フェッチサーバからモック画像を受信するステップと、モック画像を使用してウェブページのためのレンダリング結果をレンダリングするステップも含み、モック画像は埋め込み画像のサイズと空のコンテンツを有する。いくつかの実施形態において、該方法は、レンダリング結果をウェブページを要求したバッチプロセスに提供してもよい。   In another aspect, a computer-implemented method includes receiving a request for rendering a web page from a batch process and identifying at least one embedded image of the web page. The method also includes receiving a mock image from the fetch server and using the mock image to render a rendering result for the web page, the mock image having an embedded image size and empty content. In some embodiments, the method may provide rendering results to a batch process that requested a web page.

別の態様において、非一時的コンピュータ可読媒体は、コンピュータシステムに1つ又は複数の上述した方法を実行させる、回路基板に形成された少なくとも1つのプロセッサによって実行可能な命令を含んでもよい。   In another aspect, a non-transitory computer readable medium may include instructions executable by at least one processor formed on a circuit board to cause a computer system to perform one or more of the above-described methods.

本明細書に記載される主題の1つまたは複数の実施形態は、1つまたは複数の以下の利点を実現するように実装されることができる。一例として、バッチレンダリングエンジンが入力デバイス(例えば、キーボード、マウス)あるいは出力デバイス(例えば、ディスプレイ、タッチスクリーンなど)に結合されていないため、レンダリングエンジンは、例えばユーザフレンドリーなAPIではなくマシンフレンドリーなAPIを有する、実際のブラウザレンダラ(browser renderer)よりも簡素で洗練されたものにすることができる。また、レンダリングエンジンは、レンダリングされた最終ページを表示する、あるいはユーザと対話する必要がないので、レンダリングエンジンは、実際の時間ではなく終了したタスクに基づいて進む仮想時計を使用することができ、これはレンダリングプロセスの処理速度を上げ、および一般的なエラーを避けることができる。例えば、バッチ環境でのフェッチは、個人のウェブ環境よりもはるかに遅くなることがあり、多くのタイムアウトエラーを引き起こす可能性がある。仮想時計は、フェッチ待ち時間を隠し、タイムアウトエラーを回避する。仮想時計は、より確定的な結果も可能にする。例えば、日付/時刻コンポーネントを含むURLにおいて、日付/時刻コンポーネントを固定された時間に置き換えるのではなく、システムは仮想時計の値を使用してもよい。これは、ウェブページのすべての時間パラメータが同じ値を有するわけではないが、ウェブページがレンダリングされるたびに特定の時間パラメータが同じ値を有することを意味する。この柔軟性は、システムが時間を進めることを可能にし、これはレンダリングされた結果の正確性のためにいくつかのウェブページにおいて重要であるが、要求された一連のURLがレンダリング全体で同じまままであることが常に保証される(クロール要求を少なくする)。システムは、例えばブラックリストに載せられたアイテムのような不要なアイテムをフェッチすることを回避してもよい。画像の実際のコンテンツではなく、画像のためのサイズを保存することは、フェッチサーバにおいて画像のためのストレージ要件を削減し、レンダリングエンジンに転送されるデータが少なくて済み、およびレンダリングエンジンでレンダリング時間がさらに向上する。URLを書き換えることは、重複したコンテンツをフェッチすることを回避し、バッチレンダリングプロセスをさらに高速にする。   One or more embodiments of the subject matter described in this specification can be implemented to realize one or more of the following advantages. As an example, since the batch rendering engine is not coupled to an input device (e.g., keyboard, mouse) or output device (e.g., display, touch screen, etc.), the rendering engine may be a machine friendly API rather than a user friendly API, for example. Can be simpler and more sophisticated than an actual browser renderer. Also, since the rendering engine does not need to display the final rendered page or interact with the user, the rendering engine can use a virtual clock that progresses based on the finished task rather than the actual time, This speeds up the rendering process and avoids common errors. For example, fetching in a batch environment can be much slower than in a personal web environment and can cause many timeout errors. The virtual clock hides fetch latency and avoids timeout errors. Virtual clocks also allow for more definitive results. For example, instead of replacing a date / time component with a fixed time in a URL that includes a date / time component, the system may use the value of a virtual clock. This means that not all time parameters of a web page have the same value, but every time a web page is rendered, a particular time parameter has the same value. This flexibility allows the system to advance the time, which is important in some web pages for the accuracy of the rendered results, but the requested set of URLs remains the same throughout the rendering. Is always guaranteed (reduces crawl requests). The system may avoid fetching unnecessary items such as blacklisted items. Saving the size for the image rather than the actual content of the image reduces storage requirements for the image at the fetch server, requires less data to be transferred to the rendering engine, and render time in the rendering engine Is further improved. Rewriting the URL avoids fetching duplicate content and makes the batch rendering process even faster.

開示された主題に従ったシステム例を図示する。1 illustrates an example system in accordance with the disclosed subject matter. 埋め込みアイテムを有するウェブページのブロック図である。It is a block diagram of the web page which has an embedded item. 実施形態に従った、バッチレンダリングエンジンのブロック図である。FIG. 2 is a block diagram of a batch rendering engine according to an embodiment. 実施形態に従った、バッチレンダリングエンジンが、埋め込みオブジェクトを備えたウェブページをレンダリングすることができるプロセス例を図示する流れ図である。4 is a flow diagram illustrating an example process by which a batch rendering engine may render a web page with embedded objects, according to an embodiment. 実施形態に従った、バッチレンダリングエンジンが、仮想時計を進めるプロセス例を図示する流れ図である。4 is a flow diagram illustrating an example process by which a batch rendering engine advances a virtual clock, according to an embodiment. 実施形態に従った、フェッチサーバが埋め込みアイテムのためのコンテンツをバッチレンダリングエンジンに提供するプロセス例を図示する流れ図である。3 is a flow diagram illustrating an example process for a fetch server to provide content for an embedded item to a batch rendering engine, according to an embodiment. 実施形態に従った、フェッチサーバがモック画像をバッチレンダリングエンジンに提供するプロセス例を図示する流れ図である。6 is a flow diagram illustrating an example process in which a fetch server provides mock images to a batch rendering engine, according to an embodiment. 開示した技術を実装するために使用されることができるコンピュータデバイスの例を示す。6 illustrates an example of a computing device that can be used to implement the disclosed technology. 開示した技術を実装するために使用されることができる分散型コンピュータデバイスの例を示す。6 illustrates an example of a distributed computing device that can be used to implement the disclosed technology.

ウェブページを完全にレンダリングするために、ウェブページの全ての埋め込み外部リソースのコンテンツを最初に取得する必要がある。そのようなリソースは、外部画像、JavaScriptコード、およびスタイルシートを含むが、これらに限定はしない。しばしば、同じ外部リソースが多くの異なるウェブページに埋め込まれている。単一のユーザのウェブブラウザがGoogle Analytics JavaScriptコードのような外部ウェブページリソースをリアルタイム(すなわち、リソースが埋め込まれたウェブページがレンダリングされたとき)で要求することは効率的であるが、バッチレンダリングエンジンがそうすることは実現可能でも効率的でもない。例えば、ウェブページインデックスプロセスのためのバッチレンダリングエンジンは、効率的かつ迅速に、一度に多数のウェブページを素早くレンダリングするように設計されている。しかし、埋め込み外部リソースをフェッチすることは、遅くなる可能性があり、そのようなリソースはバッチ処理の目的(例えば、人間のユーザが最終的にレンダリングされた製品を見ることなしに)のために重要ではないことがある。バッチ環境においてウェブページをレンダリングする処理時間を改善するために、レンダリングエンジンは、仮想時計を使用して動作し、重複および不要なフェッチを避けるためにフェッチサーバと連動し、および視覚の処理あるいはウェブページにおける他のユーザ指向の要素を最小限にしてもよい。   In order to fully render a web page, the content of all embedded external resources of the web page must first be obtained. Such resources include, but are not limited to, external images, JavaScript code, and style sheets. Often, the same external resource is embedded in many different web pages. While it is efficient for a single user's web browser to request external web page resources such as Google Analytics JavaScript code in real time (ie when a web page with embedded resources is rendered), batch rendering It is neither feasible nor efficient that the engine does. For example, a batch rendering engine for the web page indexing process is designed to quickly render a large number of web pages at once, efficiently and quickly. However, fetching embedded external resources can be slow, and such resources are for batch processing purposes (eg, without a human user seeing the final rendered product) It may not be important. To improve the processing time of rendering web pages in a batch environment, the rendering engine works with a virtual clock, works with a fetch server to avoid duplication and unnecessary fetching, and visual processing or web Other user-oriented elements on the page may be minimized.

図1は、実施形態例に従ったシステムのブロック図である。システム100は、要求プロセスのためにバッチモードでウェブページを効率よく迅速にレンダリングするために使用されてもよい。システム100に図示される要求プロセスは、インターネット検索エンジンのためのインデックスエンジンであるが、実装はレンダリングされたウェブページのダウンストリームユーザとしてのインデックスエンジンに限定しない。例えば、要求プロセスは、ページを分析して遅さを障害追跡する分析エンジンであってもよく、あるいはGoogle Analyticsのようなツールが正しくセットアップされているかを判断する分析エンジンであってもよく、または広告システム、または複雑なウェブページとの、例えばフォームの記入や要素のクリックなどの自動対話に依存する別のシステムであってもよい。したがって、システム100は、インデキシングのためにバッチ生成されたレンダリング結果を使用するものとして説明されてもよく、システム100は、レンダリング結果で提供される情報が有用である他のバッチシステムのために使用されることができる。   FIG. 1 is a block diagram of a system according to an example embodiment. System 100 may be used to efficiently and quickly render web pages in batch mode for a request process. The request process illustrated in system 100 is an index engine for an Internet search engine, but implementations are not limited to the index engine as a downstream user of the rendered web page. For example, the request process may be an analysis engine that analyzes the page and troubleshoots delay, or an analysis engine that determines whether a tool like Google Analytics is set up correctly, or It may be an advertising system or another system that relies on automated interaction with complex web pages, such as filling out forms and clicking on elements. Accordingly, system 100 may be described as using batch generated rendering results for indexing, and system 100 may be used for other batch systems where the information provided in the rendering results is useful. Can be done.

システム100は、コンピューティングデバイスであってもよく、あるいは多くの異なるデバイスの形を有するデバイスであってもよい。例えば、システム100は、巣単打オードサーバ、そのようなサーバのグループ、クライアントサーバシステム、あるいはラックサーバシステムであってもよい。さらに、システム100は、パーソナルコンピュータで実装されてもよい。システム100は、図8で図示するような、コンピュータデバイスの例800、あるいは図9で図示するようなコンピュータデバイス900であってもよい。   System 100 may be a computing device or a device having many different device forms. For example, the system 100 may be a nest-shot server, a group of such servers, a client server system, or a rack server system. Further, the system 100 may be implemented with a personal computer. The system 100 may be a computer device example 800 as illustrated in FIG. 8, or a computer device 900 as illustrated in FIG.

システム100は、ウェブ巡回エンジン130、インデックスエンジン110のような要求プロセス、レンダリングサーバ140、およびフェッチサーバ150を含む。ウェブ巡回エンジン130、レンダリングサーバ140、およびフェッチサーバ150は、ワールドワイドウェブ上に見られるウェブページのような多数のウェブページを効率的にレンダリングするためにともに動作してもよい。   The system 100 includes a web patrol engine 130, a request process such as an index engine 110, a rendering server 140, and a fetch server 150. Web patrol engine 130, rendering server 140, and fetch server 150 may work together to efficiently render a large number of web pages, such as web pages found on the World Wide Web.

インデックスエンジン100は、インデックス115を作成するために、1つまたは複数の機械実行可能な命令またはソフトウェアの一部、ファームウェア、またはそれらの組合せを実行するように構成された1つ又は複数のプロセッサを含むことができる。たとえば、インデックスエンジン110は、ウェブ巡回エンジン130を介してサーバから情報を受信してもよい。インデックスエンジン110は、インデックス115を生成するために受信したウェブページのコンテンツを処理してもよい。サーバ190は、1つまたは複数のウェブページまたは1つ又は複数のウェブページに埋め込まれたリソースをホストするインターネットを介してアクセス可能な任意のタイプのコンピューティングデバイスであってもよい。巡回エンジン130によってアクセスされるウェブページは、スタイルシート、Java Script、画像などの埋め込みアイテムを含んでもよく、そのうちのいくつかは、レンダリングされたウェブページのコンテンツおよびレイアウトを変更してもよい。インデックスエンジン110は、巡回エンジン130を介して提供されたものにインデックス付けができるが。インデックスエンジンは、レンダリングサーバ140に、レイアウト情報およびインデックスエンジン110にそれ以外は利用できない動的コンテンツを含むブラウザレンダリングされたウェブページのレンダリング結果を提供するように要求することができる。インデックスエンジン110は、インデックス115のドキュメントについて利用可能な情報を向上するためにレンダリング結果コンテンツを使用することができる。例えば、インデックスエンジン110は、ウェブページの画像のテキストの位置あるいはサイズに基づいて、ウェブページのテキスト要素のランクを変更してもよい。例として、一大ニュースを表すテキスト(例えば、スクロールなしで見ることができる)は、広告のテキストよりもより重要であると考えられ得る。別の例として、広告内のテキストは、ウェブページにとってあまり重要ではないと考えられ得る。さらに、いくつかのコンテンツが動的に生成されるとき、例えばウェブページがレンダリングされるまで利用可能でないとき、インデックスエンジン110は、レンダリング結果を動的に生成されたコンテンツをインデックス付けするために使用してもよい。簡潔にするために図1には示されていないが、いくつかの実施形態において、インデックスエンジン110は、1つまたは複数の別個のコンピューティングデバイスに分散されてもよい。   Index engine 100 includes one or more processors configured to execute one or more machine-executable instructions or pieces of software, firmware, or combinations thereof to create index 115. Can be included. For example, the index engine 110 may receive information from the server via the web patrol engine 130. The index engine 110 may process the content of the received web page to generate the index 115. Server 190 may be any type of computing device accessible via the Internet that hosts one or more web pages or resources embedded in one or more web pages. Web pages accessed by the patrol engine 130 may include embedded items such as style sheets, Java Scripts, images, etc., some of which may change the content and layout of the rendered web page. The index engine 110 can index what is provided via the patrol engine 130. The index engine can request the rendering server 140 to provide rendering results for a browser-rendered web page that includes layout information and dynamic content otherwise not available to the index engine 110. The index engine 110 can use the rendered result content to improve the information available about the documents in the index 115. For example, the index engine 110 may change the rank of the text element of the web page based on the text position or size of the image of the web page. As an example, text that represents a major news (eg, can be viewed without scrolling) may be considered more important than the text of an advertisement. As another example, the text in an advertisement may be considered less important for a web page. In addition, when some content is dynamically generated, for example when the web page is not available until it is rendered, the index engine 110 uses the rendering results to index the dynamically generated content. May be. Although not shown in FIG. 1 for the sake of brevity, in some embodiments the index engine 110 may be distributed across one or more separate computing devices.

インデックスエンジン110と同様に、クエリエンジン120は、例えば従来または別の情報検索技術を使用して、クエリ182の検索結果を識別するためにインデックス115を使用する1つ又は複数のサーバを含んでもよい。クエリエンジン120は、クライアント180のようなリクエスタからクエリ182を受信する1つまたは複数のサーバを含んでもよい。クエリエンジン120は、インデックス115を使用して、クエリに応答してドキュメントを識別してもよく、および検索結果184として応答ドキュメントからの情報をリクエスタに提供してもよい。いくつかの実施形態において、クエリエンジン120は、検索結果184の一部としてサムネイルを提供するために、レンダリング結果データストア148のレンダリング結果を使用してもよい。クエリエンジン120は、例えば、1つまたは複数のランク付け信号を使用して、クエリに応答してドキュメントのためのスコアを計算するランク付けエンジンを含んでもよい。1つまたは複数のランク付け信号は、ドキュメントに関連するレンダリング結果から取得されたコンテンツに基づくことができる。ランク付けエンジンは、スコアを使用してクエリに応答して見つかったドキュメントをランク付けしてもよい。   Similar to index engine 110, query engine 120 may include one or more servers that use index 115 to identify the search results of query 182 using, for example, conventional or other information retrieval techniques. . Query engine 120 may include one or more servers that receive query 182 from a requester, such as client 180. Query engine 120 may use index 115 to identify the document in response to the query, and may provide information from the response document to the requester as search results 184. In some embodiments, the query engine 120 may use the rendering results of the rendering results data store 148 to provide thumbnails as part of the search results 184. Query engine 120 may include, for example, a ranking engine that uses one or more ranking signals to calculate a score for the document in response to the query. The one or more ranking signals can be based on content obtained from rendering results associated with the document. The ranking engine may use the score to rank documents found in response to the query.

システムは、ウェブ巡回エンジン130を含んでもよい。ウェブ巡回エンジン130は、1つまたは複数の機械実行可能命令あるいはソフトウェアの一部、ファームウェア、あるいはそれらの組合せを実行するように構成された1つ又は複数のプロセッサを含むことができる。ウェブ巡回エンジン130は、標準サーバ、そのようなサーバのグループ、クライアントサーバシステム、あるいはラックサーバシステムのようなコンピューティングデバイスであってもよい。いくつかの実施形態において、ウェブ巡回エンジン130は、フェッチサーバ150またはインデックスエンジン110のようなシステム100の別のコンポーネントと、メモリまたはハードウェアプロセッサのようなコンポーネントを共有してもよい。ウェブ巡回エンジン130は、ワールドワイドウェブ上で見つけられることができるウェブページをクロールしてもよい。ウェブ巡回エンジン130は、クロールされたウェブページを受信したとき、すなわち、クロールされたウェブページのためのコンテンツを受信すると、ウェブ巡回エンジン130は、インデックスエンジン110あるいはフェッチサーバ150であってもよいリクエスタにコンテンツを提供してもよい。ウェブ巡回エンジン130は、データストア(図示せず)にコンテンツを格納し、およびリクエスタにその位置を提供してもよい。本明細書で使用されるウェブページのコンテンツは、ウェブページレンダリングエンジンに提供されかつウェブブラウザに表示するためのウェブページをレンダリングするために使用されるHTMLコードを参照し、例えばスタイルシート、Java Script、別のウェブページ、あるいは画像ファイルなどのウェブページに埋め込まれた外部オブジェクトへの任意のリンクを含む。ウェブ巡回エンジン130は、これらの埋め込みアイテムのコンテンツをフェッチするためにフェッチサーバ150によって使用されてもよい。ウェブ巡回エンジン130は、フェッチサーバ150に埋め込みアイテムのコンテンツを提供してもよく、あるいは埋め込みアイテムテーブル152のようなデータストアにフェッチされたコンテンツを格納してもよい。ウェブ巡回エンジン130は、埋め込みアイテムがクロールされたときにリクエスタに通知してもよい。   The system may include a web patrol engine 130. Web patrol engine 130 may include one or more processors configured to execute one or more machine-executable instructions or portions of software, firmware, or combinations thereof. The web patrol engine 130 may be a computing device such as a standard server, a group of such servers, a client server system, or a rack server system. In some embodiments, the web patrol engine 130 may share components such as a memory or hardware processor with other components of the system 100 such as the fetch server 150 or the index engine 110. The web patrol engine 130 may crawl web pages that can be found on the World Wide Web. When the web patrol engine 130 receives a crawled web page, i.e., receives content for a crawled web page, the web patrol engine 130 may be the index engine 110 or the fetch server 150. You may provide content. Web patrol engine 130 may store the content in a data store (not shown) and provide the location to the requestor. The web page content used herein refers to the HTML code provided to the web page rendering engine and used to render the web page for display in a web browser, such as a style sheet, Java Script , Any web page, or any link to an external object embedded in the web page, such as an image file. Web patrol engine 130 may be used by fetch server 150 to fetch the contents of these embedded items. The web patrol engine 130 may provide embedded item content to the fetch server 150, or store the fetched content in a data store such as the embedded item table 152. The web patrol engine 130 may notify the requester when an embedded item is crawled.

前述したように、システム100は、フェッチサーバ150を含む。フェッチサーバ150は、1つまたは複数の機械実行可能な命令またはソフトウェアの一部、ファームウェア、あるいはそれらの組合せを実行するように構成された1つまたは複数のプロセッサを含むことができる。フェッチサーバ150は、標準サーバ、そのようなサーバのグループ、クライアントサーバシステム、あるいはラックサーバシステムのようなコンピューティングデバイスであってもよい。いくつかの実施形態において、フェッチサーバ150は、レンダリングサーバ140、ウェブ巡回エンジン130、またはインデックスエンジン110のようなシステム100の別のコンポーネントと、メモリまたはハードウェアプロセッサのようなコンポーネントを共有してもよい。フェエッチサーバ150は、ウェブ巡回エンジン130が特定の埋め込みアイテムのコンテンツを、例えばそのURLによってフェッチすることを要求し、要求された埋め込みアイテムのフェッチされたコンテンツとクロール時間を受信するように構成される。フェッチサーバ150は、ウェブ巡回エンジン130から直接、またはウェブ巡回エンジンが更新する埋め込みアイテムテーブル152から、コンテンツとフェッチ時間を受信してもよい。フェッチサーバ150は、レンダリングエンジン142から埋め込みアイテムのための要求を受信してもよい。フェッチサーバ150は、要求しているレンダリングエンジン142に応答を提供してもよい。応答は、埋め込みアイテムテーブル152にフェッチされた、または格納されたコンテンツ、画像寸法テーブル156に基づくモック画像、あるいはエラー応答を含んでもよい。いくつかの実施形態において、フェッチサーバ150は、埋め込みアイテムのコンテンツおよびクロール時間を、埋め込みアイテムを要求したレンダリングサーバ140のレンダリングエンジン142に送信することによって、埋め込みアイテムのコンテンツを提供することができる。あるいは、フェッチサーバ150は、埋め込みアイテムテーブル152の指定の位置を介して埋め込みアイテムのコンテンツおよびクロール時間が利用可能であることをレンダリングエンジン142に通知することによってコンテンツを提供することができ、およびレンダリングエンジン142は、データストアからウェブページのコンテンツおよびクロール時間を取得することができる。   As described above, the system 100 includes the fetch server 150. The fetch server 150 may include one or more processors configured to execute one or more machine-executable instructions or portions of software, firmware, or combinations thereof. The fetch server 150 may be a computing device such as a standard server, a group of such servers, a client server system, or a rack server system. In some embodiments, the fetch server 150 may share components such as a memory or hardware processor with other components of the system 100 such as the rendering server 140, the web patrol engine 130, or the index engine 110. Good. Fetch server 150 is configured to request that web crawling engine 130 fetch the content of a particular embedded item, for example by its URL, and receive the fetched content and crawl time of the requested embedded item. The The fetch server 150 may receive content and fetch times directly from the web patrol engine 130 or from an embedded item table 152 that is updated by the web patrol engine. The fetch server 150 may receive a request for an embedded item from the rendering engine 142. The fetch server 150 may provide a response to the requesting rendering engine 142. The response may include content fetched or stored in the embedded item table 152, a mock image based on the image size table 156, or an error response. In some embodiments, the fetch server 150 may provide embedded item content by sending the embedded item content and crawl time to the rendering engine 142 of the rendering server 140 that requested the embedded item. Alternatively, the fetch server 150 can provide content by notifying the rendering engine 142 that the embedded item content and crawl times are available via a specified location in the embedded item table 152, and rendering The engine 142 can obtain web page content and crawl times from a data store.

フェッチサーバ150は、要求された埋め込みアイテム(例えば、要求されたURL)にURL書き換え規則154を適用してもよい。URL書き換え規則154は、URLが別のURLと同一のコンテンツに関連付けられているとき、URLを書き換えるための規則を含む。これは、ウェブサイトの所有者が、リソースがリクエストされる度にコンテンツをダウンロードすることをブラウザに望み、そのために動的に生成されたURLあるいはキャッシュバスティング(cache-busting)URLを提供する場合によく発生する。このようなURLは、URLの一部としてタイムスタンプまたは埋め込まれたランダム文字列を有することが多く、例えば、キャッシュバスティングURLを生成するJavaScriptによってウェブページがレンダリングされる度に、URLが一意になるようにする。しかしながら、ホスティングサーバから提供された動的に生成されたURLのためのコンテンツは、変更されない、あるいはバッチレンダリングの目的で意味のある方法で変更されない。フェッチサーバ150は、埋め込みアイテムに対する要求により効率的に応答するためにURL書き換え規則154を使用してもよい。例えば、URL書き換え規則154は、パターンまたはテンプレートを含んでもよく、および規則のテンプレートに一致するURLは、同一のコンテンツ、例えば重複コンテンツを返す。いくつかの実施形態において、テンプレートは、オフライン、またはフェッチログを使用して様々なURLのコンテンツを比較し重複コンテンツを有するURLに共通のURLのパターンを識別するバッチプロセスによって、決定されてもよい。フェッチログは、例えばウェブ巡回エンジン130またはフェッチサーバ150によって維持されてもよい。テンプレートは、ユーザ入力であってもよい。要求された埋め込みアイテムがテンプレートのうちの一つに一致するURLを有する場合、URL書き換え規則154は、フェッチサーバ150に要求されたアイテムが重複であることを伝えてもよく、要求されたURLをリダイレクトURLで書き換えるように命令してもよい。これは、以前にフェッチされたコンテンツ、例えば埋め込みアイテムテーブル152のコンテンツを有するURLと関連する。以前にフェッチされた埋め込みアイテムのURLは、リダイレクトURLと見なされてもよい。これは、フェッチサーバが150が、必要のないフェッチを避けることを可能にし、要求しているバッチレンダリングエンジン142への応答を迅速化し、過度のフェッチ要求によって引き起こされるホスティングサーバへのストレスを取り除く。もちろん、要求されたURLがURL書き換え規則154のテンプレートに一致しない場合、URLを書き換えることは、要求されたURLは変更されない結果となる。   The fetch server 150 may apply the URL rewrite rule 154 to the requested embedded item (eg, the requested URL). The URL rewriting rule 154 includes a rule for rewriting a URL when the URL is associated with the same content as another URL. This is when the website owner wants the browser to download content each time a resource is requested and provides a dynamically generated or cache-busting URL for that purpose. Often occurs. Such URLs often have a timestamp or embedded random string as part of the URL, for example, each time a web page is rendered by JavaScript that generates a cache busting URL, the URL is unique. To be. However, the content for dynamically generated URLs provided from the hosting server is not changed or changed in a meaningful way for batch rendering purposes. Fetch server 150 may use URL rewrite rules 154 to respond more efficiently to requests for embedded items. For example, the URL rewrite rule 154 may include a pattern or template, and URLs that match the rule template return the same content, eg, duplicate content. In some embodiments, the template may be determined offline or by a batch process that uses fetch logs to compare the content of various URLs and identify common URL patterns for URLs with duplicate content. . The fetch log may be maintained by the web patrol engine 130 or the fetch server 150, for example. The template may be user input. If the requested embedded item has a URL that matches one of the templates, the URL rewrite rule 154 may tell the fetch server 150 that the requested item is a duplicate, and the requested URL You may instruct it to rewrite with a redirect URL. This is associated with URLs that have previously fetched content, eg, embedded item table 152 content. The previously fetched embedded item URL may be considered a redirect URL. This allows the fetch server 150 to avoid unnecessary fetches, speeds up the response to the requesting batch rendering engine 142, and removes stress on the hosting server caused by excessive fetch requests. Of course, if the requested URL does not match the template of the URL rewriting rule 154, rewriting the URL results in the requested URL not being changed.

URL書き換え規則154は、ブラックリストに載せられたURLのパターンあるいはテンプレートを含んでもよい。要求された埋め込みアイテムがフラックリストに載せられたURLパターンと一致する場合、システムは、URLのためのコンテンツをフェッチしようとするのではなく、所定のエラーを返してもよい。ブラックリストに載せられたURLは、コンテンツがバッチレンダリングの目的のために必要とされないことを決定したあとに、ユーザによってURL書き換え規則154にURLを入力されてもよい。この一例は、多くのウェブページに含まれるGoogle Analytics JavaScriptコードである。このJavaScriptコードは、レンダリングされたページのレイアウトに重要であると見なされなくともよく、バッチレンダリングエンジンの目的のために実行される必要はない。したがって、レンダリング効率のために、いくつかの埋め込みアイテムはURL書き換え規則154を使用してブラックリストに載せられてもよい。いくつかの実施形態において、ブラックリストに載せられたURLのためのエラーを返すのではなく、システムは、期限切れにならない、および埋め込みアイテムに適した所定のコンテンツを有する埋め込みアイテムテーブル152のエントリに、上述したリダイレクトURLを使用してURLを書き換えてもよい。いくつかの実施形態において、URL書き換え規則は、テンプレートに一致するときブラックリストに載せられたものとしてURLにフラグを立ててもよい。URL書き換え規則154は、ウェブ巡回エンジン130を介してフェッチされた埋め込みアイテムの数を劇的に減少することができ、フェッチサーバ150のリソースのための任意の要求への応答時間を改善し、特定のサーバ190のフェッチ量を最小限にする。フェッチ量を最小限にすることは、システムがフェッチ要求でサーバ190に負担をかけないことを保証する。いくつかの実施形態において、フェッチサーバ150及び/又はウェブ巡回エンジン130は、サーバ190に向けられたフェッチ要求の数を制限するように構成されてもよく、要求が制限を超える場合、システムは要求をキューに入れ始めてもよい。キューが大きすぎる場合、システムはフェッチ要求を失敗する可能性がある。従って、URL書き換え規則154はまた、フェッチ量を最小化することができる。   The URL rewrite rules 154 may include blacklisted URL patterns or templates. If the requested embedded item matches the URL pattern on the flack list, the system may return a predetermined error rather than trying to fetch the content for the URL. The blacklisted URL may be entered by the user into the URL rewrite rules 154 after determining that the content is not required for batch rendering purposes. An example of this is the Google Analytics JavaScript code included in many web pages. This JavaScript code may not be considered critical to the layout of the rendered page and need not be executed for the purpose of the batch rendering engine. Thus, for rendering efficiency, some embedded items may be blacklisted using URL rewrite rules 154. In some embodiments, rather than returning an error for a blacklisted URL, the system will enter an entry in the embedded item table 152 that does not expire and has predetermined content suitable for the embedded item: The URL may be rewritten using the redirect URL described above. In some embodiments, URL rewrite rules may flag URLs as blacklisted when they match a template. URL rewrite rules 154 can dramatically reduce the number of embedded items fetched through the web patrol engine 130, improve response time to any request for resources of the fetch server 150, and identify The fetch amount of the server 190 is minimized. Minimizing the fetch amount ensures that the system does not burden the server 190 with fetch requests. In some embodiments, fetch server 150 and / or web crawling engine 130 may be configured to limit the number of fetch requests destined for server 190, and if the request exceeds the limit, the system may request May begin to queue. If the queue is too large, the system may fail fetch requests. Therefore, the URL rewrite rule 154 can also minimize the fetch amount.

いくつかの実施形態において、フェッチサーバ150は画像寸法テーブル156を含んでもよい。画像寸法テーブル156は、画像URLを画像のための既知のサイズと関連付けるキー値記憶装置であってもよい。既知のサイズは、画像がフェッチされたときに決定されてもよい。要求された画像のサイズを使用して、フェッチサーバ150は要求された画像と同じサイズを有するが、空のコンテンツであるか、コンテンツとして単純なタイルを有するモック画像を生成してもよい。モック画像は、要求された画像と同じサイズを有するが同じ画像データではない、有効な画像である。フェッチサーバ150はバッチレンダリングエンジンのためのコンテンツをフェッチするので、実際の画像はレンダリング結果にとって重要ではなくてもよいが、画像のサイズはレンダリングされたページのレイアウトに影響を及ぼし得る。実際の画像ではなくモック画像を使用することは、ファイルサイズが非常に小さくなり(例えば、画像あたり数十バイト)、これはモック画像を転送する際のネットワーク帯域幅、およびバッチレンダリングエンジンのためのプロセッサおよびメモリリソースを節約する。いくつかの実施形態において、画像寸法テーブル156は、SSTableなどのキー値記憶装置であってもよいが、寸法テーブル156は、画像識別子によってサイズを格納する任意のデータ構造体であってもよい。   In some embodiments, the fetch server 150 may include an image size table 156. The image size table 156 may be a key value store that associates an image URL with a known size for the image. The known size may be determined when the image is fetched. Using the requested image size, fetch server 150 may generate a mock image that has the same size as the requested image, but is empty content or has simple tiles as content. A mock image is a valid image having the same size as the requested image but not the same image data. Since fetch server 150 fetches content for the batch rendering engine, the actual image may not be important to the rendering result, but the size of the image can affect the layout of the rendered page. Using a mock image instead of a real image results in a very small file size (eg, tens of bytes per image), which is the network bandwidth for transferring mock images, and for batch rendering engines Save processor and memory resources. In some embodiments, the image dimension table 156 may be a key value storage device such as SSTable, but the dimension table 156 may be any data structure that stores sizes by image identifier.

システム100は埋め込みアイテムテーブル152を含んでもよい。埋め込みアイテムテーブル152h、URLによってキー付されてもよく、およびウェブ巡回エンジン130から返された埋め込みアイテムのためのフェッチされたコンテンツを格納してもよい。いくつかの実施形態において、埋め込みアイテムテーブル152は、クロール履歴も格納してもよい。例えば、いくつかの実施形態において、埋め込みアイテムテーブル152は、例えば7日間、2週間などの期間にわたってフェッチされたコンテンツを含んでもよい。埋め込みアイテムテーブル152は、クロール履歴に基づいて変更率を含んでもよい。いくつかの実施形態において、埋め込みアイテムテーブル152は、BigTable、関係型データベース、Hadoop Distributed Fileなどとして実装されてもよい。フェッチサーバ150は、以前にフェッチされた埋め込みアイテムのためのコンテンツを素早く返すために、埋め込みアイテムテーブル152を使用してもよい。フェッチサーバ150は、何千ものバッチレンダリングシステムに対する要求を処理することができるので、要求された埋め込みアイテムが前のフェッチ要求に応答して以前にフェッチされている可能性が高い。フェッチされたコンテンツが埋め込みアイテムテーブル152に位置するとき、ウェブ巡回エンジン130にコンテンツを提供するように求めるのではなく、フェッチサーバ150は埋め込みアイテムテーブル152のコンテンツを使用して要求に応答してもよい。これにより、フェッチされたコンテンツを格納するサーバ190の負担が軽減され、フェッチサーバ150が埋め込みアイテムのための要求により迅速に応答することを可能にする。フェッチサーバ150は、URL書き換え規則154を使用して、重複を排除するURLによってクロール要求をさらに減らすことができる。   System 100 may include an embedded item table 152. Embedded item table 152h may be keyed by URL and may store fetched content for embedded items returned from web patrol engine 130. In some embodiments, the embedded item table 152 may also store a crawl history. For example, in some embodiments, the embedded item table 152 may include content fetched over a period of time, eg, 7 days, 2 weeks, etc. The embedded item table 152 may include a change rate based on the crawl history. In some embodiments, the embedded item table 152 may be implemented as a BigTable, a relational database, a Hadoop Distributed File, etc. Fetch server 150 may use embedded item table 152 to quickly return content for previously fetched embedded items. Since fetch server 150 can handle requests for thousands of batch rendering systems, it is likely that the requested embedded item has been previously fetched in response to a previous fetch request. When the fetched content is located in the embedded item table 152, rather than asking the web patrol engine 130 to provide the content, the fetch server 150 may respond to the request using the content of the embedded item table 152. Good. This reduces the burden on server 190 that stores the fetched content and allows fetch server 150 to respond more quickly to requests for embedded items. The fetch server 150 can further reduce crawl requests with URLs that eliminate duplication using the URL rewrite rules 154.

レンダリングプロセスの任意の段階で、1つ又は複数の要求された埋め込みアイテムのコンテンツが埋め込みアイテムテーブル152に格納されていない、あるいは古い場合、フェッチサーバ150は、要求された埋め込みアイテムのクロールをスケジュールするためにウェブ巡回エンジン130に指示してもよい。一旦ウェブ巡回エンジン130がレンダリングされた埋め込みアイテムをクロールすると、フェッチサーバ150に通知する。フェッチサーバ150は、次いでフェッチされたコンテンツアイテムをクロール時間とともに埋め込みアイテムテーブル152に格納してもよい。埋め込みアイテムが画像である場合、フェッチサーバ150は、代わりに、または追加で、フェッチされた画像のサイズをクロール時間とともに画像寸法テーブル156に格納してもよい。フェッチサーバ150は、次いで要求されたコンテンツを、すなわち画像サイズを有するモック画像が送信されてもよい画像ファイルの代わりに、要求しているレンダリングエンジン142に送り返してもよい。   At any stage of the rendering process, if the content of one or more requested embedded items is not stored in the embedded item table 152 or is out of date, the fetch server 150 schedules the crawling of the requested embedded item. Therefore, the web patrol engine 130 may be instructed. Once the web patrol engine 130 crawls the rendered embedded item, it notifies the fetch server 150. The fetch server 150 may then store the fetched content item in the embedded item table 152 along with the crawl time. If the embedded item is an image, the fetch server 150 may alternatively or additionally store the size of the fetched image in the image dimension table 156 along with the crawl time. The fetch server 150 may then send the requested content back to the requesting rendering engine 142 instead of an image file to which a mock image having an image size may be sent.

システム100は、レンダリングサーバ140を含む。レンダリングサーバ140は、1つまたは複数の機械実行可能な命令またはソフトウェアの一部、ファームウェア、あるいはそれらの組合せを実行するように構成された1つまたは複数のプロセッサを含むことができる。レンダリングサーバ140は、標準サーバ、そのようなサーバのグループ、クライアントサーバシステム、あるいはラックサーバシステムのようなコンピューティングデバイスであってもよい。いくつかの実施形態において、レンダリングサーバ140は、レンダリングサーバ140、フェッチサーバ150、またはインデックスエンジン110のようなシステム100の別のコンポーネントと、メモリまたはハードウェアプロセッサのようなコンポーネントを共有してもよい。レンダリングサーバ140は、特定のウェブページをレンダリングするために、インデックスエンジン110または別の要求プロセスから要求を受信する。言い換えると、レンダリングサーバ140は、要求されたウェブページのURLを受信してもよい。レンダリングサーバ140は、1つ又は複数のレンダリングエンジン142を含んでもよい。いくつかの実施形態において、レンダリングサーバ140は、数万のレンダリングエンジン142を含み、およびウェブページをレンダリングするレンダリングエンジン142を選択するためにロードバランシングを実行してもよい。一旦レンダリングエンジン142が選択されると、レンダリングエンジン142は、レンダリング結果のためにウェブページをレンダリングしようとする。ウェブページは、通常は追加の埋め込みアイテムを含むので、埋め込むウェブページと呼ばれてもよい。   The system 100 includes a rendering server 140. Rendering server 140 may include one or more processors configured to execute one or more machine-executable instructions or portions of software, firmware, or combinations thereof. The rendering server 140 may be a computing device such as a standard server, a group of such servers, a client server system, or a rack server system. In some embodiments, the rendering server 140 may share a component such as a memory or hardware processor with another component of the system 100 such as the rendering server 140, the fetch server 150, or the index engine 110. . The rendering server 140 receives a request from the index engine 110 or another request process to render a particular web page. In other words, the rendering server 140 may receive the URL of the requested web page. The rendering server 140 may include one or more rendering engines 142. In some embodiments, the rendering server 140 includes tens of thousands of rendering engines 142 and may perform load balancing to select a rendering engine 142 that renders the web page. Once the rendering engine 142 is selected, the rendering engine 142 attempts to render the web page for the rendering result. A web page usually includes additional embedded items and may be referred to as an embedded web page.

各レンダリングエンジン142は、パーソナルウェブブラウザ用のレンダラをエミュレートするように構成されるが、バッチレンダリングのための最適化を伴う。従って、レンダリングエンジン142が埋め込むウェブページを受信したあと、レンダリングエンジン142がレンダリング結果を生成するために行う作業を表すタスクをタスクリストに投入し始めてもよい。多くのタスクがすぐに実行されるようにスケジュールされていてもよいが、いくつかのタスクは将来スケジュールされてもよい。レンダリングエンジン142のバッチ最適化の一つは、仮想時計を使用し、レンダリングが特定の時間に完了したことを示すタスクリストにタスクを追加することである。例えば、いくつかの実施形態において、タスクは、レンダリングが現在の時間+20秒で完了することを示してもよい。所定の時間は、多数のウェブページ設計者が完全に見えるようにウェブページを設計する時間に基づいてもよく、例えば、任意のアニメーションあるいはレイアウト変更が所定の時間内に終わるように設計される。ほとんどのユーザは、ページが読み込まれるまで非常に長く待つことを快く思わないので、所定の時間は5から20秒の間であってもよいが、状況によってはそれより長くなる可能性がある。レンダリングエンジン142は、仮想時計を使用するために20秒全部かかることはなく、および埋め込みアイテムがクロールされていない場合(例えば、フェッチサーバ150が埋め込みアイテムテーブル152のコンテンツを示すことができる)、しばしばフルレンダリングが数秒で発生する可能性がある。従って、最終的なレンダリング結果を生成するタスクは、現在の時間から20秒の開始時刻でタスクリストに追加されてもよい。現在の時間は、仮想時計の初期化時間に基づいており、これはゼロまたは実際の時計の現在の時間とすることができる。   Each rendering engine 142 is configured to emulate a renderer for a personal web browser, but with optimization for batch rendering. Therefore, after the rendering engine 142 receives the web page to be embedded, the task representing the work that the rendering engine 142 performs to generate the rendering result may start to be entered in the task list. Many tasks may be scheduled to be executed immediately, but some tasks may be scheduled in the future. One batch optimization of the rendering engine 142 is to use a virtual clock and add a task to the task list indicating that the rendering is complete at a particular time. For example, in some embodiments, the task may indicate that the rendering is complete in the current time + 20 seconds. The predetermined time may be based on the time it takes to design a web page so that a large number of web page designers can see it completely, eg, any animation or layout change is designed to end within a predetermined time. Most users are not willing to wait very long for the page to load, so the predetermined time may be between 5 and 20 seconds, but can be longer in some situations. Rendering engine 142 does not take all 20 seconds to use the virtual clock, and often when embedded items have not been crawled (eg, fetch server 150 can show the contents of embedded item table 152). Full rendering can occur in seconds. Accordingly, the task that generates the final rendering result may be added to the task list at a start time of 20 seconds from the current time. The current time is based on the initialization time of the virtual clock, which can be zero or the current time of the actual clock.

レンダリングプロセスの一部、例えば、レンダリングタスクの一つとして、レンダリングエンジン142は、埋め込むウェブページが、スタイルシート、画像ファイル、Java Scriptなどの任意の埋め込みアイテムを含むか否かを決定してもよい。これらの埋め込みアイテムは、プライマリ埋め込みオブジェクトと呼ばれる。ウェブページが任意の埋め込みオブジェクトを含まない場合、レンダリングエンジンは、ウェブページをレンダリング結果に即座に処理することができ、およびレンダリング結果をレンダリング結果データストア148に格納してもよい。しかし、ウェブページが埋め込みアイテムを含む場合、レンダリングエンジン142は、埋め込みアイテムをすべて抜き出し、埋め込みアイテムのコンテンツのために要求をフェッチサーバ150に送信してもよい。要求された埋め込みアイテムは、それぞれのURLによって各々表される。レンダリングエンジン142は、しかしながら、フェッチされたリソースを待つ間、レンダリングを停止するか、タイムアウトすることはない。むしろ、レンダリングエンジン142は仮想時計を使用するので、以下でより詳細に説明するように、ウェブ巡回エンジン130を介してフェッチされるリソースを待つことは、時計を進めず、レンダリングエンジンはタイムアウトしない。   As part of the rendering process, eg, one of the rendering tasks, the rendering engine 142 may determine whether the embedded web page includes any embedded items such as style sheets, image files, Java Scripts, etc. . These embedded items are called primary embedded objects. If the web page does not contain any embedded objects, the rendering engine can process the web page immediately into the rendering result and store the rendering result in the rendering result data store 148. However, if the web page includes embedded items, the rendering engine 142 may extract all the embedded items and send a request to the fetch server 150 for the embedded item content. Each requested embedded item is represented by a respective URL. The rendering engine 142, however, does not stop rendering or time out while waiting for fetched resources. Rather, since the rendering engine 142 uses a virtual clock, waiting for resources fetched via the web patrol engine 130 will not advance the clock and the rendering engine will not time out, as described in more detail below.

要求された埋め込みアイテムのためのコンテンツが受信されたとき、レンダリングエンジン142は、コンテンツを処理するためにタスクリストにタスクを追加してもよい。コンテンツ処理の一部は、要求された埋め込みオブジェクト(すなわち、プライマリ埋め込みオブジェクト)自身が埋め込みオブジェクト(すなわち、セカンダリ埋め込みオブジェクト)を有するか否かを見つけることを含んでもよい。プライマリ埋め込みオブジェクトがセカンダリ埋め込みオブジェクトを含まない場合、レンダリングエンジン142は、画像のプロパティを変更するレンダリングタスク(例えば、JavaScriptコードを実行する)に取り組むことを続けることができる。しかし、プライマリ埋め込みオブジェクトが1つ又は複数のセカンダリ埋め込みオブジェクトを含む場合、レンダリングエンジン142は、フェッチサーバ150からセカンダリ埋め込みオブジェクトを要求する。埋め込みオブジェクトを発見し要求するこのプロセスは、レンダリングエンジンが、レンダリングされるウェブページに埋め込まれた全てのオブジェクト(例えば、プライマリ、セカンダリ、第3の、など)を発見し、要求し、および受信するまで、繰り返される。   When content for a requested embedded item is received, the rendering engine 142 may add a task to the task list to process the content. Part of the content processing may include finding out whether the requested embedded object (ie, the primary embedded object) itself has an embedded object (ie, a secondary embedded object). If the primary embedded object does not include a secondary embedded object, the rendering engine 142 can continue to work on a rendering task (eg, executing JavaScript code) that changes the properties of the image. However, if the primary embedded object includes one or more secondary embedded objects, the rendering engine 142 requests a secondary embedded object from the fetch server 150. This process of discovering and requesting embedded objects causes the rendering engine to discover, request, and receive all objects (eg, primary, secondary, third, etc.) embedded in the rendered web page. Repeat until.

各埋め込みアイテム要求は、フェッチサーバ150が一旦その時間のコンテンツを返すと削除されるタスクリスト内のタスクであってもよい。コンテンツが返されるとき、レンダリングエンジン142は、コンテンツを処理するためのタスクを追加してもよく、これは、画像の不透明度の変更、スクリプトの実行など、追加のタスクを順に追加してもよい。各タスクは、ランタイムに関連付けられてもよい。いくつかのタスクは、将来のランタイムを有してもよい。例えば、イメージをフェードイン(またはアウト)するために、ブラウザはタスクリストにいくつかのタスクを追加してもよく、時間のインターバルにわたって画像の不透明度をそれぞれ変更する。以下でより詳細に説明するように、レンダリングエンジン142は、タスクが実行準備が整った時点を決定するために、タスクリストに関してリアルタイムではなく仮想時計を使用してもよい。   Each embedded item request may be a task in the task list that is deleted once fetch server 150 returns the content for that time. When content is returned, the rendering engine 142 may add tasks to process the content, which in turn may add additional tasks, such as changing the opacity of the image, running a script, etc. . Each task may be associated with a runtime. Some tasks may have a future runtime. For example, to fade in (or out) an image, the browser may add several tasks to the task list, each changing the opacity of the image over a time interval. As described in more detail below, the rendering engine 142 may use a virtual clock rather than real time for the task list to determine when a task is ready to run.

レンダリングエンジン142は、レンダリングが完了するまで、例えば、レンダリング結果が生成されるまで、タスクリストのタスクをレンダリングするプロセスに取り組む。次いでレンダリングエンジン142は、レンダリング結果をレンダリング結果データストア148に格納し、及び/又はレンダリング結果をレンダリングプロセス(例えば、インデックスエンジン110)に提供してもよい。インデックスエンジン110のようなレンダリングプロセスは、次いでウェブページを処理する際にレンダリング結果から抽出された情報を使用してもよい。例えば、要求プロセスは、JavaScriptエラー、レイアウト情報、スタイル情報、広告スペース情報、フェッチされたリソースのリスト、性能統計等を使用してもよく、そのすべてはレンダリング結果に含まれるが、要求プロセスにとってはそれ以外使用できない。   The rendering engine 142 works on the process of rendering tasks in the task list until rendering is complete, eg, until a rendering result is generated. The rendering engine 142 may then store the rendering results in the rendering results data store 148 and / or provide the rendering results to a rendering process (eg, the index engine 110). A rendering process such as the index engine 110 may then use the information extracted from the rendering results when processing the web page. For example, the request process may use JavaScript errors, layout information, style information, ad space information, fetched resource list, performance statistics, etc., all of which are included in the rendering result, but for the request process It cannot be used otherwise.

システム100は、ネットワーク170を介してクライアント180およびサーバ190と通信してもよい。ネットワーク170は、例えばインターネット、または有線あるいは無線ローカルエリアネットワーク(LAN)であってもよいネットワーク170、ワイドエリアネットワーク(WAN)、これらの組合せであってもよく、例えばゲートウェイデバイス、ブリッジ、スイッチ、あるいは同様のものを使用して実装されてもよい。ネットワーク170を介して、クエリエンジン、ウェブ巡回エンジン130及び/又はフェッチサーバ150は、クライアント180及び/又はサーバ190と通信し、かつデータを送受信してもよい。   System 100 may communicate with client 180 and server 190 via network 170. The network 170 may be, for example, the Internet 170, a network 170 that may be a wired or wireless local area network (LAN), a wide area network (WAN), or combinations thereof, such as gateway devices, bridges, switches, or Similar implementations may be used. Via the network 170, the query engine, the web patrol engine 130 and / or the fetch server 150 may communicate with the client 180 and / or the server 190 and send and receive data.

システム100は、簡潔にするために図示されていない他のコンポーネントを含んでもよい。例えば、インデックスエンジン110、クエリエンジン120、ウェブ巡回エンジン130、レンダリングサーバ140、およびフェッチサーバ150のうちの1つまたは複数は、1つまたは複数のコンピューティングデバイスにわたって分散されてもよい。同様に、インデックス115、レンダリング結果データストア148、埋め込みアイテムテーブル152、および画像寸法テーブル156は、複数のコンピューティングデバイスにわたって格納されてもよい。いくつかの実施形態において、システム100の様々なコンポーネントは、コンピューティングデバイスのハードウェアコンポーネントを共有してもよく、あるいは同じコンピューティングデバイスの論理パーティションであってもよい。   System 100 may include other components not shown for the sake of brevity. For example, one or more of the index engine 110, query engine 120, web traversal engine 130, rendering server 140, and fetch server 150 may be distributed across one or more computing devices. Similarly, the index 115, rendering result data store 148, embedded item table 152, and image size table 156 may be stored across multiple computing devices. In some embodiments, the various components of the system 100 may share the hardware components of the computing device or may be logical partitions of the same computing device.

図2は、埋め込みオブジェクトを有するウェブページのブロック図である。図に示すように、ウェブページ200は、複数の埋め込みアイテムを含むことができる。これらの埋め込みオブジェクトは、他のウェブページ210、スタイルシート220、画像ファイル230、いわゆるキャッシュバスティングURL240、およびJavaScriptコード250を含むことができるが、これらに限定されない。追加された、埋め込みオブジェクトの異なるタイプはもちろん可能である。さらに、ウェブページ200に埋め込まれたそれぞれのオブジェクトは、他のオブジェクトを埋め込んでもよい。例えば、ウェブページ200に埋め込まれたウェブページ210は、他のウェブページ、画像ファイル、スタイルシートなどを埋め込んでもよい。同様に、ウェブページ200に埋め込まれたスタイルシート220は、背景画像ファイルのような他のオブジェクトを埋め込んでもよい。さらに、ウェブページ210またはスタイルシート220に埋め込まれたオブジェクトのそれぞれは、さらにオブジェクトを埋め込んでもよい。このようなウェブページを画像ファイルに完全にレンダリングするために、バッチレンダリングエンジンは、埋め込みオブジェクト210−250(プライマリ埋め込みオブジェクト)のそれぞれを要求し、埋め込みオブジェクト210−250に埋め込まれたすべてのオブジェクト(セカンダリ埋め込みオブジェクト)、および埋め込みオブジェクト210−250に埋め込まれたオブジェクトに埋め込まれたすべてのオブジェクト(第3埋め込みオブジェクト)およびその他を要求しなければならない。   FIG. 2 is a block diagram of a web page having embedded objects. As shown, the web page 200 can include a plurality of embedded items. These embedded objects can include, but are not limited to, other web pages 210, style sheets 220, image files 230, so-called cache busting URLs 240, and JavaScript code 250. Different types of embedded objects added are of course possible. Furthermore, each object embedded in the web page 200 may embed another object. For example, the web page 210 embedded in the web page 200 may embed other web pages, image files, style sheets, and the like. Similarly, the style sheet 220 embedded in the web page 200 may embed other objects such as a background image file. Further, each of the objects embedded in the web page 210 or the style sheet 220 may further embed an object. In order to fully render such a web page into an image file, the batch rendering engine requires each of the embedded objects 210-250 (primary embedded objects) and all objects embedded in the embedded objects 210-250 ( Secondary embedded objects), and all objects embedded in objects embedded in embedded objects 210-250 (third embedded objects) and others must be requested.

上述したように、個々のユーザのウェブブラウザはこれらの埋め込みオブジェクトの全てを効率的に要求し、および完全にレンダリングするためにそれらを使用し、およびリアルタイムでウェブページ200を表示することができるが、バッチレンダリングエンジンは、重複あるいは不要なコンテンツをフェッチしないように、埋め込みオブジェクトのコンテンツを待ってタイムアウトしないように、およびタスクの内部タイミングに関係なく、できるだけ早くレンダリングが完了するように、最適化されることができる。したがって、多数のクロールされたウェブページを効率的にレンダリングするために、図1に開示されたようなシステムが使用されることができる。   As mentioned above, each user's web browser can efficiently request all of these embedded objects and use them to fully render and display the web page 200 in real time. , The batch rendering engine is optimized to avoid fetching duplicate or unnecessary content, to wait for embedded object content and not to time out, and to finish rendering as soon as possible regardless of the internal timing of the task Can be. Thus, a system such as that disclosed in FIG. 1 can be used to efficiently render a large number of crawled web pages.

図3は、一実施形態に従った、バッチレンダリングエンジン142のいくつかのコンポーネントのブロック図である。バッチレンダリングエンジンは、図3に示されていない追加のコンポーネントを含んでもよい。バッチレンダリングシステム142は、ページタスクリスト305、仮想時計310、およびレンダリング結果315を含む。仮想時計310は、ウェブページをロードするためにタイムラインを歪ませ、フェッチされたリソースを待つことによって発生する可能性がある多数のエラーを回避するために使用されてもよい。仮想時計310は、レンダリングプロセスの開始時間にゼロまたは現在のクロック時間に初期化されてもよく、およびレンダリングエンジンが埋め込みアイテムのフェッチを待っていないときおよびページタスクリスト305に現時点で実行の準備ができているタスクがあるときのみ進んでもよい。仮想クロックが進められたとき、レンダリングエンジン142はページタスクリスト305に基づいて仮想時計310を進める。言い換えると、レンダリングエンジン142は、仮想時計310を次に発生するタスクによって表される時間に進める。この意味において、埋め込みアイテムをフェッチしてJava Scriptを実行することは仮想時間がかからず、ライブ(または個人)ブラウザによって発生したエラーのクラス全体を回避することができる。さらに、レンダリングプロセスは、タスクリストで指定された時間よりもずっと早くリアルタイムで終了してもよい。たとえば、”最終レンダリングを生成する”タスクは、20秒で発生するように設定されているが、仮想時計は通常は、ページタスクリスト305のタスクを実際に完了するのにかかる時間に応じて、実際の数秒で20秒進む。ページタスクリスト305の”最終レンダリングを生成する”タスクは、レンダリングが完了したとき、バッチレンダリングエンジン142に伝える停止タスクの一例である。   FIG. 3 is a block diagram of several components of the batch rendering engine 142, according to one embodiment. The batch rendering engine may include additional components not shown in FIG. The batch rendering system 142 includes a page task list 305, a virtual clock 310, and a rendering result 315. The virtual clock 310 may be used to distort the timeline to load a web page and avoid numerous errors that can occur by waiting for fetched resources. The virtual clock 310 may be initialized to zero or the current clock time at the start of the rendering process, and the page task list 305 is currently ready to execute when the rendering engine is not waiting for the embedded item fetch. You may proceed only when there is a completed task. When the virtual clock is advanced, the rendering engine 142 advances the virtual clock 310 based on the page task list 305. In other words, the rendering engine 142 advances the virtual clock 310 to the time represented by the next task to occur. In this sense, fetching embedded items and executing Java Scripts does not take virtual time and avoids the entire class of errors generated by live (or personal) browsers. Further, the rendering process may end in real time much earlier than the time specified in the task list. For example, the “Generate Final Rendering” task is set to occur in 20 seconds, but the virtual clock usually depends on how long it takes to actually complete the tasks in the page task list 305, Advances 20 seconds in actual seconds. The “generate final rendering” task in the page task list 305 is an example of a stop task that is notified to the batch rendering engine 142 when rendering is completed.

レンダリングエンジン142は、埋め込むウェブページのレンダリング結果315をレンダリングしてもよい。レンダリング結果315は、様々なコンポーネントを含んでもよい。たとえば、レンダリング結果315は、レンダリングされたページの画像316を含むことができる。画像316は、ライブ(または個人)ウェブブラウザのユーザに表示される画像であってもよく、たとえばレンダリングされたページのサムネイルをユーザに表示するために使用されることができる。レンダリング結果315は、ドキュメント・オブジェクト・モデル(Document Object Model、DOM)ツリー317も含むことができる。DOMツリー317は、ウェブページのHTML構造を表す。たとえば、システムは、DOMツリーを処理することによって、トークンまたはユーザに見えるドキュメントのテキストを決定してもよい。レンダリング結果315は、レイアウト318を含んでもよい。レイアウト318は、ウェブページの各要素に対するボックスを含み、ボックスは画像316の要素の座標を決定する。たとえば、レイアウトは、DOMツリーのDOMノードのボックス表現を含むことができる(すべてのDOM要素が対応するレンダリングボックスを有するわけではない)。ボックスは、レンダリングツリーと呼ばれるツリー構造で編成されることができる。したがって、たとえば、テーブルは、レイアウトのボックスによって表されてもよく、パラグラフはレイアウトの別のボックスによって表されてもよい。したがって、レイアウト318は、ウェブページ上のどこに要素が発生するか、ウェブページ上でどれくらいのスペースを要するのか、などの指示を提供する。したがって、レイアウト318は、ウェブページ上のどれだけが広告であるか、パラグラフがどれくらい目立つか(たとえば、アバブ・ザ・フォールド(above-the-fold)またはビロウ・ザ・フォールド(below-the-fold))、要素が見えるか否かなどの情報を提供する。したがって、レイアウト318は、ウェブページの要素についての幾何学的情報を提供する。レンダリング結果315は、エラー320を含んでもよい。エラー320は、たとえばJava Scriptなどのスクリプトの実行結果として引き起こされるエラーを含む。レンダリング結果315は、レンダリングの間にフェッチされた埋め込みリソース319のリストを含んでもよく、レンダリングプロセスの一部として生成された別の要素を含むことができる。したがって、レンダリング結果315は、ホスティングサーバからのコンテンツのフェッチを介してだけ、要求プロセスに利用可能でない情報を提供する。たとえばインデックスエンジンは、インデックスの要素をランク付けし、目に見えない要素を断片の一部として提供し、および動的に生成されたコンテンツにインデックス付けするためにレンダリング結果情報を使用することができる。動的に生成されたコンテンツは、ウェブページをレンダリングしたあとに存在するコンテンツであり、クロールされたコンテンツには存在しない。   The rendering engine 142 may render the rendering result 315 of the embedded web page. The rendering result 315 may include various components. For example, the rendering result 315 may include an image 316 of the rendered page. The image 316 may be an image that is displayed to a user of a live (or personal) web browser and can be used, for example, to display a thumbnail of the rendered page to the user. The rendering result 315 can also include a document object model (DOM) tree 317. The DOM tree 317 represents the HTML structure of a web page. For example, the system may determine the text of the document visible to the token or user by processing the DOM tree. The rendering result 315 may include a layout 318. Layout 318 includes a box for each element of the web page, and the box determines the coordinates of the elements of image 316. For example, a layout can include a box representation of DOM nodes in a DOM tree (not all DOM elements have a corresponding rendering box). Boxes can be organized in a tree structure called a rendering tree. Thus, for example, a table may be represented by a box in the layout and a paragraph may be represented by another box in the layout. Thus, the layout 318 provides instructions such as where elements occur on the web page and how much space is required on the web page. Thus, the layout 318 determines how much of the advertisement is on the web page, how prominent the paragraph is (eg, above-the-fold or below-the-fold). )), Provide information such as whether the element is visible. Thus, layout 318 provides geometric information about the elements of the web page. The rendering result 315 may include an error 320. The error 320 includes an error caused as a result of executing a script such as Java Script. The rendering result 315 may include a list of embedded resources 319 fetched during rendering and may include other elements generated as part of the rendering process. Thus, the rendering result 315 provides information that is not available to the requesting process only through fetching content from the hosting server. For example, the indexing engine can rank the elements of the index, provide invisible elements as part of the fragment, and use rendering result information to index dynamically generated content . The dynamically generated content is content that exists after rendering the web page, and is not present in the crawled content.

図4は、実施形態に従った、バッチレンダリングエンジンが、埋め込みオブジェクトを備えたウェブページをレンダリングすることができるプロセス例400を図示する流れ図である。プロセス400は、図1のシステム100のようなシステムによって実行されてもよい。広告システム、またはインターネットインデックスシステムのようなシステムは、ダウンストリームプロセスの要求でバッチモードのウェブページのレンダリング結果を生成するために、プロセス400を使用してもよい。いくつかの実施形態において、プロセス400は、レンダリングサーバのバッチレンダリングエンジンによって実行されてもよく、および要求プロセスからの要求に応答して開始されてもよい。   FIG. 4 is a flow diagram illustrating an example process 400 by which a batch rendering engine can render a web page with embedded objects, according to an embodiment. Process 400 may be performed by a system such as system 100 of FIG. A system such as an advertising system, or Internet index system, may use process 400 to generate a batch mode web page rendering result at the request of a downstream process. In some embodiments, process 400 may be performed by a rendering server's batch rendering engine and may be initiated in response to a request from a requesting process.

プロセス400は、ウェブページをレンダリングする要求を受信することから開始してもよい(405)。いくつかの実施形態において、要求は、要求されたウェブページのURLおよび/またはフェッチされたコンテンツと、関連するメタデータ(たとえばクロール時間)とを含んでもよい。いくつかの実施形態において、ウェブページのコンテンツを受信するのではなく、バッチレンダリングエンジンは、ウェブページのコンテンツがデータベースで利用可能であるという通知を受信し、データベースからコンテンツおよび関連するメタデータ(たとえば、クロール時間)を取り出すことができる。フェッチされたコンテンツは、たとえば、要求されたプロセスがすでにコンテンツをフェッチしているという理由で提供されてもよい。バッチレンダリングエンジンは、仮想時計を初期化し、タスクリストに停止タスクを追加することによって開始してもよい(410)。たとえば、バッチレンダリングエンジンは、仮想時計をゼロに設定し、レンダリングエンジンが所定の時間で完了したとレンダリングエンジンに判断させる停止タスクをタスクリストに追加してもよい。この停止タスクに関連付けられたランタイムは、個々のユーザのマシンでほとんどのウェブページが読み込みを完了までの時間であってもよい。たとえば、時間は15または20秒であってもよい。レンダリング開始の一部として、バッチレンダリングエンジンは、ウェブページのコンテンツをフェッチする(コンテンツが提供されなかった場合)、およびウェブページのコンテンツを処理する、などの他のタスクをタスクリストに追加してもよい。これらのタスクは、仮想時間ゼロで追加されてもよく、したがって、たとえばすぐに開始することができる。   Process 400 may begin by receiving a request to render a web page (405). In some embodiments, the request may include the URL of the requested web page and / or the fetched content and associated metadata (eg, crawl time). In some embodiments, rather than receiving web page content, the batch rendering engine receives notification that web page content is available in the database, and the content and associated metadata (eg, from the database) , Crawl time). The fetched content may be provided, for example, because the requested process has already fetched the content. The batch rendering engine may begin by initializing the virtual clock and adding a stop task to the task list (410). For example, the batch rendering engine may add a stop task to the task list that sets the virtual clock to zero and causes the rendering engine to determine that the rendering engine has completed in a predetermined time. The runtime associated with this stop task may be the time it takes for most web pages to complete loading on an individual user's machine. For example, the time may be 15 or 20 seconds. As part of the rendering start, the batch rendering engine adds other tasks to the task list, such as fetching web page content (if no content was provided) and processing web page content. Also good. These tasks may be added at virtual time zero and can thus be started immediately, for example.

次いでバッチレンダリングエンジンは、タスクリスト内のタスクに取り掛かることを開始してもよい(415)。たとえば、ウェブページのコンテンツの処理の一部として、バッチレンダリングエンジンは、1つまたは複数の埋め込みアイテムを識別してもよい(420)。次いでバッチレンダリングエンジンは、フェッチサーバから埋め込みアイテムのコンテンツを要求してもよい(425)。フェッチサーバは、図1のフェッチサーバ150であってもよい。いくつかの実施形態において、バッチレンダリングエンジンは、識別された埋め込みアイテムおよびフェッチサーバがそれぞれの埋め込みアイテムのためのコンテンツを返したか否かを追跡してもよい。いくつかの実施形態において、この埋め込みアイテムのリストは、ウェブページのレンダリング結果に含まれてもよい。バッチレンダリングエンジンが埋め込みアイテムを要求したあと、バッチレンダリングエンジンは、フェッチサーバがコンテンツを返すのを待つ間に実行する準備ができている別のタスク(415)上で作業を継続してもよい。現在の仮想時間に実行する準備ができているタスクがない場合、さもなければバッチレンダリングエンジンがフェッチサーバからの応答を待ってもよい。フェッチが未処理であるが、バッチレンダリングエンジンは仮想時計を進めないので、したがってバッチレンダリングエンジンはフェッチを待つのでタイムアウトしない。   The batch rendering engine may then begin to work on the tasks in the task list (415). For example, as part of processing web page content, the batch rendering engine may identify one or more embedded items (420). The batch rendering engine may then request the content of the embedded item from the fetch server (425). The fetch server may be the fetch server 150 of FIG. In some embodiments, the batch rendering engine may track whether the identified embedded items and the fetch server have returned content for each embedded item. In some embodiments, this list of embedded items may be included in the rendering results of the web page. After the batch rendering engine requests an embedded item, the batch rendering engine may continue working on another task (415) that is ready to execute while waiting for the fetch server to return content. If there are no tasks ready to run at the current virtual time, the batch rendering engine may wait for a response from the fetch server. Although the fetch is outstanding, the batch rendering engine does not advance the virtual clock, so the batch rendering engine does not time out waiting for the fetch.

フェッチサーバからの応答を受信したとき、バッチレンダリングエンジンは、埋め込みアイテムのコンテンツを処理する(430)。たとえば、コンテンツの受信に応答して、バッチレンダリングエンジンは、埋め込みアイテムの受信したコンテンツを解析するなどのタスクをタスクリストに追加してもよい。これらのタスクは、現在の仮想時計の開始時間を与えられてもよく、これはタスクが実行準備ができていることを示す(たとえば、仮想時計上の現在の時間)。受信したコンテンツを解析し、最初に要求されたウェブページのためあるいは埋め込みアイテムのためであるかにかかわらず、バッチレンダリングプロセスが追加のタスクをタスクリストに追加してもよい。たとえば、埋め込みアイテムのコンテンツを解析することは、追加の埋め込みアイテム(たとえば、セカンダリ埋め込みアイテム)を検出してもよく、これはバッチレンダリングエンジンに埋め込みアイテムを要求させ、および返されたときにコンテンツを解析させてもよい。コンテンツがたとえばJavaScriptなどのスクリプトを含む場合、スクリプトを実行することは、追加のタスクにレイアウトの生成やウェブページの1つまたは複数の要素の概観の変更などの追加のタスクを実行させてもよい。これらのタスクのいくつかは、将来開始することがスケジュールされてもよい。たとえば、画像の不透明度を一定の間隔で変更すると、画像がフェードインしているかのようにユーザに表示される。不透明度の各変化はタスクであり、スクリプトはタスクリストに、いくつかのそのようなタスクを追加させ、それぞれ現在の仮想時計のランタイムに指定された量を加えたものとなる。   Upon receiving a response from the fetch server, the batch rendering engine processes the content of the embedded item (430). For example, in response to receiving the content, the batch rendering engine may add a task to the task list, such as analyzing the received content of the embedded item. These tasks may be given the start time of the current virtual clock, which indicates that the task is ready to run (eg, the current time on the virtual clock). Parse the received content and the batch rendering process may add additional tasks to the task list, whether for the originally requested web page or for the embedded item. For example, analyzing the contents of an embedded item may detect additional embedded items (eg, secondary embedded items), which causes the batch rendering engine to request the embedded item and return the content when it is returned. It may be analyzed. If the content includes a script such as JavaScript, running the script may cause the additional task to perform additional tasks such as generating a layout or changing the appearance of one or more elements on a web page . Some of these tasks may be scheduled to start in the future. For example, if the opacity of the image is changed at regular intervals, it is displayed to the user as if the image is fading in. Each change in opacity is a task, and the script causes the task list to add several such tasks, each adding the amount specified in the current virtual clock runtime.

レンダリングプロセスの一部として、バッチレンダリングエンジンは、レンダリングが完了したか否かを判断してもよい(435)。この判断は、例えば、バッチレンダリングエンジンがタスクを完了する度に、あるいは所定の時間の間隔などで行われてもよい。仮想時計が停止タスクで指定された時間に達すると、レンダリングは終了してもよい。埋め込みアイテムのフェッチが未処理である間、仮想時計が進まないので、仮想時計が停止タスクで指定された時間に達したとき、バッチレンダリングエンジンは各フェッチリクエストの要求を受信することが保証される。したがって、バッチレンダリングエンジンは、リソースの待機をタイムアウトすることはない。   As part of the rendering process, the batch rendering engine may determine whether rendering is complete (435). This determination may be performed, for example, every time the batch rendering engine completes a task, or at a predetermined time interval. Rendering may end when the virtual clock reaches the time specified in the stop task. Since the virtual clock does not advance while the embedded item fetch is outstanding, the batch rendering engine is guaranteed to receive a request for each fetch request when the virtual clock reaches the time specified by the stop task. . Thus, the batch rendering engine never times out waiting for resources.

レンダリングが完了していない場合(435、いいえ)、バッチレンダリングエンジンは、タスクリスト内のタスクに取り掛かることを継続し、1つまたは複数の埋め込みアイテムの要求に対する応答などを待ってもよい。レンダ理暗愚が完了した場合(435、はい)バッチレンダリングエンジンは、要求されたウェブページのためのレンダリング結果をファイナライズし(440)、レンダリング結果を要求プロセスに返してもよい。レンダリング結果の要素は、バッチレンダリングエンジンによって完了されたタスクの結果として以前に生成されたものでもよい。たとえば、スクリプトの実行中にフェッチされた埋め込みアイテムのリストおよび遭遇したエラーがレンダリングが完了する前に生成されてもよい。レイアウトを決定するなどの別の要素がレンダリングが完了したあとに発生してもよい。いくつかの実施形態において、レンダリングプロセスの一部として実行されるスクリプトが要素の位置を要求しない限り、バッチレンダリングエンジンは、レンダリングが終了するまでレイアウトを決定しない。レンダリングが完了する前にレイアウトが生成されたとしても、バッチレンダリングエンジンは、レンダリング結果のファイナライズの一部としてレイアウトを最終的に生成してもよい。したがって、レンダリング結果をファイナライズすることは、新しい要素を生成することおよびすでに生成された要素を集めることを含んでもよい。いくつかの実施形態において、バッチレンダリングエンジンは、レンダリング結果をメモリに格納し、レンダリング結果の位置を要求プロセスに提供してもよい。いくつかの実施形態において、システムは、いつ生成されたかを示すタイムスタンプとともにレンダリング結果を格納してもよく、レンダリング結果の2つ以上のバージョンを格納してもよい。バッチ処理の最適化とともにバッチモードでレンダリング結果を生成し、次いでプロセス400は終了する。   If the rendering is not complete (435, No), the batch rendering engine may continue to work on the tasks in the task list, wait for a response to a request for one or more embedded items, and so on. If the render is complete (435, yes), the batch rendering engine may finalize the rendering results for the requested web page (440) and return the rendering results to the requesting process. The rendering result element may have been previously generated as a result of a task completed by the batch rendering engine. For example, a list of embedded items fetched during script execution and errors encountered may be generated before rendering is complete. Another element, such as determining the layout, may occur after rendering is complete. In some embodiments, the batch rendering engine does not determine the layout until rendering is complete unless a script that is executed as part of the rendering process requires the position of the element. Even if the layout is generated before rendering is complete, the batch rendering engine may eventually generate the layout as part of finalizing the rendering results. Thus, finalizing the rendering result may include generating new elements and collecting already generated elements. In some embodiments, the batch rendering engine may store the rendering results in memory and provide the location of the rendering results to the requesting process. In some embodiments, the system may store the rendering result with a time stamp indicating when it was generated, and may store more than one version of the rendering result. Producing rendering results in batch mode with batch processing optimization, then process 400 ends.

図5は、一実施形態に従った、バッチレンダリングエンジンが仮想時計を進めるプロセス例500を示す流れ図である。プロセス500は、レンダリングが終了したか否かを判断すうr一部として実行されてもよいが(例えば、図4のステップ435)、他の時間に(例えば、定期的に)実行されてもよい。プロセス500は、バッチレンダリングエンジンが埋め込みアイテムの要求を待っているか否かを判断することから開始してもよい(505)。例えば、バッチレンダリングエンジンがフェッチサーバから埋め込みアイテムを要求し、フェッチサーバからまだ応答を受信していない場合、バッチレンダリングエンジンは待機中である。バッチレンダリングエンジンが待機中である場合(505、はい)、仮想時計は進められず、バッチレンダリングエンジンは、存在するならば現在の仮想時間で実行する準備ができているタスクに取り組んでもよく、あるいは待機してもよい(510)。このステップは、図4のステップ415の一部として実行されてもよい。バッチレンダリングエンジンがフェッチ要求を待っていない場合(505、いいえ)、バッチレンダリングエンジンは、タスクリスト内に実行準備ができているタスクが存在するか否かを判断してもよい(515)。たとえば、タスクリスト内のタスクが仮想時計と等しいランタイムを有する場合、タスクは実行準備ができている。タスクが実行準備ができている場合(515、はい)、バッチレンダリングエンジンはタスクに取り組んでもよい(520)。タスクに取り組むことは、タスクリストに別のタスクを追加してもよく、そのうちのいくつかは実行準備ができていてもよく、そのうちの他のものは将来のランタイムを有していてもよい(例えば、現在の仮想時間プラス所定の時間)。このステップは、図4のステップ415の一部として実行されてもよい。実行準備が整っている保留中のタスクが存在しない場合(515、いいえ)、バッチレンダリングエンジンは仮想時計をタスクリストで指定された次のランタイムに進めてもよい。言い換えると、バッチレンダリングエンジンは、仮想時計を先に歪めてもよく、そうすることによってタスクリスト内のラインの次のタスクはすぐに実行できる。   FIG. 5 is a flow diagram illustrating an example process 500 for a batch rendering engine to advance a virtual clock, according to one embodiment. Process 500 may be performed as part of determining whether rendering is complete (eg, step 435 of FIG. 4), but may be performed at other times (eg, periodically). . Process 500 may begin by determining whether the batch rendering engine is waiting for a request for an embedded item (505). For example, if the batch rendering engine requests an embedded item from the fetch server and has not yet received a response from the fetch server, the batch rendering engine is waiting. If the batch rendering engine is waiting (505, yes), the virtual clock is not advanced and the batch rendering engine may work on a task that is ready to run at the current virtual time, if it exists, or It may wait (510). This step may be performed as part of step 415 of FIG. If the batch rendering engine is not waiting for a fetch request (505, No), the batch rendering engine may determine whether there is a task ready for execution in the task list (515). For example, if a task in the task list has a runtime equal to the virtual clock, the task is ready for execution. If the task is ready for execution (515, yes), the batch rendering engine may work on the task (520). Working on a task may add another task to the task list, some of which may be ready to run, others of which may have a future runtime ( For example, current virtual time plus predetermined time). This step may be performed as part of step 415 of FIG. If there are no pending tasks ready for execution (515, no), the batch rendering engine may advance the virtual clock to the next runtime specified in the task list. In other words, the batch rendering engine may distort the virtual clock first so that the next task on the line in the task list can be performed immediately.

タスクリスト内のラインの次のタスクが停止タスクである場合(530、はい)、レンダリングは完了する。そうでなければ、バッチレンダリングエンジンは、保留中のタスクに取り組むことを継続してもよい(520)。プロセス500は、実行準備ができている保留中のタスクがある間、あるいは埋め込みアイテムのフェッチを待機している間に、仮想時計がどのように進まないかを示す。したがって、これらのイベントに対して仮想時計が“停止して”おり、レンダリングエンジンが実際のクロックを使用するときに遭遇したエラーのクラスを避けることができる。さらに、プロセス500は、仮想時計がどのように前に歪ませられることができるかを示し、そうすることによっていくつかの例において、レンダリングプロセスは、タスクによって指示されたタイミング(例えば、画像のフェードインするまたはアニメーションの再生をする時間間隔を待機する)よりも実時間をかけないことができる。これは、本明細書でより詳細に説明するように、埋め込みアイテムがクロールなしで返されるときに特に当てはまる。もちろん、保留中のタスクのチェック(515)およびフェッチ要求(505)の順序を逆にすることもでき、および実施形態は、図5に示された順序に限定されないことが理解される。   If the next task on the line in the task list is a stop task (530, yes), rendering is complete. Otherwise, the batch rendering engine may continue to work on pending tasks (520). Process 500 shows how the virtual clock does not advance while there is a pending task ready to execute or while waiting for an embedded item fetch. Thus, the class of errors encountered when the virtual clock is “stopped” for these events and the rendering engine uses the actual clock can be avoided. In addition, process 500 shows how the virtual clock can be distorted before, so that in some examples, the rendering process can take the timing indicated by the task (eg, image fades). In real time or wait for a time interval to play an animation). This is especially true when embedded items are returned without crawling, as described in more detail herein. Of course, it is understood that the order of pending task checks (515) and fetch requests (505) can be reversed, and embodiments are not limited to the order shown in FIG.

図6は、実施形態に従った、フェッチサーバが埋め込みアイテムのコンテンツをバッチレンダリングエンジンに提供するプロセス例を図示する流れ図である。プロセス600は、図1のシステム100のようなシステムによって実行されてもよい。システムは、複数のバッチレンダリングシステムから、埋め込みアイテムのためのフェッチリソースに対応するプロセス600を使用してもよい。いくつかの実施形態において、プロセス600は、フェッチサーバによって実行されてもよく、およびバッチレンダリングエンジンの1つからの要求に応答して開始されてもよい。   FIG. 6 is a flow diagram illustrating an example process in which a fetch server provides embedded item content to a batch rendering engine, according to an embodiment. Process 600 may be performed by a system such as system 100 of FIG. The system may use a process 600 corresponding to fetch resources for embedded items from multiple batch rendering systems. In some embodiments, process 600 may be performed by a fetch server and may be initiated in response to a request from one of the batch rendering engines.

プロセス600は、埋め込みアイテム(605)のためのURLをフェッチサーバが受信することから開始してもよい。ULRは、バッチレンダリングエンジンによって提供されてもよく、およびバッチレンダリングエンジンによって要求された複数のURLの1つであってもよい。フェッチサーバは、要求された埋め込みアイテム(610)のURLに書き換え規則を適用してもよい。書き換え規則は、図1のURL書き換え規則154であってもよい。書き換え規則は、テンプレートおよびリダイレクトURLを含んでもよい。書き換え規則を適用することは、URLが書き換え規則の一つのためのパターンまたはテンプレートに一致するか否かを判断することを含んでもよい。例えば、テンプレートは、任意のクエリ文字列が削除されたURLであってもよく、およびシステムはテンプレートに一致するかを調べるために要求された埋め込みアイテムのURLからクエリ文字列を削除してもよい。別の例として、テンプレートは、任意の文字または文字列がワイルドカード文字と一致することができる場所を示す、*および?のようなワイルドカード文字を含んでもよい。   Process 600 may begin with a fetch server receiving a URL for an embedded item (605). The ULR may be provided by the batch rendering engine and may be one of multiple URLs requested by the batch rendering engine. The fetch server may apply the rewrite rule to the URL of the requested embedded item (610). The rewrite rule may be the URL rewrite rule 154 of FIG. The rewrite rule may include a template and a redirect URL. Applying the rewrite rule may include determining whether the URL matches a pattern or template for one of the rewrite rules. For example, the template may be a URL with any query string removed, and the system may remove the query string from the URL of the embedded item requested to see if it matches the template. . As another example, the template indicates where any character or string can match a wildcard character, * and? Wildcard characters such as

URLがパターンと一致した場合、書き換え規則は、リダイレクトURLを提供してもよく、およびフェッチサーバは、リダイレクトURLを備えた要求された埋め込みアイテムのURLを代用してもよい。書き換え規則を適用するための理由の一つは、フェッチサーバが、URLを識別し、および同じコンテンツを返すURLを識別し、不要なフェッチをスケジュールする必要がないようにするためにリダイレクトURLを使用できるようにするためである。一般的に埋め込まれたアイテムの特定のタイプは、動的に生成されたURLを有する。例えば、いくつかの埋め込みアイテムのURLは、乱数発生器によって生成される乱数、または日付と時刻関数によって返される現在の日付と時間に依存する。キャッシュバスティング(cache-busting)トラッキングURLと呼ばれるこれらの埋め込みオブジェクトは、一般的に、広告費用または収益を測定する目的で、ウェブページの固有のヒット数またはビュー数を測定するために使用される。このような埋め込みオブジェクトのコンテンツは、通常は同一であるが、固有のURLは、レンダリングエンジンによって検出される度にそのオブジェクトに対して生成される。したがって、そのような埋め込みアイテムを含むウェブページのために、レンダリングエンジンは、ウェブページのレンダリングを試みる度にオブジェクトのための新しく異なるURLを見て、書き換え規則を適用することなく、フェッチサーバは同じコンテンツを何度もフェッチする。これを避けるために、書き換え規則は、フェッチサーバにこれらのURLを識別させ、フェッチ要求をリダイレクトURLの下に格納された以前に取得されたコンテンツにリダイレクトするためのテンプレートを適用してもよい。   If the URL matches the pattern, the rewrite rule may provide a redirect URL, and the fetch server may substitute the URL of the requested embedded item with the redirect URL. One reason for applying the rewrite rules is that the fetch server uses redirect URLs to identify URLs and identify URLs that return the same content, so that unnecessary fetches need not be scheduled This is to make it possible. A specific type of generally embedded item has a dynamically generated URL. For example, the URL of some embedded items depends on a random number generated by a random number generator or a current date and time returned by a date and time function. These embedded objects, called cache-busting tracking URLs, are typically used to measure the unique hits or views of a web page for the purpose of measuring advertising costs or revenue. . The content of such an embedded object is usually the same, but a unique URL is generated for that object each time it is detected by the rendering engine. Thus, for a web page containing such an embedded item, the rendering engine sees a new and different URL for the object each time it tries to render the web page, and the fetch server is the same without applying rewrite rules. Fetch content many times. To avoid this, the rewrite rule may apply a template to allow the fetch server to identify these URLs and redirect the fetch request to previously acquired content stored under the redirect URL.

書き換え規則を適用するもう一つの理由は、ブラックリストに載っているURLを識別するためである。書き換え規則は、ブラックリストに載っているURLを識別する規則、あるいはブラックリストに載っているURLのためのパターンあるいはテンプレートを含んでもよい。例えば、書き換え規則は、テンプレート、および関連したリダイレクトURL、エラー、あるいはフラグを含んでもよい。要求された埋め込みアイテムのためのURLがブラックリストに載っているURLあるいはブラックリストに載っているURLのためのテンプレートと一致した場合、フェッチサーバは、URLをブラックリストに載っているものとして識別してもよい。いくつかの実施形態において、書き換え規則を適用することは、URLがリダイレクトURLに置き換えられる要因となってもよい。いくつかの実施形態において、書き換え規則を適用することは、URLがブラックリストに載っているものとしてフラグを立ててもよく、あるいはURLによって識別された埋め込みアイテムのための要求に対する応答として返すためにエラーを提供してもよい。   Another reason for applying the rewrite rule is to identify URLs on the black list. The rewrite rule may include a rule for identifying a URL on a black list, or a pattern or template for a URL on a black list. For example, a rewrite rule may include a template and an associated redirect URL, error, or flag. If the URL for the requested embedded item matches a blacklisted URL or a template for a blacklisted URL, the fetch server identifies the URL as being blacklisted. May be. In some embodiments, applying a rewrite rule may cause a URL to be replaced with a redirect URL. In some embodiments, applying the rewrite rule may flag the URL as blacklisted, or return in response to a request for an embedded item identified by the URL. An error may be provided.

URLがブラックリストに載っている場合(615、はい)、フェッチサーバは要求しているバッチレンダリングエンジン(620)にエラーを返してもよい。エラーは、リソースが見つからなかったことを示す標準的なエラー、あるいはリソースが必要ではない、またはスキップができることなどをレンダリングエンジンに知らせる特定のエラーであってもよい。エラーは、書き換え規則がリダイレクトURLを提供したとき、埋め込みアイテムテーブルから、書き換え規則、ハードコードなどのフラグに基づいて選択された一致させている書き換え規則によって、埋め込みアイテムテーブルから提供されてもよい。次いでこのURLのためのフェッチ要求が完了し、プロセス600は終了する。   If the URL is blacklisted (615, yes), the fetch server may return an error to the requesting batch rendering engine (620). The error may be a standard error indicating that the resource was not found, or a specific error that informs the rendering engine that the resource is not needed or can be skipped. The error may be provided from the embedded item table by a matching rewrite rule selected from the embedded item table based on a flag such as a rewrite rule or a hard code when the rewrite rule provides a redirect URL. The fetch request for this URL is then complete and process 600 ends.

URLがブラックリストに載っていない場合(615、いいえ)、フェッチサーバは、埋め込みアイテムデータストア(625)内の書き換えられたURLを探してもよい。埋め込みアイテムデータストアは、図1の埋め込みアイテムテーブル152であってもよい。オリジナルURLが書き換え規則の識別されたパターンと一致した場合、書き換えられたURLは、書き換え規則によって提供されたリダイレクトURLであってもよい。URLが書き換え規則の任意のテンプレートと一致しない場合、書き換えられたURLは、オリジナルURLであってもよい。URLが埋め込みアイテムデータストア(625、はい)内にある場合、フェッチサーバは、要求されたURLが画像用であるか否かを任意に決定してもよい(630)。これは任意であり、画像のためのテストをしない実施形態において、ステップ630は省略されてもよい。要求された埋め込みアイテムが画像であるか否かは、要求の情報、URL自体に基づいて、あるいは書き換えられたURLのための埋め込みアイテムデータストア内のフィールドに基づいて、決定されてもよい。埋め込みアイテムが画像である場合(630、はい)、図7のプロセス700に関してより詳細に説明されるように、システムは、画像のサイズについてサイズテーブル内を調べ、およびサイズを有するモック画像を返してもよい。いくつかの実施形態において、フェッチサーバは、埋め込みアイテムデータストアを前に、またはエントリが古いかどうかを判定した後に、書き換え規則を適用する前にステップ630を実行してもよいことが理解される。   If the URL is not on the black list (615, no), the fetch server may look for the rewritten URL in the embedded item data store (625). The embedded item data store may be the embedded item table 152 of FIG. If the original URL matches the identified pattern of the rewrite rule, the rewritten URL may be a redirect URL provided by the rewrite rule. If the URL does not match any template in the rewrite rule, the rewritten URL may be the original URL. If the URL is in the embedded item data store (625, yes), the fetch server may optionally determine (630) whether the requested URL is for an image. This is optional and in an embodiment that does not test for images, step 630 may be omitted. Whether the requested embedded item is an image may be determined based on request information, the URL itself, or based on a field in the embedded item data store for the rewritten URL. If the embedded item is an image (630, yes), the system looks in the size table for the size of the image and returns a mock image with the size, as described in more detail with respect to the process 700 of FIG. Also good. It is understood that in some embodiments, the fetch server may perform step 630 before applying the rewrite rules after the embedded item data store or after determining whether the entry is stale. .

要求された埋め込みアイテムが画像でない場合(630、いいえ)、フェッチサーバは、埋め込みアイテムテーブル内のエントリが古いか否かを判断してもよい(645)。エントリが古いか否かは、アイテムの変更率、埋め込みアイテムのタイプ(例えば、スクリプト、スタイルシート、画像など)、ブラウザレンダリングエンジンがレンダリングしているウェブページの重要度、などのいくつかの要因に依存してもよい。いくつかの実施形態において、埋め込みアイテムテーブルは、例えばブラックリストに載っている埋め込みアイテムのURLのリダイレクトURLのためのように、エントリが古くならないことを示すフィールドあるいは値を有してもよい。エントリが古くない場合(645、いいえ)、フェッチサーバは、書き換えられたURLについての埋め込みアイテムテーブルのコンテンツを、要求しているバッチレンダリングエンジン(650)に返してもよく、この埋め込みアイテムについてのプロセス600は終了する。いくつかの実施形態において、コンテンツを返すことは、フェッチサーバが埋め込みアイテムテーブル内のエントリの位置を応答として提供することと、バッチレンダリングプロセスが位置を使用してコンテンツにアクセスすることと、を含んでもよい。   If the requested embedded item is not an image (630, No), the fetch server may determine whether the entry in the embedded item table is stale (645). Whether an entry is stale depends on several factors, such as the rate of change of the item, the type of embedded item (eg script, stylesheet, image, etc.), the importance of the web page that the browser rendering engine is rendering, etc. It may depend. In some embodiments, the embedded item table may have a field or value that indicates that the entry will not age, such as for a redirect URL for a blacklisted embedded item URL. If the entry is not stale (645, no), the fetch server may return the contents of the embedded item table for the rewritten URL to the requesting batch rendering engine (650) and process for this embedded item. 600 ends. In some embodiments, returning the content includes the fetch server providing the location of the entry in the embedded item table as a response, and the batch rendering process using the location to access the content. But you can.

埋め込みアイテムテーブル内のエントリが古い場合(645、はい)または書き換えられたURLが埋め込みアイテムデータストア内に無い場合(625、いいえ)、フェッチサーバは、例えば図1のウェブ巡回エンジン130のようなウェブ巡回からURLのフェッチを要求してもよい(635)。フェッチサーバがクロールコンテンツを受信するとき、通信あるいはさらなる処理をせずに、受信したコンテンツを埋め込みアイテムデータストアにエントリとして格納してもよい(640)。いくつかの実施形態において、フェッチサーバは、埋め込みアイテムの以前のクロールのコンテンツおよびクロール時間に上書きせずに、埋め込みアイテムのコンテンツおよびクロール時間を保存することができる。いくつかの実施形態において、フェッチサーバは、埋め込みアイテムテーブルに1つのエントリをキープしてもよく、および埋め込みアイテムの以前のクロールを維持しなくてもよい。いずれにせよ、埋め込みアイテムテーブル内に一旦保存されると、コンテンツはキャッシュされ、および古くなるまで再度フェッチされる必要はない。フェッチサーバは、フェッチされたコンテンツを要求しているバッチレンダリングエンジンに返してもよく(650)、プロセス600は終了する。   If the entry in the embedded item table is old (645, yes) or if the rewritten URL is not in the embedded item data store (625, no), the fetch server may be a web such as the web patrol engine 130 of FIG. A URL fetch may be requested from the patrol (635). When the fetch server receives crawl content, the received content may be stored as an entry in the embedded item data store (640) without communication or further processing. In some embodiments, the fetch server may save the embedded item content and crawl time without overwriting the previous crawl content and crawl time of the embedded item. In some embodiments, the fetch server may keep one entry in the embedded item table and may not maintain a previous crawl of the embedded item. In any case, once stored in the embedded item table, the content is cached and does not need to be fetched again until it is out of date. The fetch server may return 650 the fetched content to the requesting batch rendering engine, and process 600 ends.

図7は、一実施形態に従った、フェッチサーバがモック画像をバッチレンダリングエンジンに提供するプロセス例700を図示する流れ図である。プロセス700は、図1のシステム100のようなシステムによって実行されてもよい。システムは、複数のバッチレンダリングエンジンからの、ウェブページに埋め込まれた画像のためのフェッチ要求に応答するために、プロセス700を使用してもよい。いくつかの実施形態において、プロセス700は、フェッチサーバによって実行されてもよく、およびバッチレンダリングエンジンの1つからの要求に応答して開始されてもよい。いくつかの実施形態において、フェッチサーバは、他の埋め込みアイテム(例えば、図6のプロセス600)とは無関係にプロセス700を実行してもよい。別の実施形態において、フェッチサーバは、プロセス700の要素を他の埋め込みアイテムを含むプロセス、例えば図6のプロセス600に組み込んでもよい。   FIG. 7 is a flow diagram illustrating an example process 700 for a fetch server to provide mock images to a batch rendering engine, according to one embodiment. Process 700 may be performed by a system such as system 100 of FIG. The system may use process 700 to respond to fetch requests for images embedded in web pages from multiple batch rendering engines. In some embodiments, process 700 may be performed by a fetch server and may be initiated in response to a request from one of the batch rendering engines. In some embodiments, the fetch server may perform process 700 independently of other embedded items (eg, process 600 of FIG. 6). In another embodiment, the fetch server may incorporate the elements of process 700 into a process that includes other embedded items, such as process 600 of FIG.

プロセス700は、要求された画像がサイズテーブル(705)にエントリを有するか否かをフェッチサーバが判断することから開始してもよい。画像サイズテーブルは、図1の画像サイズテーブル156であってもよい。画像サイズテーブルは、画像のためのサイズを含み、これはURLのような画像のための識別子によって格納される。画像がサイズテーブルにない場合(705、いいえ)、あるいは画像がサイズテーブルにあるが(705、はい)古い(710、はい)場合、フェッチサーバは、例えば図1のウェブ巡回エンジン130のようなウェブ巡回エンジンを介して、画像のフェッチ(715)をスケジュールしてもよい。いくつかの実施形態において、フェッチサーバは、エントリが古いか否かを判断するためにサイズテーブルの情報を使用してもよい。いくつかの実施形態において、フェッチサーバは、サイズが古いか否かを判断するために、図6のステップ645に関して上述したように、別個の埋め込みアイテムテーブルからの情報を使用してもよい。したがって、いくつかの実施形態において、フェッチサーバは図6のステップ645と併せて、あるいはその一部としてステップ710を実行してもよい。画像のためのコンテンツが受信されたとき、フェッチサーバは、サイズテーブルに画像のためのエントリを追加してもよく、エントリはフェッチされた画像のサイズを含む(720)。いくつかの実施形態において、フェッチサーバは、図6のステップ640の一部として上述されたように、フェッチされたコンテンツを埋め込みアイテムテーブルに格納してもよい。   Process 700 may begin with the fetch server determining whether the requested image has an entry in the size table (705). The image size table may be the image size table 156 of FIG. The image size table contains the size for the image, which is stored by an identifier for the image, such as a URL. If the image is not in the size table (705, no), or if the image is in the size table (705, yes) and old (710, yes), the fetch server may be a web such as the web patrol engine 130 of FIG. An image fetch (715) may be scheduled via the patrol engine. In some embodiments, the fetch server may use the size table information to determine whether an entry is stale. In some embodiments, the fetch server may use information from a separate embedded item table, as described above with respect to step 645 of FIG. 6, to determine whether the size is old. Thus, in some embodiments, the fetch server may perform step 710 in conjunction with or as part of step 645 of FIG. When content for an image is received, the fetch server may add an entry for the image to the size table, where the entry includes the size of the fetched image (720). In some embodiments, the fetch server may store the fetched content in an embedded item table, as described above as part of step 640 of FIG.

画像がサイズテーブルにあり(705、はい)、かつ古くない(710、いいえ)場合、あるいは画像がフェエッチされて格納された(720)後、システムはサイズテーブル(725)からサイズを使用してモック画像を生成してもよい。モック画像は、要求された画像と同じサイズであるが空のコンテンツを指定する画像ファイルフォーマットデータを有してもよい。システムは、モック画像(730)を要求バッチレンダリングエンジンに返し、プロセス700は終了する。   If the image is in the size table (705, yes) and not old (710, no), or after the image has been fetched and stored (720), the system mockes using the size from the size table (725) An image may be generated. The mock image may have image file format data that specifies the empty content that is the same size as the requested image. The system returns the mock image (730) to the request batch rendering engine and process 700 ends.

いくつかの実施形態において、プロセス700のステップのいくつかは、任意であるかまたは他の処理の一部として実行されてもよいことが理解される。例えば、画像のサイズが古いか否かを判断するステップは、図6のステップ645の一部として実行されてもよく、埋め込みアイテムテーブルの情報に基づいてもよい。さらに、ステップ715は、図6のステップ635の一部として、あるいはそれと併せて実行されてもよい。言い換えると、フェッチサーバは、画像のためのコンテンツをフェッチする、キャッシュされフェッチされたコンテンツが古いか否かを判断する、などのようなプロセス600の態様とプロセス700の態様を組み合わせてもよい。もちろん、フェッチサーバは、プロセス600と完全に独立したプロセス700を実行してもよい。したがって、実装はプロセス700の変形を含んでもよい。   It will be appreciated that in some embodiments, some of the steps of process 700 may be optional or performed as part of other processing. For example, the step of determining whether the size of the image is old may be executed as part of step 645 of FIG. 6 or may be based on information in the embedded item table. Further, step 715 may be performed as part of or in conjunction with step 635 of FIG. In other words, the fetch server may combine aspects of the process 600 and process 700, such as fetching content for an image, determining whether cached and fetched content is stale, etc. Of course, the fetch server may execute a process 700 that is completely independent of the process 600. Accordingly, implementations may include variations of process 700.

図6は、汎用コンピュータデバイス800の例を示しており、それは、図1のシステム100、及び/又はクライアント170として動作し得、また、本明細書に記載される技法を用いて使用され得る。コンピューティングデバイス800は、コンピューティングデバイスの種々の形態例、例えば、ラップトップ、デスクトップ、ワークステーション、パーソナルデジタルアシスタント、携帯電話、スマートフォン、タブレット、サーバ、ならびにウェアラブルデバイスを含む他のコンピューティングデバイスなどを表わすことが意図される。本明細書に示される構成要素、それらのつながりや関係、およびそれらの機能は、単なる例であることを意味するものであり、この文書において記載される及び/又は請求される発明の実施形態を限定することを意味するものではない。   FIG. 6 illustrates an example of a general purpose computing device 800 that may operate as the system 100 of FIG. 1 and / or the client 170 and may be used with the techniques described herein. The computing device 800 includes various examples of computing devices such as laptops, desktops, workstations, personal digital assistants, mobile phones, smartphones, tablets, servers, and other computing devices including wearable devices. It is intended to represent. The components shown herein, their connections and relationships, and their functions are meant to be examples only and are intended to illustrate the embodiments of the invention described and / or claimed in this document. It is not meant to be limiting.

コンピューティングデバイス800は、インターフェース808経由で接続される、例えばシリコーンベースのハードウェアプロセッサ等のプロセッサ802、メモリ804、ストレージデバイス806、および拡張ポート810を含む。いくつかの実施形態において、コンピューティングデバイス800は、インターフェース808経由で接続される、いくつかある構成要素の中でも、送受信機846、通信インターフェース844、およびGPS(全地球測位システム)レシーバモジュー848を含み得る。デバイス800は、通信インターフェース844を通して無線で通信し得、それは、必要に応じて、デジタル信号処理回路を含み得る。構成要素802、804、806、808、810、840、844、846、および848のそれぞれは、必要に応じて、一般的なマザーボード上にまたは他の様式で搭載され得る。   The computing device 800 includes a processor 802, such as a silicone-based hardware processor, a memory 804, a storage device 806, and an expansion port 810 connected via an interface 808. In some embodiments, the computing device 800 includes a transceiver 846, a communication interface 844, and a GPS (Global Positioning System) receiver module 848, among other components connected via an interface 808. obtain. Device 800 may communicate wirelessly through communication interface 844, which may include digital signal processing circuitry, if desired. Each of the components 802, 804, 806, 808, 810, 840, 844, 846, and 848 can be mounted on a general motherboard or in other manners as needed.

プロセッサ802は、メモリ804内またはストレージデバイス806上に記憶された命令を含む、コンピューティングデバイス800内の実行のための命令を処理することができ、外部入出力デバイス、例えばディスプレイ816などの上にGUIのためのグラフィカル情報を表示する。ディスプレイ816は、モニタまたはフラットタッチスクリーンディスプレイであり得る。いくつかの実施形態において、複数のプロセッサ及び/又は複数のバスが、必要に応じて、複数のメモリや複数の種類のメモリと共に、使用され得る。また、複数のコンピューティングデバイス800は、(例えば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして)必要な動作の一部分を提供する各デバイスと、接続され得る。   The processor 802 can process instructions for execution in the computing device 800, including instructions stored in the memory 804 or on the storage device 806, on an external input / output device, such as the display 816. Displays graphical information for the GUI. Display 816 may be a monitor or a flat touch screen display. In some embodiments, multiple processors and / or multiple buses may be used with multiple memories and multiple types of memory as required. A plurality of computing devices 800 may also be connected with each device that provides a portion of the required operations (eg, as a server bank, a group of blade servers, or a multiprocessor system).

メモリ804は、コンピューティングデバイス800内に情報を記憶する。一実施形態において、メモリ804は、揮発性メモリのユニットまたは複数ユニットである。別の実施形態において、メモリ804は、不揮発性メモリのユニットまたは複数ユニットである。メモリ804はまた、コンピュータで読み取り可能な媒体の別の形態、例えば磁気もしくは光学ディスクなどであり得る。いくつかの実施形態において、メモリ804は、拡張インターフェースを通して提供される拡張メモリを含み得る。   Memory 804 stores information within computing device 800. In one embodiment, the memory 804 is a unit or units of volatile memory. In another embodiment, the memory 804 is a unit or units of non-volatile memory. The memory 804 may also be another form of computer readable medium, such as a magnetic or optical disk. In some embodiments, the memory 804 may include expansion memory provided through an expansion interface.

ストレージデバイス806は、コンピューティングデバイス800のためのマスストレージを提供することができる。一実施形態において、ストレージデバイス806は、コンピュータで読み取り可能な媒体、例えば、フロッピーディスクデバイス、ハードディスクデバイス、光学ディスクデバイス、またはテープデバイス、フラッシュメモリもしくは他の類似の固体メモリデバイス、あるいはストレージエリアネットワークもしくは他の構成におけるデバイスを含む、デバイスのアレイなどであり得るか、それらを含み得る。コンピュータプログラム製品は、そのようなコンピュータで読み取り可能な媒体に明白に具体化され得る。コンピュータプログラム製品はまた、実行されるときに、例えば上記したものなどの、1つ以上の方法を行う命令を含み得る。コンピュータまたはマシンで読み取り可能な媒体は、ストレージデバイス、例えばメモリ804、ストレージデバイス806、またはプロセッサ802上のメモリなどである。   Storage device 806 can provide mass storage for computing device 800. In one embodiment, the storage device 806 is a computer readable medium such as a floppy disk device, hard disk device, optical disk device, or tape device, flash memory or other similar solid state memory device, or storage area network or It can be, or can include, an array of devices, including devices in other configurations. A computer program product may be explicitly embodied in such computer readable media. A computer program product may also include instructions that, when executed, perform one or more methods, such as those described above. The computer or machine readable medium is a storage device, such as memory 804, storage device 806, or memory on processor 802.

インターフェース808は、コンピューティングデバイス800のための帯域消費型の動作を扱う高速コントローラ、またはより低い帯域消費型の動作を扱う低速コントローラ、あるいはそのようなコントローラの組み合わせであり得る。外部インターフェース840は、他のデバイスとのデバイス800の近接領域通信を可能にするように、提供され得る。いくつかの実施形態において、コントローラ808は、ストレージデバイス806および拡張ポート814に結合され得る。種々の通信ポート(例えば、USB、ブルートゥース(登録商標)、イーサネット(登録商標)、無線イーサネット(登録商標))を含み得る拡張ポートは、例えば、ネットワークアダプタを通して、1つ以上の入出力デバイス、例えば、キーボード、ポインティングデバイス、スキャナ、または例えばスイッチもしくはルータなどのネットワーキングデバイスに結合され得る。   Interface 808 may be a high speed controller that handles bandwidth consuming operations for computing device 800, or a low speed controller that handles lower bandwidth consuming operations, or a combination of such controllers. An external interface 840 may be provided to allow proximity area communication of the device 800 with other devices. In some embodiments, controller 808 can be coupled to storage device 806 and expansion port 814. Expansion ports that can include various communication ports (eg, USB, Bluetooth®, Ethernet®, wireless Ethernet®) can be connected to one or more input / output devices, eg, through a network adapter, for example. , Keyboards, pointing devices, scanners, or networking devices such as switches or routers.

コンピューティングデバイス800は、図面に示されるように、多くの異なる形態で実装され得る。例えば、それは、標準サーバ830として、またはそのようなサーバのグループにおいて複数回、実装され得る。それはまた、ラックサーバシステムの一部として実装され得る。加えて、それは、パーソナルコンピュータ、例えばラップトップコンピュータ832、デスクトップコンピュータ834、あるいはスマートフォン836などで実装され得る。システム全体は、互いに通信する複数のコンピューティングデバイス800で構成され得る。他の構成が可能である。   The computing device 800 may be implemented in many different forms, as shown in the drawings. For example, it may be implemented multiple times as a standard server 830 or in a group of such servers. It can also be implemented as part of a rack server system. In addition, it may be implemented on a personal computer, such as a laptop computer 832, a desktop computer 834, or a smartphone 836. The entire system may be comprised of multiple computing devices 800 that communicate with each other. Other configurations are possible.

図9は、汎用コンピュータデバイス900の例を示しており、それは、図1のシステム100であり得るとともに本明細書に記載される技法を用いて使用され得る。コンピューティングデバイス900は、大規模データ処理デバイス、例えばサーバ、ブレードサーバ、データセンター、メインフレーム、および他の大規模コンピューティングデバイスなどの種々の形態例を表わすことが意図される。コンピューティングデバイス900は、場合によっては1つ以上の通信ネットワークによって相互接続されるネットワーク接続ストレージノードを含む、複数プロセッサを有する分散型システムであり得る。本明細書に示された構成要素、それらのつながりや関係、およびそれらの機能は、単なる例示であることを意味するものであり、この文書において記載されるか請求される発明の実施形態を限定することを意味するものではない。   FIG. 9 illustrates an example of a general purpose computing device 900, which can be the system 100 of FIG. 1 and can be used with the techniques described herein. Computing device 900 is intended to represent various example forms of large data processing devices such as servers, blade servers, data centers, mainframes, and other large computing devices. The computing device 900 may be a distributed system having multiple processors, possibly including network attached storage nodes that are interconnected by one or more communication networks. The components shown herein, their connections and relationships, and their functions are meant to be examples only and limit the embodiments of the invention described or claimed in this document. Does not mean to do.

分散型コンピューティングシステム900は、任意の数のコンピューティングデバイス980を含み得る。コンピューティングデバイス980は、ローカルもしくはワイドエリアネットワーク、専用光学リンク、モデム、ブリッジ、ルータ、スイッチ、有線もしくは無線ネットワーク等の上で通信する、サーバまたはラックサーバ、メインフレーム等を含み得る。   The distributed computing system 900 may include any number of computing devices 980. The computing device 980 may include a server or rack server, mainframe, etc. that communicates over a local or wide area network, dedicated optical links, modems, bridges, routers, switches, wired or wireless networks, and the like.

いくつかの実施形態において、各コンピューティングデバイスは、複数のラックを含み得る。例えば、コンピューティングデバイス980aは、複数のラック958a〜958nを含む。各ラックは、1以上のプロセッサ、例えばプロセッサ952a〜952nおよび962a〜962nなどを含み得る。プロセッサは、データプロセッサ、ネットワーク接続ストレージデバイス、および他のコンピュータ制御デバイスを含み得る。いくつかの実施形態において、1つのプロセッサは、マスタープロセッサとして動作し得、スケジューリングおよびデータ分散タスクを管理し得る。プロセッサは、1以上のラックスイッチ958を通して相互接続され得、1以上のラックが、スイッチ978を通して接続され得る。スイッチ978は、複数の接続されたコンピューティングデバイス900間の通信に対処し得る。   In some embodiments, each computing device may include multiple racks. For example, the computing device 980a includes a plurality of racks 958a-958n. Each rack may include one or more processors, such as processors 952a-952n and 962a-962n. The processor may include data processors, network attached storage devices, and other computer control devices. In some embodiments, one processor may operate as a master processor and manage scheduling and data distribution tasks. Processors can be interconnected through one or more rack switches 958, and one or more racks can be connected through switches 978. The switch 978 can handle communication between multiple connected computing devices 900.

各ラックは、メモリ、例えばメモリ954やメモリ964など、およびストレージ、例えば956および966などを含み得る。ストレージ956および966は、マスストレージを提供し得、揮発性もしくは不揮発性ストレージ、例えばネットワーク接続ディスク、フロッピーディスク、ハードディスク、光学ディスク、テープ、フラッシュメモリもしくは他の類似の固体メモリデバイス、あるいはストレージエリアネットワークまたは他の構成におけるデバイスを含む、デバイスのアレイなどを含み得る。ストレージ956または966は、複数のプロセッサ、複数のラック、または複数のコンピューティングデバイス間で共有され得、1つ以上のプロセッサによって実行可能な命令を記憶するコンピュータで読み取り可能な媒体を含み得る。メモリ954および964は、例えば、揮発性メモリのユニットまたは複数ユニット、不揮発性メモリのユニットもしくは複数ユニット、及び/又はコンピュータで読み取り可能な媒体の他の形態、例えば、磁気もしくは光学ディスク、フラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、およびそれらの組み合わせなどを含み得る。メモリ、例えばメモリ954などはまた、プロセッサ952a〜952n間で共有され得る。索引などのデータ構造は、例えば、ストレージ956やメモリ954にわたって、記憶され得る。コンピューティングデバイス700は、図示されない他の構成要素、例えば、コントローラ、バス、入出力デバイス、通信モジュール等を含み得る。   Each rack may include memory, such as memory 954 and memory 964, and storage, such as 956 and 966. Storage 956 and 966 may provide mass storage and may be volatile or non-volatile storage, such as network attached disks, floppy disks, hard disks, optical disks, tapes, flash memory or other similar solid state memory devices, or storage area networks. Or an array of devices, etc., including devices in other configurations. Storage 956 or 966 may include a computer-readable medium that stores instructions executable by one or more processors that may be shared among multiple processors, multiple racks, or multiple computing devices. Memories 954 and 964 may be, for example, a volatile memory unit or units, a non-volatile memory unit or units, and / or other forms of computer readable media, such as magnetic or optical disks, flash memory, It may include cache, random access memory (RAM), read only memory (ROM), combinations thereof, and the like. Memory, such as memory 954, may also be shared between processors 952a-952n. A data structure such as an index may be stored across the storage 956 and memory 954, for example. The computing device 700 may include other components not shown, such as a controller, a bus, an input / output device, a communication module, and the like.

システム100などのシステム全体は、互いと通信する複数のコンピュータデバイス900で構成され得る。例えば、デバイス980aは、デバイス980b、980c、および980dと通信し得、これらは、集合的にシステム100として知られ得る。別の例として、図1のシステム100は、1以上のコンピュータデバイス900を含み得る。コンピュータデバイスのうちのいくつかは、互いに地理的に近く位置し得、その他は、地理的に離れて位置し得る。コンピュータデバイス900のレイアウトは、単なる例であり、システムは、他のレイアウトまたは構成を取り得る。   An entire system, such as system 100, may be comprised of multiple computing devices 900 that communicate with each other. For example, device 980a may communicate with devices 980b, 980c, and 980d, which may be collectively known as system 100. As another example, the system 100 of FIG. 1 can include one or more computing devices 900. Some of the computing devices may be located geographically close to each other and others may be located geographically apart. The layout of the computing device 900 is merely an example, and the system can take other layouts or configurations.

さまざまな実施形態は、ストレージシステム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータや命令を受信するように、並びにそれらにデータや命令を送信するように、結合される、特殊目的もしくは一般の目的であり得る、回路基板に形成された少なくとも1つのプログラム可能なプロセッサを含むプログラム可能なシステム上で実行可能または解釈可能である1つ以上のコンピュータプログラムにおける実施形態を含むことができる。   Various embodiments can be combined for receiving data and instructions from a storage system, at least one input device, and at least one output device, and for sending data and instructions to them. Embodiments can be included in one or more computer programs that can be executed or interpreted on a programmable system that includes at least one programmable processor formed on a circuit board, which can be a general purpose.

これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、またはコードとしても知られる)は、プログラム可能なプロセッサに対する機械語命令を含み、高レベル手続言語及び/又はオブジェクト指向プログラミング言語で、ならびに/あるいはアセンブリ/機械言語で実装することができる。本明細書で使用される場合、「機械可読媒体」「コンピュータ可読媒体」という用語は、機械語命令及び/又はデータをプログラム可能なプロセッサに提供するために使用される任意の非一時的コンピュータプログラム製品、装置、及び/又はデバイス(例えば、磁気ディスク、光ディスク、メモリ(読み取り専用メモリを含む)、プログラマブル論理デバイス(PLD))を指す。   These computer programs (also known as programs, software, software applications, or code) include machine language instructions for programmable processors, in high-level procedural and / or object-oriented programming languages, and / or assembly / Can be implemented in machine language. As used herein, the terms “machine-readable medium” and “computer-readable medium” refer to any non-transitory computer program used to provide machine language instructions and / or data to a programmable processor. Product, apparatus, and / or device (eg, magnetic disk, optical disk, memory (including read-only memory), programmable logic device (PLD)).

本明細書で述べたシステムおよび技術は、バックエンドコンポーネント(例えば、データサーバとして)を含むコンピューティングシステム、またはミドルウェアコンポーネント(例えば、アプリケーションサーバ)を含むコンピューティングシステム、またはフロントエンドコンポーネント(例えば、ユーザが本明細書で述べたシステムおよび技術の実装と相互作用することができるグラフィカルユーザインタフェースまたはウェブブラウザを備えたクライアントコンピュータ)を含むコンピューティングシステム、またはこのようなバックエンド、ミドルウェア、またはフロントエンドコンポーネントの任意の組合せで、実装されることができる。前記システムのコンポーネントは、デジタルデータ通信(例えば通信ネットワーク)の任意の形式または媒体で接続されることができる。通信ネットワークの例としては、ローカルエリアネットワーク(”LAN”)、ワイドエリアネットワーク(”WAN”)、およびインターネットを含む。   The systems and techniques described herein include a computing system that includes a back-end component (eg, as a data server), or a computing system that includes a middleware component (eg, an application server), or a front-end component (eg, a user). Computing system comprising a graphical user interface or client computer with a web browser that can interact with the implementation of the systems and technologies described herein, or such back-end, middleware, or front-end components Can be implemented in any combination. The components of the system can be connected by any form or medium of digital data communication (eg, a communication network). Examples of communication networks include a local area network (“LAN”), a wide area network (“WAN”), and the Internet.

コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントおよびサーバは、通常、相互に離れており、および通常は、通信ネットワークを通じて相互作用する。クライアントとサーバの関係は、それぞれのコンピュータ上で動作し、互いにクライアント−サーバ関係を有するコンピュータプログラムの効力によって生じる。   The computing system can include clients and servers. A client and server are usually remote from each other and typically interact through a communication network. The client-server relationship arises from the effectiveness of computer programs that run on each computer and have a client-server relationship with each other.

多くの実施形態が説明されてきた。それにもかかわらず、本発明の精神および範囲から逸脱することなく、さまざまな変更がなされ得る。さらに、図に示された論理フローは、望ましい結果を達成するために、図示された特定の順序または連続する順序である必要はない。さらに、他のステップを設けても、または記載されたフローから複数のステップを除いてもよく、また、記載されたシステムに他の要素を追加してもよく、またはそこから除去してもよい。従って、他の実施形態は、添付の特許請求の範囲に含まれる。   A number of embodiments have been described. Nevertheless, various modifications can be made without departing from the spirit and scope of the invention. Further, the logical flows shown in the figures need not be in the specific order shown or in sequential order to achieve the desired result. In addition, other steps may be provided, or multiple steps may be omitted from the described flow, and other elements may be added to or removed from the described system. . Accordingly, other embodiments are within the scope of the appended claims.

110 インデキシングエンジン
115 インデックス
120 クエリエンジン
130 ウェブ巡回エンジン
140 レンダリングサーバ
142 レンダリングエンジン
148 レンダリング結果
150 フェッチサーバ
152 埋め込みアイテムテーブル
154 URL書き換え規則
156 画像寸法テーブル
170 ネットワーク
180 クライアント
182 クエリ
184 レスポンス
190 サーバ
220 スタイルシート
230 画像ファイル
240 キャッシュバスティングURL
305 ページタスクリスト
310 バーチャル時計
315 レンダリング結果
316 画像
317 DOMツリー
318 レイアウト
319 埋め込みリソース
320 エラー
110 Indexing Engine 115 Index 120 Query Engine 130 Web Tour Engine 140 Rendering Server 142 Rendering Engine 148 Rendering Result 150 Fetch Server 152 Embedded Item Table 154 URL Rewrite Rule 156 Image Size Table 170 Network 180 Client 182 Query 184 Response 190 Server 220 Style Sheet 230 Image file 240 Cache busting URL
305 page task list 310 virtual clock 315 rendering result 316 image 317 DOM tree 318 layout 319 embedded resource 320 error

Claims (18)

ウェブページをレンダリングするための要求をバッチプロセスから受信するステップと、
少なくとも1つのプロセッサを使用して、仮想時計と前記ウェブページをレンダリングするためのタスクリストを初期化するステップであって、前記仮想時計が、埋め込みアイテムのための要求が未処理であるときかつタスクが準備完了であるとき、依然として静止している、初期化するステップと、
前記仮想時計に従って前記タスクリスト内のタスクを実行するステップと、
前記仮想時計が前記タスクリスト内の停止タスクのためのランタイムに一致するとき、前記少なくとも1つのプロセッサを使用して、前記ウェブページのためのレンダリング結果を生成するステップと、
前記バッチプロセスのための前記レンダリング結果を提供するステップと、を含む、方法。
Receiving a request to render a web page from a batch process;
Initializing a virtual clock and a task list for rendering the web page using at least one processor, wherein the virtual clock is open when a request for an embedded item is outstanding Initializing, which is still stationary when is ready
Executing the tasks in the task list according to the virtual clock;
Generating a rendering result for the web page using the at least one processor when the virtual clock matches a runtime for a stopped task in the task list;
Providing the rendering results for the batch process.
前記タスクリストを初期化するステップが、ランタイムセットを備えた前記停止タスクを前記仮想時計に追加された所定の時間に追加するステップを含む、請求項1に記載の方法。   The method of claim 1, wherein initializing the task list comprises adding the stopped task with a runtime set to a predetermined time added to the virtual clock. 前記バッチプロセスが、インデックスエンジンを含み、かつ前記方法が、インデックスのトークンをランク付けするために前記レンダリング結果を使用するステップをさらに含む、請求項1に記載の方法。   The method of claim 1, wherein the batch process includes an index engine, and the method further comprises using the rendering results to rank index tokens. 埋め込みアイテムに対する要求が未解決でない、かつ前記仮想時計よりも大きいランタイムを有するただ一つのタスクが前記タスクリストにあるとき、前記仮想時計を前記タスクリスト内のタスクのランタイムに進めるステップをさらに含む、請求項1に記載の方法。   Further comprising advancing the virtual clock to the runtime of a task in the task list when a request for an embedded item is not outstanding and there is only one task in the task list having a runtime greater than the virtual clock; The method of claim 1. 前記バッチプロセスが、インデックスエンジンであり、かつ前記方法が、前記レンダリング結果の情報に基づいて、前記ウェブページのためのランクを降格させるステップをさらに含む、請求項1に記載の方法。   The method of claim 1, wherein the batch process is an index engine and the method further comprises demoting a rank for the web page based on the rendering result information. 前記バッチプロセスが、インデックスエンジンであり、かつ前記方法が、動的に生成されたコンテンツにインデックスを付けるために前記レンダリング結果を使用するステップをさらに含む、請求項1に記載の方法。   The method of claim 1, wherein the batch process is an indexing engine and the method further comprises using the rendering results to index dynamically generated content. 前記仮想時計に従って前記タスクリスト内のタスクを実行するステップが、埋め込みアイテムに対する要求が未解決でないかつ前記仮想時計に一致するランタイムを有するタスクが存在しないと決定したことに応答して、前記仮想時計を前記タスクリスト内の次に発生するタスクによって表される時間に進めるステップを含む、請求項1に記載の方法。   In response to the step of executing a task in the task list according to the virtual clock determining that a request for an embedded item is not outstanding and no task has a runtime that matches the virtual clock. The method of claim 1, comprising advancing to a time represented by a next occurring task in the task list. 前記ウェブページの埋め込みアイテムを識別するステップと、
前記埋め込みアイテムのためのコンテンツを要求するステップと、
前記要求に応答して、前記コンテンツを受信するステップと、
前記コンテンツを処理するために前記タスクリストにタスクを追加するステップであって、前記追加されたタスクが、前記仮想時計と等しいランタイムを有する、追加するステップと、をさらに含む、請求項1に記載の方法。
Identifying an embedded item on the web page;
Requesting content for the embedded item;
Receiving the content in response to the request;
The method of claim 1, further comprising: adding a task to the task list to process the content, wherein the added task has a runtime equal to the virtual clock. the method of.
前記埋め込みアイテムのためのコンテンツを要求するステップが、
前記要求されたコンテンツを受信したことに応答して、前記コンテンツを処理するために前記タスクリストにタスクを追加するステップであって、前記追加されたタスクが、前記仮想時計と等しい開始時間を有する、追加するステップを含む、請求項に記載の方法。
Requesting content for the embedded item comprises:
In response to receiving the requested content, adding a task to the task list to process the content, the added task having a start time equal to the virtual clock 9. The method of claim 8 , comprising the step of adding.
前記タスクリストを処理するために費やされた実際の時間が、前記コンテンツを待機する時間の量による所定の時間より大きい、請求項に記載の方法。 9. The method of claim 8 , wherein the actual time spent processing the task list is greater than a predetermined time due to the amount of time waiting for the content. 前記仮想時計と等しい開始時間を備えたタスクのすべてが完了したと決定すると、前記仮想時計は、前記タスクリスト内の次に発生するタスクによって表される時間に進む、請求項1に記載の方法。   The method of claim 1, wherein upon determining that all of the tasks with a start time equal to the virtual clock have been completed, the virtual clock advances to a time represented by a next occurring task in the task list. . 少なくとも1つのプロセッサと、
バッチレンダリングエンジンと、を含むコンピュータシステムであって、前記バッチレンダリングエンジンが、
要求プロセスからウェブページをレンダリングするための要求を受信することと、
前記ウェブページのための仮想時計を初期化することと、
前記ウェブページをレンダリングするためにタスクリストを生成することであって、前記タスクリスト内の各タスクが、関連する開始時間を有する、生成することと、
停止タスクを前記タスクリストに追加することと、
前記ウェブページのための前記仮想時計に従って前記タスクリスト内の前記タスクを実行することであって、前記ウェブページのための前記仮想時計が、前記ウェブページのためのタスクリスト内の次に発生するタスクによって表される時間に設定することによって進み、前記仮想時計が、前記タスクリスト内の保留中のタスクが前記仮想時計に一致するランタイムを有している間は変化しないままである、実行することと、
前記仮想時計が前記タスクリスト内の停止タスクのための開始時間に一致するとき、前記ウェブページのためのレンダリング結果を生成することと、
前記要求プロセスに前記レンダリング結果を提供することと、
を行うように構成される、コンピュータシステム。
At least one processor;
A batch rendering engine, the batch rendering engine comprising:
Receiving a request to render a web page from a request process;
Initializing a virtual clock for the web page;
Generating a task list to render the web page, each task in the task list having an associated start time;
Adding a stopped task to the task list;
Performing the task in the task list according to the virtual clock for the web page, wherein the virtual clock for the web page occurs next in the task list for the web page Proceed by setting to the time represented by the task, and the virtual clock will remain unchanged as long as the pending tasks in the task list have a runtime that matches the virtual clock And
Generating a rendering result for the web page when the virtual clock matches a start time for a stopped task in the task list;
Providing the rendering result to the requesting process;
A computer system configured to do the following.
前記停止タスクが、所定の時間に設定された開始時間を有する、請求項12に記載のコンピュータシステム。 The computer system of claim 12 , wherein the stop task has a start time set to a predetermined time. 前記タスクリストを処理するために費やされた実際の時間が、埋め込みアイテムがクロールされていない場合、前記所定の時間未満である、請求項13に記載のコンピュータシステム。 The computer system of claim 13 , wherein an actual time spent processing the task list is less than the predetermined time if an embedded item has not been crawled . 前記タスクリストは、第1の開始時間を備えた第1のタスクと、第1の開始時間を備えた第2のタスクとを含み、前記第1のタスクが、埋め込みリソースのフェッチであり、前記レンダリングエンジンが、
サーバから前記埋め込みリソースを要求することと、
前記要求を待っている間に前記第2のタスクに取り組むことと、
を行うように構成される、請求項12に記載のコンピュータシステム。
The task list includes a first task with a first start time and a second task with a first start time, wherein the first task is an embedded resource fetch, The rendering engine
Requesting the embedded resource from a server;
Tackling the second task while waiting for the request;
The computer system of claim 12 , wherein the computer system is configured to:
前記レンダリングエンジンが、
前記サーバから前記埋め込みリソースのためのコンテンツを受信することと、
前記埋め込みアイテムのためのコンテンツを受信したことに応答して、前記タスクリストにタスクを追加することであって、前記タスクが、前記仮想時計の現在の値と等しいそれぞれの開始時間セットを有する、追加することと、
を行うようにさらに構成される、請求項15に記載のコンピュータシステム。
The rendering engine is
Receiving content for the embedded resource from the server;
Responsive to receiving content for the embedded item, adding a task to the task list, the task having a respective start time set equal to a current value of the virtual clock; Adding
The computer system of claim 15 , further configured to:
前記タスクリストに追加された前記タスクが、前記埋め込みアイテムのためのコンテンツにおいて識別されたスクリプトを実行する、請求項16に記載のコンピュータシステム。 The computer system of claim 16 , wherein the task added to the task list executes a script identified in content for the embedded item. 前記タスクリストに追加された前記タスクが、前記コンテンツにおいて識別された第2の埋め込みアイテムをフェッチする、請求項16に記載のコンピュータシステム。 The computer system of claim 16 , wherein the task added to the task list fetches a second embedded item identified in the content.
JP2018111739A 2018-06-12 2018-06-12 Batch optimized rendering and fetch architecture Active JP6568985B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018111739A JP6568985B2 (en) 2018-06-12 2018-06-12 Batch optimized rendering and fetch architecture

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018111739A JP6568985B2 (en) 2018-06-12 2018-06-12 Batch optimized rendering and fetch architecture

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2016572796A Division JP6356273B2 (en) 2014-06-26 2014-06-26 Batch optimized rendering and fetch architecture

Publications (2)

Publication Number Publication Date
JP2018160264A JP2018160264A (en) 2018-10-11
JP6568985B2 true JP6568985B2 (en) 2019-08-28

Family

ID=63795624

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018111739A Active JP6568985B2 (en) 2018-06-12 2018-06-12 Batch optimized rendering and fetch architecture

Country Status (1)

Country Link
JP (1) JP6568985B2 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109831493A (en) * 2019-01-18 2019-05-31 深圳壹账通智能科技有限公司 A kind of detection method of image configurations, device, equipment and medium
US11625401B2 (en) * 2019-03-29 2023-04-11 Sap Se Query execution including pause and detach operations after first data fetch
CN110496395B (en) * 2019-08-22 2023-02-21 创新先进技术有限公司 Component operation method, system and equipment for illusion engine

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8346755B1 (en) * 2010-05-04 2013-01-01 Google Inc. Iterative off-line rendering process
JP5512495B2 (en) * 2010-11-18 2014-06-04 株式会社Nttドコモ Data download device and data download method
US8793235B2 (en) * 2012-01-19 2014-07-29 Google Inc. System and method for improving access to search results
JP2017501512A (en) * 2013-11-01 2017-01-12 カパオ・テクノロジーズKapow Technologies Judging web page processing status

Also Published As

Publication number Publication date
JP2018160264A (en) 2018-10-11

Similar Documents

Publication Publication Date Title
JP6356273B2 (en) Batch optimized rendering and fetch architecture
US10284623B2 (en) Optimized browser rendering service
US10713330B2 (en) Optimized browser render process
JP6568985B2 (en) Batch optimized rendering and fetch architecture
EP4220446A1 (en) Resource pre-fetch using age threshold
US10599740B1 (en) Program code streaming
US10044804B2 (en) Enabling users to specify an electronic resource for viewing based on prior accessed electronic resources
Kivilohkare Optimizing the Critical Rendering Path for Decreased Website Loading Time
JP6397101B2 (en) Optimized browser rendering process
Woods Building Touch Interfaces with HTML5: Develop and Design Speed up your site and create amazing user experiences
JP2013025421A (en) Information retrieval system and information retrieval method
Hou et al. A static shell based web page implementation method and application in Haier 3D printing platform
Kiessig Ultra-Fast ASP. Net 4.5

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180613

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190325

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190401

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190628

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190708

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190805

R150 Certificate of patent or registration of utility model

Ref document number: 6568985

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250