JP2017526041A - バッチ最適化レンダリング及びフェッチアーキテクチャ - Google Patents

バッチ最適化レンダリング及びフェッチアーキテクチャ Download PDF

Info

Publication number
JP2017526041A
JP2017526041A JP2016572796A JP2016572796A JP2017526041A JP 2017526041 A JP2017526041 A JP 2017526041A JP 2016572796 A JP2016572796 A JP 2016572796A JP 2016572796 A JP2016572796 A JP 2016572796A JP 2017526041 A JP2017526041 A JP 2017526041A
Authority
JP
Japan
Prior art keywords
content
rendering
embedded
embedded item
url
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.)
Granted
Application number
JP2016572796A
Other languages
English (en)
Other versions
JP6356273B2 (ja
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
Publication of JP2017526041A publication Critical patent/JP2017526041A/ja
Application granted granted Critical
Publication of JP6356273B2 publication Critical patent/JP6356273B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24578Query processing with adaptation to user needs using ranking
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • G06F16/9566URL specific, e.g. using aliases, detecting broken or misspelled links
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/131Fragmentation of text files, e.g. creating reusable text-blocks; Linking to fragments, e.g. using XInclude; Namespaces
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/186Templates

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

実施形態は、バッチ最適化されたレンダリングおよびフェッチアーキテクチャを含む。アーキテクチャにより実行される方法例は、ウェブページをレンダリングするバッチプロセスから要求を受信し、ウェブページをレンダリングするための仮想時計とタスクリストを初期化することを含む。仮想時計は、埋め込みアイテムの要求が未処理でありタスクが実行準備ができているとき、停止する。方法は、仮想時計がタスクリスト内の停止タスクのランタイムと一致するとき、ウェブページのレンダリング結果を生成しバッチプロセスにレンダリング結果を提供することを含んでもよい。別の方法例は、ウェブページをレンダリングするためのバッチプロセスから要求を受信し、ウェブページの埋め込みアイテムを識別し、書き換え規則に基づいて以前にフェッチされた埋め込みアイテムのためのコンテンツと重複するコンテンツを有する埋め込みアイテムを識別することを含んでもよい。

Description

本発明は、バッチ最適化レンダリング及びフェッチアーキテクチャに関する。
ワールドワイドウェブは、情報が豊富である。今日では、1兆以上のユニークなウェブページがあると推定されている。これらのページの多くは、例えばNew York Timesのホームページなどに動的に作成され、レンダリングされたウェブページのコンテンツや外観に効果を与えることができる、画像やビデオのような埋め込みコンテンツへのリンクを有する。例えば、ブラウザがJavaScript(登録商標、以下同じ)コードのようなスクリプトを実行するとき、これはブラウザがウェブページのレンダリングを完了した後に、ウェブページがユーザに対してどのように見えるかに影響を与え、ページのコンテンツ及び/又は外観を変更することができる。別の例として、いくつかのウェブページは、テキストの見た目を変える方法をブラウザに指示するスタイルシートを使用する。典型的なウェブページは、そのような追加の埋め込みアイテムのハンドラを有することができ、そのいくつかはブラウザレンダリングエンジンのために特別に設計されるか、あるいはブラウザレンダリングエンジンに向けられている。レンダリングプロセスによって生成された追加の情報は、インターネット検索エンジンのような、ダウンストリームシステムに役立つことができる。単一のユーザのウェブブラウザのために、リアルタイムで単一のウェブページをレンダリングすることは比較的容易であるが、ましてやワールドワイドウェブ上の全てのページ(1兆ページ)のように多数のページをレンダリングすること、あるいはワールドワイドウェブ(100億ページ)上の上位1%だけをリアルタイムでレンダリングすることは難しい。
実施形態は、ウェブページインデックスシステムのような、ダウンストリームユーザのためのウェブページのバッチレンダリングのために最適化されたレンダリングサーバおよびフェッチサーバを含む。ダウンストリームユーザは、1つまたは複数の埋め込みアイテムを有するウェブページ(例えば、そのURLを使用して)を識別するとき、ダウンストリームユーザはレンダリングサーバがレンダリング結果を生成するためにURLをレンダリングすることを要求してもよい。レンダリングサーバは、多数の(例えば、何万もの)レンダリングエンジンを含むことができる。各レンダリングエンジンは、多くのレンダリングエラーを排除するバッチレンダリングのために最適化されたブラウザカーネルをシミュレートする。レンダリングの間、レンダリングエンジンは埋め込みアイテムを発見すると、レンダリングエンジンはフェッチサーバから埋め込みアイテムを要求する。フェッチサーバは、各埋め込みアイテム(例えば、そのURL)のための識別子と、ウェブクローラ(web-crawler)によって検索されたアイテムのためのコンテンツとによって適合された埋め込みアイテムのデータストアを含む。埋め込みアイテムのためのデータストアを探す前に、フェッチサーバは書き換え規則を使用してURLを書き換えてもよい。URのためのコンテンツが別の埋め込みアイテム(例えば、リダイレクトURLによって表される)と重複しているとき、書き換え規則は、URLをリダイレクトURLと置き換えてもよい。要求された埋め込みアイテムが重複している場合、フェッチサーバは、リダイレクトURを使用するようにURLを書き換えてもよく、これは要求されたURLのためのコンテンツをフェッチする代わりに、リダイレクトURLのための既に検索されたコンテンツを使用できるようにする。このような重複排除方法は、フェッチサーバによって作られるクロール要求の実際の数を劇的に減少することができ、レンダリングエンジンの応答時間を向上することができる。書き換え規則は、URLがブラックリストに載せられていることを示してもよい。いくつかの実施形態において、フェッチサーバは、埋め込まれた画像の実際のコンテンツではなく、サイズを格納してもよい。レンダリングエンジンが画像を要求したとき、フェッチサーバが画像のサイズを有するモック画像を生成し、モック画像をレンダリングエンジンに返してもよい。レンダリングエンジンがウェブページのレンダリングを完了しているとき、レンダリング結果をウェブページの処理を向上するためにレンダリング結果の情報を使用することができる、インデックスエンジンのようなダウンストリームユーザに提供してもよい。
1つの態様において、コンピュータシステムは、少なくとも1つのプロセッサと、
メモリと、を含むコンピュータシステムであって、メモリが、埋め込みアイテムのためのコンテンツのデータストアと、少なくとも1つのプロセッサによって実行されたときにシステムに動作を行わせる命令を格納する。該動作は、バッチプロセスから、ウェブページをレンダリングするための要求を受信することと、ウェブページの埋め込みアイテムを識別することと、を含む。該動作は、書き換え規則に基づいて、前記埋め込みアイテムが以前にフェッチされた埋め込みアイテムのためのコンテンツの重複であるコンテンツを有すると判定することと、判定に応答して、データストアから前記以前にフェッチされた埋め込みアイテムのための前記コンテンツを提供することと、以前にフェッチされた埋め込みアイテムのための前記コンテンツを使用して、前記ウェブページについてのレンダリング結果を生成することと、およびバッチプロセスにレンダリング結果を提供することと、も含む。
本明細書に記載される主題の1つ又は複数の実施形態は、以下の特徴の内の1つ又は複数を含むことができる。例えば、埋め込みアイテムが以前にフェッチされた埋め込みアイテムのためのコンテンツの重複であるコンテンツを有すると判断することは、書き換え規則のテンプレートに前記埋め込みアイテムを照合させることを含み、書き換え規則がリダイレクト識別子を含むことができる。このような実施形態において、以前にフェッチされた埋め込みアイテムのための前記コンテンツを提供することが、以前にフェッチされた埋め込みアイテムのための前記コンテンツ及び/又はクエリ文字列なしでURLを含んでもよいテンプレートを示すための前記リダイレクト識別子を使用することを含む。
他の例として、埋め込みアイテムは、第1の埋め込みアイテムであり、かつ動作がウェブページの第2の埋め込みアイテムを識別することを含んでもよく、前記第2の埋め込みアイテムがブラックリストに載せられているか否かを判断し、第2の埋め込みアイテムが第2の埋め込みアイテムのためのフェッチコンテンツなしでブラックリストに載せられているとき、エラーを返し、および第2の埋め込みアイテムのためのコンテンツなしでレンダリング結果を生成することを含んでもよい。別の例として、レンダリング結果を生成するとき、動作が仮想時計の使用を含んでもよく、仮想時計はリアルタイムとは無関係に進む。別の例において、レンダリング結果を生成するとき、動作が仮想時計の使用を含んでもよく、仮想時計が以前にフェッチされた埋め込みアイテムの提供されたコンテンツを待つ間に進行しない。
他の例として、埋め込みアイテムは第1の埋め込みアイテムであってもよく、動作がウェブページの第2の埋め込みアイテムを識別することと、第2の埋め込みアイテムが画像を含むことを判断することと、サイズテーブルを使用して、第2の埋め込みアイテムのためのサイズを指定するモック画像を生成することと、レンダリング結果を生成するときにモック画像を使用することと、を含んでもよい。
別の態様において、コンピュータ実装された方法は、ウェブページをレンダリングするための要求をバッチプロセスから受信するステップと、仮想時計とウェブページをレンダリングするためのタスクリストを初期化するステップであって、仮想時計が、埋め込みアイテムのための要求が未処理であるときかつタスクが準備完了であるとき、依然として停止している、初期化するステップと、を含む。該方法はまた、仮想時計がタスクリストの停止タスクのためのランタイムに一致するとき、ウェブページのためのレンダリング結果を生成するステップと、バッチプロセスのためのレンダリング結果を生成するステップと、を含む。
本明細書に記載される主題の1つ又は複数の実施形態は、以下の特徴の内の1つ又は複数を含むことができる。例えば、タスクリストを初期化するステップが、ランタイムセットを備えた停止タスクを仮想時計に追加された所定の時間に追加するステップを含んでもよい。所定の時間は少なくとも5秒であってもよい。別の例として、該方法は、埋め込みアイテムに対する要求が未処理ではない、かつ仮想時計よりも大きいランタイムを有するただ一つのタスクがタスクリストにあるとき、仮想時計をタスクリスト内のタスクのランタイムに進めるステップをさらに含んでもよい。別の例として、該方法は、ウェブページの埋め込み画像を識別するステップと、埋め込み画像のためのコンテンツを要求するステップと、要求に応答して、埋め込み画像のためにサイズを指定するが、空のコンテンツを有するモック画像を受信するステップと、レンダリング結果を生成するときにモック画像を使用するステップと、を含んでもよい。別の例として、バッチプロセスは、インデックスエンジンであってもよく、かつ該方法は、レンダリング結果の情報に基づいて、ウェブページのためのランクを降格させるステップをさらに含み、及び/又は動的に生成されたコンテンツにインデックスを付けるためにレンダリング結果を使用するステップをさらに含む。
別の態様において、方法は、ウェブページ内の埋め込みアイテムのユニフォームリソースロケータ(URL)のためのバッチレンダリングプロセスから要求を受信するステップと、書き換えられたURLを判断する書き換え規則を適用するステップを含む。該方法は、書き換えられたURLのためのコンテンツがデータストアに存在するか否かを判断するステップと、コンテンツが存在するとき、コンテンツを前記バッチレンダリングプロセスに提供するステップを含んでもよい。コンテンツが存在しないとき、該方法は、コンテンツのフェッチを初期化し、ここでバッチレンダリングプロセスがフェッチの間にタイムアウトなしで待機するように構成される、初期化するステップと、ウェブ巡回エンジンからコンテンツを受信するステップと、バッチレンダリングプロセスのためのコンテンツを提供するステップと、データストアのコンテンツを保存するステップを含んでもよい。コンテンツは、ウェブページのレンダリング結果をウェイ請求項するためにバッチレンダリングプロセスによって使用されてもよい。
本明細書に記載される主題の1つ又は複数の実施形態は、以下の特徴の内の1つ又は複数を含むことができる。例えば、書き換え規則を適用するステップは、URLをリダイレクトURLと関連しているテンプレートに照合させるステップを含んでもよく、ここでURLがテンプレートに一致するとき、前記リダイレクトURLが、書き換えられたURLであると判断され、およびURLがテンプレートに一致しないとき、URLが書き換えられたURLであると判断される。別の例として、該方法は、変更率またはデータストアに保存された埋め込みアイテムのタイプに基づいて、書き換えられたURLのための前記コンテンツが古いと判断するステップと、書き換えられたURLのためのコンテンツが古いと判断するステップに応答して、ウェブ巡回エンジンから更新されたコンテンツを受信するステップと、更新されたコンテンツを備えたデータストアを更新するステップと、書き換えられたURLのためのコンテンツとして、更新されたコンテンツを提供するステップを含んでもよい。
別の態様として、コンピュータシステムは、少なくとも1つのプロセッサと、画像識別によって格納されたサイズのテーブルおよび少なくとも1つのプロセッサによって実行されたときにシステムに動作を行わせる命令を保存するメモリと、含む。該動作は、ウェブページの埋め込みアイテムを識別することと、サイズのテーブルから埋め込み画像のためのサイズを判断し、サイズを使用してモック画像を生成することと、を含むことができる。該動作は、モック画像を使用してウェブページのためのレンダリング結果を生成することを含んでもよい。
別の態様として、コンピュータ実装された方法は、ウェブページをレンダリングするための要求をバッチプロセスから受信するステップと、ウェブページの少なくとも1つの埋め込み画像を識別するステップと、を含む。該方法は、フェッチサーバからモック画像を受信するステップと、モック画像を使用してウェブページのためのレンダリング結果をレンダリングするステップも含み、モック画像は埋め込み画像のサイズと空のコンテンツを有する。いくつかの実施形態において、該方法は、レンダリング結果をウェブページを要求したバッチプロセスに提供してもよい。
別の態様において、非一時的コンピュータ可読媒体は、コンピュータシステムに1つ又は複数の上述した方法を実行させる、回路基板に形成された少なくとも1つのプロセッサによって実行可能な命令を含んでもよい。
本明細書に記載される主題の1つまたは複数の実施形態は、1つまたは複数の以下の利点を実現するように実装されることができる。一例として、バッチレンダリングエンジンが入力デバイス(例えば、キーボード、マウス)あるいは出力デバイス(例えば、ディスプレイ、タッチスクリーンなど)に結合されていないため、レンダリングエンジンは、例えばユーザフレンドリーなAPIではなくマシンフレンドリーなAPIを有する、実際のブラウザレンダラ(browser renderer)よりも簡素で洗練されたものにすることができる。また、レンダリングエンジンは、レンダリングされた最終ページを表示する、あるいはユーザと対話する必要がないので、レンダリングエンジンは、実際の時間ではなく終了したタスクに基づいて進む仮想時計を使用することができ、これはレンダリングプロセスの処理速度を上げ、および一般的なエラーを避けることができる。例えば、バッチ環境でのフェッチは、個人のウェブ環境よりもはるかに遅くなることがあり、多くのタイムアウトエラーを引き起こす可能性がある。仮想時計は、フェッチ待ち時間を隠し、タイムアウトエラーを回避する。仮想時計は、より確定的な結果も可能にする。例えば、日付/時刻コンポーネントを含むURLにおいて、日付/時刻コンポーネントを固定された時間に置き換えるのではなく、システムは仮想時計の値を使用してもよい。これは、ウェブページのすべての時間パラメータが同じ値を有するわけではないが、ウェブページがレンダリングされるたびに特定の時間パラメータが同じ値を有することを意味する。この柔軟性は、システムが時間を進めることを可能にし、これはレンダリングされた結果の正確性のためにいくつかのウェブページにおいて重要であるが、要求された一連のURLがレンダリング全体で同じまままであることが常に保証される(クロール要求を少なくする)。システムは、例えばブラックリストに載せられたアイテムのような不要なアイテムをフェッチすることを回避してもよい。画像の実際のコンテンツではなく、画像のためのサイズを保存することは、フェッチサーバにおいて画像のためのストレージ要件を削減し、レンダリングエンジンに転送されるデータが少なくて済み、およびレンダリングエンジンでレンダリング時間がさらに向上する。URLを書き換えることは、重複したコンテンツをフェッチすることを回避し、バッチレンダリングプロセスをさらに高速にする。
開示された主題に従ったシステム例を図示する。 埋め込みアイテムを有するウェブページのブロック図である。 実施形態に従った、バッチレンダリングエンジンのブロック図である。 実施形態に従った、バッチレンダリングエンジンが、埋め込みオブジェクトを備えたウェブページをレンダリングすることができるプロセス例を図示する流れ図である。 実施形態に従った、バッチレンダリングエンジンが、仮想時計を進めるプロセス例を図示する流れ図である。 実施形態に従った、フェッチサーバが埋め込みアイテムのためのコンテンツをバッチレンダリングエンジンに提供するプロセス例を図示する流れ図である。 実施形態に従った、フェッチサーバがモック画像をバッチレンダリングエンジンに提供するプロセス例を図示する流れ図である。 開示した技術を実装するために使用されることができるコンピュータデバイスの例を示す。 開示した技術を実装するために使用されることができる分散型コンピュータデバイスの例を示す。
ウェブページを完全にレンダリングするために、ウェブページの全ての埋め込み外部リソースのコンテンツを最初に取得する必要がある。そのようなリソースは、外部画像、JavaScriptコード、およびスタイルシートを含むが、これらに限定はしない。しばしば、同じ外部リソースが多くの異なるウェブページに埋め込まれている。単一のユーザのウェブブラウザがGoogle Analytics JavaScriptコードのような外部ウェブページリソースをリアルタイム(すなわち、リソースが埋め込まれたウェブページがレンダリングされたとき)で要求することは効率的であるが、バッチレンダリングエンジンがそうすることは実現可能でも効率的でもない。例えば、ウェブページインデックスプロセスのためのバッチレンダリングエンジンは、効率的かつ迅速に、一度に多数のウェブページを素早くレンダリングするように設計されている。しかし、埋め込み外部リソースをフェッチすることは、遅くなる可能性があり、そのようなリソースはバッチ処理の目的(例えば、人間のユーザが最終的にレンダリングされた製品を見ることなしに)のために重要ではないことがある。バッチ環境においてウェブページをレンダリングする処理時間を改善するために、レンダリングエンジンは、仮想時計を使用して動作し、重複および不要なフェッチを避けるためにフェッチサーバと連動し、および視覚の処理あるいはウェブページにおける他のユーザ指向の要素を最小限にしてもよい。
図1は、実施形態例に従ったシステムのブロック図である。システム100は、要求プロセスのためにバッチモードでウェブページを効率よく迅速にレンダリングするために使用されてもよい。システム100に図示される要求プロセスは、インターネット検索エンジンのためのインデックスエンジンであるが、実装はレンダリングされたウェブページのダウンストリームユーザとしてのインデックスエンジンに限定しない。例えば、要求プロセスは、ページを分析して遅さを障害追跡する分析エンジンであってもよく、あるいはGoogle Analyticsのようなツールが正しくセットアップされているかを判断する分析エンジンであってもよく、または広告システム、または複雑なウェブページとの、例えばフォームの記入や要素のクリックなどの自動対話に依存する別のシステムであってもよい。したがって、システム100は、インデキシングのためにバッチ生成されたレンダリング結果を使用するものとして説明されてもよく、システム100は、レンダリング結果で提供される情報が有用である他のバッチシステムのために使用されることができる。
システム100は、コンピューティングデバイスであってもよく、あるいは多くの異なるデバイスの形を有するデバイスであってもよい。例えば、システム100は、巣単打オードサーバ、そのようなサーバのグループ、クライアントサーバシステム、あるいはラックサーバシステムであってもよい。さらに、システム100は、パーソナルコンピュータで実装されてもよい。システム100は、図8で図示するような、コンピュータデバイスの例800、あるいは図9で図示するようなコンピュータデバイス900であってもよい。
システム100は、ウェブ巡回エンジン130、インデックスエンジン110のような要求プロセス、レンダリングサーバ140、およびフェッチサーバ150を含む。ウェブ巡回エンジン130、レンダリングサーバ140、およびフェッチサーバ150は、ワールドワイドウェブ上に見られるウェブページのような多数のウェブページを効率的にレンダリングするためにともに動作してもよい。
インデックスエンジン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つまたは複数の別個のコンピューティングデバイスに分散されてもよい。
インデックスエンジン110と同様に、クエリエンジン120は、例えば従来または別の情報検索技術を使用して、クエリ182の検索結果を識別するためにインデックス115を使用する1つ又は複数のサーバを含んでもよい。クエリエンジン120は、クライアント180のようなリクエスタからクエリ182を受信する1つまたは複数のサーバを含んでもよい。クエリエンジン120は、インデックス115を使用して、クエリに応答してドキュメントを識別してもよく、および検索結果184として応答ドキュメントからの情報をリクエスタに提供してもよい。いくつかの実施形態において、クエリエンジン120は、検索結果184の一部としてサムネイルを提供するために、レンダリング結果データストア148のレンダリング結果を使用してもよい。クエリエンジン120は、例えば、1つまたは複数のランク付け信号を使用して、クエリに応答してドキュメントのためのスコアを計算するランク付けエンジンを含んでもよい。1つまたは複数のランク付け信号は、ドキュメントに関連するレンダリング結果から取得されたコンテンツに基づくことができる。ランク付けエンジンは、スコアを使用してクエリに応答して見つかったドキュメントをランク付けしてもよい。
システムは、ウェブ巡回エンジン130を含んでもよい。ウェブ巡回エンジン130は、1つまたは複数の機械実行可能命令あるいはソフトウェアの一部、ファームウェア、あるいはそれらの組合せを実行するように構成された1つ又は複数のプロセッサを含むことができる。ウェブ巡回エンジン130は、標準サーバ、そのようなサーバのグループ、クライアントサーバシステム、あるいはラックサーバシステムのようなコンピューティングデバイスであってもよい。いくつかの実施形態において、ウェブ巡回エンジン130は、フェッチサーバ150またはインデックスエンジン110のようなシステム100の別のコンポーネントと、メモリまたはハードウェアプロセッサのようなコンポーネントを共有してもよい。ウェブ巡回エンジン130は、ワールドワイドウェブ上で見つけられることができるウェブページをクロールしてもよい。ウェブ巡回エンジン130は、クロールされたウェブページを受信したとき、すなわち、クロールされたウェブページのためのコンテンツを受信すると、ウェブ巡回エンジン130は、インデックスエンジン110あるいはフェッチサーバ150であってもよいリクエスタにコンテンツを提供してもよい。ウェブ巡回エンジン130は、データストア(図示せず)にコンテンツを格納し、およびリクエスタにその位置を提供してもよい。本明細書で使用されるウェブページのコンテンツは、ウェブページレンダリングエンジンに提供されかつウェブブラウザに表示するためのウェブページをレンダリングするために使用されるHTMLコードを参照し、例えばスタイルシート、Java Script、別のウェブページ、あるいは画像ファイルなどのウェブページに埋め込まれた外部オブジェクトへの任意のリンクを含む。ウェブ巡回エンジン130は、これらの埋め込みアイテムのコンテンツをフェッチするためにフェッチサーバ150によって使用されてもよい。ウェブ巡回エンジン130は、フェッチサーバ150に埋め込みアイテムのコンテンツを提供してもよく、あるいは埋め込みアイテムテーブル152のようなデータストアにフェッチされたコンテンツを格納してもよい。ウェブ巡回エンジン130は、埋め込みアイテムがクロールされたときにリクエスタに通知してもよい。
前述したように、システム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は、データストアからウェブページのコンテンツおよびクロール時間を取得することができる。
フェッチサーバ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は変更されない結果となる。
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はまた、フェッチ量を最小化することができる。
いくつかの実施形態において、フェッチサーバ150は画像寸法テーブル156を含んでもよい。画像寸法テーブル156は、画像URLを画像のための既知のサイズと関連付けるキー値記憶装置であってもよい。既知のサイズは、画像がフェッチされたときに決定されてもよい。要求された画像のサイズを使用して、フェッチサーバ150は要求された画像と同じサイズを有するが、空のコンテンツであるか、コンテンツとして単純なタイルを有するモック画像を生成してもよい。モック画像は、要求された画像と同じサイズを有するが同じ画像データではない、有効な画像である。フェッチサーバ150はバッチレンダリングエンジンのためのコンテンツをフェッチするので、実際の画像はレンダリング結果にとって重要ではなくてもよいが、画像のサイズはレンダリングされたページのレイアウトに影響を及ぼし得る。実際の画像ではなくモック画像を使用することは、ファイルサイズが非常に小さくなり(例えば、画像あたり数十バイト)、これはモック画像を転送する際のネットワーク帯域幅、およびバッチレンダリングエンジンのためのプロセッサおよびメモリリソースを節約する。いくつかの実施形態において、画像寸法テーブル156は、SSTableなどのキー値記憶装置であってもよいが、寸法テーブル156は、画像識別子によってサイズを格納する任意のデータ構造体であってもよい。
システム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によってクロール要求をさらに減らすことができる。
レンダリングプロセスの任意の段階で、1つ又は複数の要求された埋め込みアイテムのコンテンツが埋め込みアイテムテーブル152に格納されていない、あるいは古い場合、フェッチサーバ150は、要求された埋め込みアイテムのクロールをスケジュールするためにウェブ巡回エンジン130に指示してもよい。一旦ウェブ巡回エンジン130がレンダリングされた埋め込みアイテムをクロールすると、フェッチサーバ150に通知する。フェッチサーバ150は、次いでフェッチされたコンテンツアイテムをクロール時間とともに埋め込みアイテムテーブル152に格納してもよい。埋め込みアイテムが画像である場合、フェッチサーバ150は、代わりに、または追加で、フェッチされた画像のサイズをクロール時間とともに画像寸法テーブル156に格納してもよい。フェッチサーバ150は、次いで要求されたコンテンツを、すなわち画像サイズを有するモック画像が送信されてもよい画像ファイルの代わりに、要求しているレンダリングエンジン142に送り返してもよい。
システム100は、レンダリングサーバ140を含む。レンダリングサーバ140は、1つまたは複数の機械実行可能な命令またはソフトウェアの一部、ファームウェア、あるいはそれらの組合せを実行するように構成された1つまたは複数のプロセッサを含むことができる。レンダリングサーバ140は、標準サーバ、そのようなサーバのグループ、クライアントサーバシステム、あるいはラックサーバシステムのようなコンピューティングデバイスであってもよい。いくつかの実施形態において、レンダリングサーバ140は、レンダリングサーバ140、フェッチサーバ150、またはインデックスエンジン110のようなシステム100の別のコンポーネントと、メモリまたはハードウェアプロセッサのようなコンポーネントを共有してもよい。レンダリングサーバ140は、特定のウェブページをレンダリングするために、インデックスエンジン110または別の要求プロセスから要求を受信する。言い換えると、レンダリングサーバ140は、要求されたウェブページのURLを受信してもよい。レンダリングサーバ140は、1つ又は複数のレンダリングエンジン142を含んでもよい。いくつかの実施形態において、レンダリングサーバ140は、数万のレンダリングエンジン142を含み、およびウェブページをレンダリングするレンダリングエンジン142を選択するためにロード場合によってはランシングを実行してもよい。一旦レンダリングエンジン142が選択されると、レンダリングエンジン142は、レンダリング結果のためにウェブページをレンダリングしようとする。ウェブページは、通常は追加の埋め込みアイテムを含むので、埋め込むウェブページと呼ばれてもよい。
各レンダリングエンジン142は、パーソナルウェブブラウザ用のレンダラをエミュレートするように構成されるが、バッチレンダリングのための最適化を伴う。従って、レンダリングエンジン142が埋め込むウェブページを受信したあと、レンダリングエンジン142がレンダリング結果を生成するために行う作業を表すタスクをタスクリストに投入し始めてもよい。多くのタスクがすぐに実行されるようにスケジュールされていてもよいが、いくつかのタスクは将来スケジュールされてもよい。レンダリングエンジン142のバッチ最適化の一つは、仮想時計を使用し、レンダリングが特定の時間に完了したことを示すタスクリストにタスクを追加することである。例えば、いくつかの実施形態において、タスクは、レンダリングが現在の時間+20秒で完了することを示してもよい。所定の時間は、多数のウェブページ設計者が完全に見えるようにウェブページを設計する時間に基づいてもよく、例えば、任意のアニメーションあるいはレイアウト変更が所定の時間内に終わるように設計される。ほとんどのユーザは、ページが読み込まれるまで非常に長く待つことを快く思わないので、所定の時間は5から20秒の間であってもよいが、状況によってはそれより長くなる可能性がある。レンダリングエンジン142は、仮想時計を使用するために20秒全部かかることはなく、および埋め込みアイテムがクロールされていない場合(例えば、フェッチサーバ150が埋め込みアイテムテーブル152のコンテンツを示すことができる)、しばしばフルレンダリングが数秒で発生する可能性がある。従って、最終的なレンダリング結果を生成するタスクは、現在の時間から20秒の開始時刻でタスクリストに追加されてもよい。現在の時間は、仮想時計の初期化時間に基づいており、これはゼロまたは実際の時計の現在の時間とすることができる。
レンダリングプロセスの一部、例えば、レンダリングタスクの一つとして、レンダリングエンジン142は、埋め込むウェブページが、スタイルシート、画像ファイル、Java Scriptなどの任意の埋め込みアイテムを含むか否かを決定してもよい。これらの埋め込みアイテムは、プライマリ埋め込みオブジェクトと呼ばれる。ウェブページが任意の埋め込みオブジェクトを含まない場合、レンダリングエンジンは、ウェブページをレンダリング結果に即座に処理することができ、およびレンダリング結果をレンダリング結果データストア148に格納してもよい。しかし、ウェブページが埋め込みアイテムを含む場合、レンダリングエンジン142は、埋め込みアイテムをすべて抜き出し、埋め込みアイテムのコンテンツのために要求をフェッチサーバ150に送信してもよい。要求された埋め込みアイテムは、それぞれのURLによって各々表される。レンダリングエンジン142は、しかしながら、フェッチされたリソースを待つ間、レンダリングを停止するか、タイムアウトすることはない。むしろ、レンダリングエンジン142は仮想時計を使用するので、以下でより詳細に説明するように、ウェブ巡回エンジン130を介してフェッチされるリソースを待つことは、時計を進めず、レンダリングエンジンはタイムアウトしない。
要求された埋め込みアイテムのためのコンテンツが受信されたとき、レンダリングエンジン142は、コンテンツを処理するためにタスクリストにタスクを追加してもよい。コンテンツ処理の一部は、要求された埋め込みオブジェクト(すなわち、プライマリ埋め込みオブジェクト)自身が埋め込みオブジェクト(すなわち、セカンダリ埋め込みオブジェクト)を有するか否かを見つけることを含んでもよい。プライマリ埋め込みオブジェクトがセカンダリ埋め込みオブジェクトを含まない場合、レンダリングエンジン142は、画像のプロパティを変更するレンダリングタスク(例えば、JavaScriptコードを実行する)に取り組むことを続けることができる。しかし、プライマリ埋め込みオブジェクトが1つ又は複数のセカンダリ埋め込みオブジェクトを含む場合、レンダリングエンジン142は、フェッチサーバ150からセカンダリ埋め込みオブジェクトを要求する。埋め込みオブジェクトを発見し要求するこのプロセスは、レンダリングエンジンが、レンダリングされるウェブページに埋め込まれた全てのオブジェクト(例えば、プライマリ、セカンダリ、第3の、など)を発見し、要求し、および受信するまで、繰り返される。
各埋め込みアイテム要求は、フェッチサーバ150が一旦その時間のコンテンツを返すと削除されるタスクリスト内のタスクであってもよい。コンテンツが返されるとき、レンダリングエンジン142は、コンテンツを処理するためのタスクを追加してもよく、これは、画像の不透明度の変更、スクリプトの実行など、追加のタスクを順に追加してもよい。各タスクは、ランタイムに関連付けられてもよい。いくつかのタスクは、将来のランタイムを有してもよい。例えば、イメージをフェードイン(またはアウト)するために、ブラウザはタスクリストにいくつかのタスクを追加してもよく、時間のインターバルにわたって画像の不透明度をそれぞれ変更する。以下でより詳細に説明するように、レンダリングエンジン142は、タスクが実行準備が整った時点を決定するために、タスクリストに関してリアルタイムではなく仮想時計を使用してもよい。
レンダリングエンジン142は、レンダリングが完了するまで、例えば、レンダリング結果が生成されるまで、タスクリストのタスクをレンダリングするプロセスに取り組む。次いでレンダリングエンジン142は、レンダリング結果をレンダリング結果データストア148に格納し、及び/又はレンダリング結果をレンダリングプロセス(例えば、インデックスエンジン110)に提供してもよい。インデックスエンジン110のようなレンダリングプロセスは、次いでウェブページを処理する際にレンダリング結果から抽出された情報を使用してもよい。例えば、要求プロセスは、JavaScriptエラー、レイアウト情報、スタイル情報、広告スペース情報、フェッチされたリソースのリスト、性能統計等を使用してもよく、そのすべてはレンダリング結果に含まれるが、要求プロセスにとってはそれ以外使用できない。
システム100は、ネットワーク170を介してクライアント180およびサーバ190と通信してもよい。ネットワーク170は、例えばインターネット、または有線あるいは無線ローカルエリアネットワーク(LAN)であってもよいネットワーク170、ワイドエリアネットワーク(WAN)、これらの組合せであってもよく、例えばゲートウェイデバイス、ブリッジ、スイッチ、あるいは同様のものを使用して実装されてもよい。ネットワーク170を介して、クエリエンジン、ウェブ巡回エンジン130及び/又はフェッチサーバ150は、クライアント180及び/又はサーバ190と通信し、かつデータを送受信してもよい。
システム100は、簡潔にするために図示されていない他のコンポーネントを含んでもよい。例えば、インデックスエンジン110、クエリエンジン120、ウェブ巡回エンジン130、レンダリングサーバ140、およびフェッチサーバ150のうちの1つまたは複数は、1つまたは複数のコンピューティングデバイスにわたって分散されてもよい。同様に、インデックス115、レンダリング結果データストア148、埋め込みアイテムテーブル152、および画像寸法テーブル156は、複数のコンピューティングデバイスにわたって格納されてもよい。いくつかの実施形態において、システム100の様々なコンポーネントは、コンピューティングデバイスのハードウェアコンポーネントを共有してもよく、あるいは同じコンピューティングデバイスの論理パーティションであってもよい。
図2は、埋め込みオブジェクトを有するウェブページのブロック図である。図に示すように、ウェブページ200は、複数の埋め込みアイテムを含むことができる。これらの埋め込みオブジェクトは、他のウェブページ210、スタイルシート220、画像ファイル230、いわゆるキャッシュバスティングURL240、およびJavaScriptコード250を含むことができるが、これらに限定されない。追加された、埋め込みオブジェクトの異なるタイプはもちろん可能である。さらに、ウェブページ200に埋め込まれたそれぞれのオブジェクトは、他のオブジェクトを埋め込んでもよい。例えば、ウェブページ200に埋め込まれたウェブページ210は、他のウェブページ、画像ファイル、スタイルシートなどを埋め込んでもよい。同様に、ウェブページ200に埋め込まれたスタイルシート220は、背景画像ファイルのような他のオブジェクトを埋め込んでもよい。さらに、ウェブページ210またはスタイルシート220に埋め込まれたオブジェクトのそれぞれは、さらにオブジェクトを埋め込んでもよい。このようなウェブページを画像ファイルに完全にレンダリングするために、バッチレンダリングエンジンは、埋め込みオブジェクト210−250(プライマリ埋め込みオブジェクト)のそれぞれを要求し、埋め込みオブジェクト210−250に埋め込まれたすべてのオブジェクト(セカンダリ埋め込みオブジェクト)、および埋め込みオブジェクト210−250に埋め込まれたオブジェクトに埋め込まれたすべてのオブジェクト(第3埋め込みオブジェクト)およびその他を要求しなければならない。
上述したように、個々のユーザのウェブブラウザはこれらの埋め込みオブジェクトの全てを効率的に要求し、および完全にレンダリングするためにそれらを使用し、およびリアルタイムでウェブページ200を表示することができるが、バッチレンダリングエンジンは、重複あるいは不要なコンテンツをフェッチしないように、埋め込みオブジェクトのコンテンツを待ってタイムアウトしないように、およびタスクの内部タイミングに関係なく、できるだけ早くレンダリングが完了するように、最適化されることができる。したがって、多数のクロールされたウェブページを効率的にレンダリングするために、図1に開示されたようなシステムが使用されることができる。
図3は、一実施形態に従った、バッチレンダリングエンジン142のいくつかのコンポーネントのブロック図である。バッチレンダリングエンジンは、図3に示されていない追加のコンポーネントを含んでもよい。バッチレンダリングシステム142は、ページタスクリスト305、仮想時計310、およびレンダリング結果315を含む。仮想時計310は、ウェブページをロードするためにタイムラインを歪ませ、フェッチされたリソースを待つことによって発生する可能性がある多数のエラーを回避するために使用されてもよい。仮想時計310は、レンダリングプロセスの開始時間にゼロまたは現在のクロック時間に初期化されてもよく、およびレンダリングエンジンが埋め込みアイテムのフェッチを待っていないときおよびページタスクリスト305に現時点で実行の準備ができているタスクがあるときのみ進んでもよい。仮想クロックが進められたとき、レンダリングエンジン142はページタスクリスト305に基づいて仮想時計310を進める。言い換えると、レンダリングエンジン142は、仮想時計310を次に発生するタスクによって表される時間に進める。この意味において、埋め込みアイテムをフェッチしてJava Scriptを実行することは仮想時間がかからず、ライブ(または個人)ブラウザによって発生したエラーのクラス全体を回避することができる。さらに、レンダリングプロセスは、タスクリストで指定された時間よりもずっと早くリアルタイムで終了してもよい。たとえば、”最終レンダリングを生成する”タスクは、20秒で発生するように設定されているが、仮想時計は通常は、ページタスクリスト305のタスクを実際に完了するのにかかる時間に応じて、実際の数秒で20秒進む。ページタスクリスト305の”最終レンダリングを生成する”タスクは、レンダリングが完了したとき、バッチレンダリングエンジン142に伝える停止タスクの一例である。
レンダリングエンジン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は、ホスティングサーバからのコンテンツのフェッチを介してだけ、要求プロセスに利用可能でない情報を提供する。たとえばインデックスエンジンは、インデックスの要素をランク付けし、目に見えない要素を断片の一部として提供し、および動的に生成されたコンテンツにインデックス付けするためにレンダリング結果情報を使用することができる。動的に生成されたコンテンツは、ウェブページをレンダリングしたあとに存在するコンテンツであり、クロールされたコンテンツには存在しない。
図4は、実施形態に従った、バッチレンダリングエンジンが、埋め込みオブジェクトを備えたウェブページをレンダリングすることができるプロセス例400を図示する流れ図である。プロセス400は、図1のシステム100のようなシステムによって実行されてもよい。広告システム、またはインターネットインデックスシステムのようなシステムは、ダウンストリームプロセスの要求でバッチモードのウェブページのレンダリング結果を生成するために、プロセス400を使用してもよい。いくつかの実施形態において、プロセス400は、レンダリングサーバのバッチレンダリングエンジンによって実行されてもよく、および要求プロセスからの要求に応答して開始されてもよい。
プロセス400は、ウェブページをレンダリングする要求を受信することから開始してもよい(405)。いくつかの実施形態において、要求は、要求されたウェブページのURLおよび/またはフェッチされたコンテンツと、関連するメタデータ(たとえばクロール時間)とを含んでもよい。いくつかの実施形態において、ウェブページのコンテンツを受信するのではなく、バッチレンダリングエンジンは、ウェブページのコンテンツがデータベースで利用可能であるという通知を受信し、データベースからコンテンツおよび関連するメタデータ(たとえば、クロール時間)を取り出すことができる。フェッチされたコンテンツは、たとえば、要求されたプロセスがすでにコンテンツをフェッチしているという理由で提供されてもよい。バッチレンダリングエンジンは、仮想時計を初期化し、タスクリストに停止タスクを追加することによって開始してもよい(410)。たとえば、バッチレンダリングエンジンは、仮想時計をゼロに設定し、レンダリングエンジンが所定の時間で完了したとレンダリングエンジンに判断させる停止タスクをタスクリストに追加してもよい。この停止タスクに関連付けられたランタイムは、個々のユーザのマシンでほとんどのウェブページが読み込みを完了までの時間であってもよい。たとえば、時間は15または20秒であってもよい。レンダリング開始の一部として、バッチレンダリングエンジンは、ウェブページのコンテンツをフェッチする(コンテンツが提供されなかった場合)、およびウェブページのコンテンツを処理する、などの他のタスクをタスクリストに追加してもよい。これらのタスクは、仮想時間ゼロで追加されてもよく、したがって、たとえばすぐに開始することができる。
次いでバッチレンダリングエンジンは、タスクリスト内のタスクに取り掛かることを開始してもよい(415)。たとえば、ウェブページのコンテンツの処理の一部として、バッチレンダリングエンジンは、1つまたは複数の埋め込みアイテムを識別してもよい(420)。次いでバッチレンダリングエンジンは、フェッチサーバから埋め込みアイテムのコンテンツを要求してもよい(425)。フェッチサーバは、図1のフェッチサーバ150であってもよい。いくつかの実施形態において、バッチレンダリングエンジンは、識別された埋め込みアイテムおよびフェッチサーバがそれぞれの埋め込みアイテムのためのコンテンツを返したか否かを追跡してもよい。いくつかの実施形態において、この埋め込みアイテムのリストは、ウェブページのレンダリング結果に含まれてもよい。バッチレンダリングエンジンが埋め込みアイテムを要求したあと、バッチレンダリングエンジンは、フェッチサーバがコンテンツを返すのを待つ間に実行する準備ができている別のタスク(415)上で作業を継続してもよい。現在の仮想時間に実行する準備ができているタスクがない場合、さもなければバッチレンダリングエンジンがフェッチサーバからの応答を待ってもよい。フェッチが未処理であるが、バッチレンダリングエンジンは仮想時計を進めないので、したがってバッチレンダリングエンジンはフェッチを待つのでタイムアウトしない。
フェッチサーバからの応答を受信したとき、バッチレンダリングエンジンは、埋め込みアイテムのコンテンツを処理する(430)。たとえば、コンテンツの受信に応答して、バッチレンダリングエンジンは、埋め込みアイテムの受信したコンテンツを解析するなどのタスクをタスクリストに追加してもよい。これらのタスクは、現在の仮想時計の開始時間を与えられてもよく、これはタスクが実行準備ができていることを示す(たとえば、仮想時計上の現在の時間)。受信したコンテンツを解析し、最初に要求されたウェブページのためあるいは埋め込みアイテムのためであるかにかかわらず、バッチレンダリングプロセスが追加のタスクをタスクリストに追加してもよい。たとえば、埋め込みアイテムのコンテンツを解析することは、追加の埋め込みアイテム(たとえば、セカンダリ埋め込みアイテム)を検出してもよく、これはバッチレンダリングエンジンに埋め込みアイテムを要求させ、および返されたときにコンテンツを解析させてもよい。コンテンツがたとえばJavaScriptなどのスクリプトを含む場合、スクリプトを実行することは、追加のタスクにレイアウトの生成やウェブページの1つまたは複数の要素の概観の変更などの追加のタスクを実行させてもよい。これらのタスクのいくつかは、将来開始することがスケジュールされてもよい。たとえば、画像の不透明度を一定の間隔で変更すると、画像がフェードインしているかのようにユーザに表示される。不透明度の各変化はタスクであり、スクリプトはタスクリストに、いくつかのそのようなタスクを追加させ、それぞれ現在の仮想時計のランタイムに指定された量を加えたものとなる。
レンダリングプロセスの一部として、バッチレンダリングエンジンは、レンダリングが完了したか否かを判断してもよい(435)。この判断は、例えば、バッチレンダリングエンジンがタスクを完了する度に、あるいは所定の時間の間隔などで行われてもよい。仮想時計が停止タスクで指定された時間に達すると、レンダリングは終了してもよい。埋め込みアイテムのフェッチが未処理である間、仮想時計が進まないので、仮想時計が停止タスクで指定された時間に達したとき、バッチレンダリングエンジンは各フェッチリクエストの要求を受信することが保証される。したがって、バッチレンダリングエンジンは、リソースの待機をタイムアウトすることはない。
レンダリングが完了していない場合(435、いいえ)、バッチレンダリングエンジンは、タスクリスト内のタスクに取り掛かることを継続し、1つまたは複数の埋め込みアイテムの要求に対する応答などを待ってもよい。レンダ理暗愚が完了した場合(435、はい)バッチレンダリングエンジンは、要求されたウェブページのためのレンダリング結果をファイナライズし(440)、レンダリング結果を要求プロセスに返してもよい。レンダリング結果の要素は、バッチレンダリングエンジンによって完了されたタスクの結果として以前に生成されたものでもよい。たとえば、スクリプトの実行中にフェッチされた埋め込みアイテムのリストおよび遭遇したエラーがレンダリングが完了する前に生成されてもよい。レイアウトを決定するなどの別の要素がレンダリングが完了したあとに発生してもよい。いくつかの実施形態において、レンダリングプロセスの一部として実行されるスクリプトが要素の位置を要求しない限り、バッチレンダリングエンジンは、レンダリングが終了するまでレイアウトを決定しない。レンダリングが完了する前にレイアウトが生成されたとしても、バッチレンダリングエンジンは、レンダリング結果のファイナライズの一部としてレイアウトを最終的に生成してもよい。したがって、レンダリング結果をファイナライズすることは、新しい要素を生成することおよびすでに生成された要素を集めることを含んでもよい。いくつかの実施形態において、バッチレンダリングエンジンは、レンダリング結果をメモリに格納し、レンダリング結果の位置を要求プロセスに提供してもよい。いくつかの実施形態において、システムは、いつ生成されたかを示すタイムスタンプとともにレンダリング結果を格納してもよく、レンダリング結果の2つ以上のバージョンを格納してもよい。バッチ処理の最適化とともにバッチモードでレンダリング結果を生成し、次いでプロセス400は終了する。
図5は、一実施形態に従った、バッチレンダリングエンジンが仮想時計を進めるプロセス例500を示す流れ図である。プロセス500は、レンダリングが終了したか否かを判断すうr一部として実行されてもよいが(例えば、図4のステップ435)、他の時間に(例えば、定期的に)実行されてもよい。プロセス500は、バッチレンダリングエンジンが埋め込みアイテムの要求を待っているか否かを判断することから開始してもよい(505)。例えば、バッチレンダリングエンジンがフェッチサーバから埋め込みアイテムを要求し、フェッチサーバからまだ応答を受信していない場合、バッチレンダリングエンジンは待機中である。バッチレンダリングエンジンが待機中である場合(505、はい)、仮想時計は進められず、バッチレンダリングエンジンは、存在するならば現在の仮想時間で実行する準備ができているタスクに取り組んでもよく、あるいは待機してもよい(510)。このステップは、図4のステップ415の一部として実行されてもよい。バッチレンダリングエンジンがフェッチ要求を待っていない場合(505、いいえ)、バッチレンダリングエンジンは、タスクリスト内に実行準備ができているタスクが存在するか否かを判断してもよい(515)。たとえば、タスクリスト内のタスクが仮想時計と等しいランタイムを有する場合、タスクは実行準備ができている。タスクが実行準備ができている場合(515、はい)、バッチレンダリングエンジンはタスクに取り組んでもよい(520)。タスクに取り組むことは、タスクリストに別のタスクを追加してもよく、そのうちのいくつかは実行準備ができていてもよく、そのうちの他のものは将来のランタイムを有していてもよい(例えば、現在の仮想時間プラス所定の時間)。このステップは、図4のステップ415の一部として実行されてもよい。実行準備が整っている保留中のタスクが存在しない場合(515、いいえ)、バッチレンダリングエンジンは仮想時計をタスクリストで指定された次のランタイムに進めてもよい。言い換えると、バッチレンダリングエンジンは、仮想時計を先に歪めてもよく、そうすることによってタスクリスト内のラインの次のタスクはすぐに実行できる。
タスクリスト内のラインの次のタスクが停止タスクである場合(530、はい)、レンダリングは完了する。そうでなければ、バッチレンダリングエンジンは、保留中のタスクに取り組むことを継続してもよい(520)。プロセス500は、実行準備ができている保留中のタスクがある間、あるいは埋め込みアイテムのフェッチを待機している間に、仮想時計がどのように進まないかを示す。したがって、これらのイベントに対して仮想時計が“停止して”おり、レンダリングエンジンが実際のクロックを使用するときに遭遇したエラーのクラスを避けることができる。さらに、プロセス500は、仮想時計がどのように前に歪ませられることができるかを示し、そうすることによっていくつかの例において、レンダリングプロセスは、タスクによって指示されたタイミング(例えば、画像のフェードインするまたはアニメーションの再生をする時間間隔を待機する)よりも実時間をかけないことができる。これは、本明細書でより詳細に説明するように、埋め込みアイテムがクロールなしで返されるときに特に当てはまる。もちろん、保留中のタスクのチェック(515)およびフェッチ要求(505)の順序を逆にすることもでき、よび実施形態は、図5に示された順序に限定されないおkとが理解される。
図6は、実施形態に従った、フェッチサーバが埋め込みアイテムのコンテンツをバッチレンダリングエンジンに提供するプロセス例を図示する流れ図である。プロセス600は、図1のシステム100のようなシステムによって実行されてもよい。システムは、複数のバッチレンダリングシステムから、埋め込みアイテムのためのフェッチリソースに対応するプロセス600を使用してもよい。いくつかの実施形態において、プロセス600は、フェッチサーバによって実行されてもよく、およびバッチレンダリングエンジンの1つからの要求に応答して開始されてもよい。
プロセス600は、埋め込みアイテム(605)のためのURLをフェッチサーバが受信することから開始してもよい。ULRは、バッチレンダリングエンジンによって提供されてもよく、およびバッチレンダリングエンジンによって要求された複数のURLの1つであってもよい。フェッチサーバは、要求された埋め込みアイテム(610)のURLに書き換え規則を適用してもよい。書き換え規則は、図1のURL書き換え規則154であってもよい。書き換え規則は、テンプレートおよびリダイレクトURLを含んでもよい。書き換え規則を適用することは、URLが書き換え規則の一つのためのパターンまたはテンプレートに一致するか否かを判断することを含んでもよい。例えば、テンプレートは、任意のクエリ文字列が削除されたURLであってもよく、およびシステムはテンプレートに一致するかを調べるために要求された埋め込みアイテムのURLからクエリ文字列を削除してもよい。別の例として、テンプレートは、任意の文字または文字列がワイルドカード文字と一致することができる場所を示す、*および?のようなワイルドカード文字を含んでもよい。
URLがパターンと一致した場合、書き換え規則は、リダイレクトURLを提供してもよく、およびフェッチサーバは、リダイレクトURLを備えた要求された埋め込みアイテムのURLを代用してもよい。書き換え規則を適用するための理由の一つは、フェッチサーバが、URLを識別し、および同じコンテンツを返すURLを識別し、不要なフェッチをスケジュールする必要がないようにするためにリダイレクトURLを使用できるようにするためである。一般的に埋め込まれたアイテムの特定のタイプは、動的に生成されたURLを有する。例えば、いくつかの埋め込みアイテムのURLは、乱数発生器によって生成される乱数、または日付と時刻関数によって返される現在の日付と時間に依存する。キャッシュバスティング(cache-busting)トラッキングURLと呼ばれるこれらの埋め込みオブジェクトは、一般的に、広告費用または収益を測定する目的で、ウェブページの固有のヒット数またはビュー数を測定するために使用される。このような埋め込みオブジェクトのコンテンツは、通常は同一であるが、固有のURLは、レンダリングエンジンによって検出される度にそのオブジェクトに対して生成される。したがって、そのような埋め込みアイテムを含むウェブページのために、レンダリングエンジンは、ウェブページのレンダリングを試みる度にオブジェクトのための新しく異なるURLを見て、書き換え規則を適用することなく、フェッチサーバは同じコンテンツを何度もフェッチする。これを避けるために、書き換え規則は、フェッチサーバにこれらのURLを識別させ、フェッチ要求をリダイレクトURLの下に格納された以前に取得されたコンテンツにリダイレクトするためのテンプレートを適用してもよい。
書き換え規則を適用するもう一つの理由は、ブラックリストに載っているURLを識別するためである。書き換え規則は、ブラックリストに載っているURLを識別する規則、あるいはブラックリストに載っているURLのためのパターンあるいはテンプレートを含んでもよい。例えば、書き換え規則は、テンプレート、および関連したリダイレクトURL、エラー、あるいはフラグを含んでもよい。要求された埋め込みアイテムのためのURLがブラックリストに載っているURLあるいはブラックリストに載っているURLのためのテンプレートと一致した場合、フェッチサーバは、URLをブラックリストに載っているものとして識別してもよい。いくつかの実施形態において、書き換え規則を適用することは、URLがリダイレクトURLに置き換えられる要因となってもよい。いくつかの実施形態において、書き換え規則を適用することは、URLがブラックリストに載っているものとしてフラグを立ててもよく、あるいはURLによって識別された埋め込みアイテムのための要求に対する応答として返すためにエラーを提供してもよい。
URLがブラックリストに載っている場合(615、はい)、フェッチサーバは要求しているバッチレンダリングエンジン(620)にエラーを返してもよい。エラーは、リソースが見つからなかったことを示す標準的なエラー、あるいはリソースが必要ではない、またはスキップができることなどをレンダリングエンジンに知らせる特定のエラーであってもよい。エラーは、書き換え規則がリダイレクトURLを提供したとき、埋め込みアイテムテーブルから、書き換え規則、ハードコードなどのフラグに基づいて選択された一致させている書き換え規則によって、埋め込みアイテムテーブルから提供されてもよい。次いでこのURLのためのフェッチ要求が完了し、プロセス600は終了する。
URLがブラックリストに載っていない場合(615、いいえ)、フェッチサーバは、埋め込みアイテムデータストア(625)内の書き換えられたURLを探してもよい。埋め込みアイテムデータストアは、図1の埋め込みアイテムテーブル152であってもよい。オリジナルURLが書き換え規則の識別されたパターンと一致した場合、書き換えられたURLは、書き換え規則によって提供されたリダイレクトURLであってもよい。URLが書き換え規則の任意のテンプレートと一致しない場合、書き換えられたURLは、オリジナルURLであってもよい。URLが埋め込みアイテムデータストア(625、はい)内にある場合、フェッチサーバは、要求されたURLが画像用であるか否かを任意に決定してもよい(630)。これは任意であり、画像のためのテストをしない実施形態において、ステップ630は省略されてもよい。要求された埋め込みアイテムが画像であるか否かは、要求の情報、URL自体に基づいて、あるいは書き換えられたURLのための埋め込みアイテムデータストア内のフィールドに基づいて、決定されてもよい。埋め込みアイテムが画像である場合(630、はい)、図7のプロセス700に関してより詳細に説明されるように、システムは、画像のサイズについてサイズテーブル内を調べ、およびサイズを有するモック画像を返してもよい。いくつかの実施形態において、フェッチサーバは、埋め込みアイテムデータストアを前に、またはエントリが古いかどうかを判定した後に、書き換え規則を適用する前にステップ630を実行してもよいことが理解される。
要求された埋め込みアイテムが画像でない場合(630、いいえ)、フェッチサーバは、埋め込みアイテムテーブル内のエントリが古いか否かを判断してもよい(645)。エントリが古いか否かは、アイテムの変更率、埋め込みアイテムのタイプ(例えば、スクリプト、スタイルシート、画像など)、ブラウザレンダリングエンジンがレンダリングしているウェブページの重要度、などのいくつかの要因に依存してもよい。いくつかの実施形態において、埋め込みアイテムテーブルは、例えばブラックリストに載っている埋め込みアイテムのURLのリダイレクトURLのためのように、エントリが古くならないことを示すフィールドあるいは値を有してもよい。エントリが古くない場合(645、いいえ)、フェッチサーバは、書き換えられたURLについての埋め込みアイテムテーブルのコンテンツを、要求しているバッチレンダリングエンジン(650)に返してもよく、この埋め込みアイテムについてのプロセス600は終了する。いくつかの実施形態において、コンテンツを返すことは、フェッチサーバが埋め込みアイテムテーブル内のエントリの位置を応答として提供することと、バッチレンダリングプロセスが位置を使用してコンテンツにアクセスすることと、を含んでもよい。
埋め込みアイテムテーブル内のエントリが古い場合(645、はい)または書き換えられたURLが埋め込みアイテムデータストア内に無い場合(625、いいえ)、フェッチサーバは、例えば図1のウェブ巡回エンジン130のようなウェブ巡回からURLのフェッチを要求してもよい(635)。フェッチサーバがクロールコンテンツを受信するとき、通信あるいはさらなる処理をせずに、受信したコンテンツを埋め込みアイテムデータストアにエントリとして格納してもよい(640)。いくつかの実施形態において、フェッチサーバは、埋め込みアイテムの以前のクロールのコンテンツおよびクロール時間に上書きせずに、埋め込みアイテムのコンテンツおよびクロール時間を保存することができる。いくつかの実施形態において、フェッチサーバは、埋め込みアイテムテーブルに1つのエントリをキープしてもよく、および埋め込みアイテムの以前のクロールを維持しなくてもよい。いずれにせよ、埋め込みアイテムテーブル内に一旦保存されると、コンテンツはキャッシュされ、および古くなるまで再度フェッチされる必要はない。フェッチサーバは、フェッチされたコンテンツを要求しているバッチレンダリングエンジンに返してもよく(650)、プロセス600は終了する。
図7は、一実施形態に従った、フェッチサーバがモック画像をバッチレンダリングエンジンに提供するプロセス例700を図示する流れ図である。プロセス700は、図1のシステム100のようなシステムによって実行されてもよい。システムは、複数のバッチレンダリングエンジンからの、ウェブページに埋め込まれた画像のためのフェッチ要求に応答するために、プロセス700を使用してもよい。いくつかの実施形態において、プロセス700は、フェッチサーバによって実行されてもよく、およびバッチレンダリングエンジンの1つからの要求に応答して開始されてもよい。いくつかの実施形態において、フェッチサーバは、他の埋め込みアイテム(例えば、図6のプロセス600)とは無関係にプロセス700を実行してもよい。別の実施形態において、フェッチサーバは、プロセス700の要素を他の埋め込みアイテムを含むプロセス、例えば図6のプロセス600に組み込んでもよい。
プロセス700は、要求された画像がサイズテーブル(705)にエントリを有するか否かをフェッチサーバが判断することから開始してもよい。画像サイズテーブルは、図1の画像サイズテーブル156であってもよい。画像サイズテーブルは、画像のためのサイズを含み、これはURLのような画像のための識別子によって格納される。画像がサイズテーブルにない場合(705、いいえ)、あるいは画像がサイズテーブルにあるが(705、はい)古い(710、はい)場合、フェッチサーバは、例えば図1のウェブ巡回エンジン130のようなウェブ巡回エンジンを介して、画像のフェッチ(715)をスケジュールしてもよい。いくつかの実施形態において、フェッチサーバは、エントリが古いか否かを判断するためにサイズテーブルの情報を使用してもよい。いくつかの実施形態において、フェッチサーバは、サイズが古いか否かを判断するために、図6のステップ645に関して上述したように、別個の埋め込みアイテムテーブルからの情報を使用してもよい。したがって、いくつかの実施形態において、フェッチサーバは図6のステップ645と併せて、あるいはその一部としてステップ710を実行してもよい。画像のためのコンテンツが受信されたとき、フェッチサーバは、サイズテーブルに画像のためのエントリを追加してもよく、エントリはフェッチされた画像のサイズを含む(720)。いくつかの実施形態において、フェッチサーバは、図6のステップ640の一部として上述されたように、フェッチされたコンテンツを埋め込みアイテムテーブルに格納してもよい。
画像がサイズテーブルにあり(705、はい)、かつ古くない(710、いいえ)場合、あるいは画像がフェエッチされて格納された(720)後、システムはサイズテーブル(725)からサイズを使用してモック画像を生成してもよい。モック画像は、要求された画像と同じサイズであるが空のコンテンツを指定する画像ファイルフォーマットデータを有してもよい。システムは、モック画像(730)を要求バッチレンダリングエンジンに返し、プロセス700は終了する。
いくつかの実施形態において、プロセス700のステップのいくつかは、任意であるかまたは他の処理の一部として実行されてもよいことが理解される。例えば、画像のサイズが古いか否かを判断するステップは、図6のステップ645の一部として実行されてもよく、埋め込みアイテムテーブルの情報に基づいてもよい。さらに、ステップ715は、図6のステップ635の一部として、あるいはそれと併せて実行されてもよい。言い換えると、フェッチサーバは、画像のためのコンテンツをフェッチする、キャッシュされフェッチされたコンテンツが古いか否かを判断する、などのようなプロセス600の態様とプロセス700の態様を組み合わせてもよい。もちろん、フェッチサーバは、プロセス600と完全に独立したプロセス700を実行してもよい。したがって、実装はプロセス700の変形を含んでもよい。
図6は、汎用コンピュータデバイス800の例を示しており、それは、図1のシステム100、及び/又はクライアント170として動作し得、また、本明細書に記載される技法を用いて使用され得る。コンピューティングデバイス800は、コンピューティングデバイスの種々の形態例、例えば、ラップトップ、デスクトップ、ワークステーション、パーソナルデジタルアシスタント、携帯電話、スマートフォン、タブレット、サーバ、ならびにウェアラブルデバイスを含む他のコンピューティングデバイスなどを表わすことが意図される。本明細書に示される構成要素、それらのつながりや関係、およびそれらの機能は、単なる例であることを意味するものであり、この文書において記載される及び/又は請求される発明の実施形態を限定することを意味するものではない。
コンピューティングデバイス800は、インターフェース808経由で接続される、例えばシリコーンベースのハードウェアプロセッサ等のプロセッサ802、メモリ804、ストレージデバイス806、および拡張ポート810を含む。いくつかの実施形態において、コンピューティングデバイス800は、インターフェース808経由で接続される、いくつかある構成要素の中でも、送受信機846、通信インターフェース844、およびGPS(全地球測位システム)レシーバモジュー848を含み得る。デバイス800は、通信インターフェース844を通して無線で通信し得、それは、必要に応じて、デジタル信号処理回路を含み得る。構成要素802、804、806、808、810、840、844、846、および848のそれぞれは、必要に応じて、一般的なマザーボード上にまたは他の様式で搭載され得る。
プロセッサ802は、メモリ804内またはストレージデバイス806上に記憶された命令を含む、コンピューティングデバイス800内の実行のための命令を処理することができ、外部入出力デバイス、例えばディスプレイ816などの上にGUIのためのグラフィカル情報を表示する。ディスプレイ816は、モニタまたはフラットタッチスクリーンディスプレイであり得る。いくつかの実施形態において、複数のプロセッサ及び/又は複数のバスが、必要に応じて、複数のメモリや複数の種類のメモリと共に、使用され得る。また、複数のコンピューティングデバイス800は、(例えば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして)必要な動作の一部分を提供する各デバイスと、接続され得る。
メモリ804は、コンピューティングデバイス800内に情報を記憶する。一実施形態において、メモリ804は、揮発性メモリのユニットまたは複数ユニットである。別の実施形態において、メモリ804は、不揮発性メモリのユニットまたは複数ユニットである。メモリ804はまた、コンピュータで読み取り可能な媒体の別の形態、例えば磁気もしくは光学ディスクなどであり得る。いくつかの実施形態において、メモリ804は、拡張インターフェースを通して提供される拡張メモリを含み得る。
ストレージデバイス806は、コンピューティングデバイス800のためのマスストレージを提供することができる。一実施形態において、ストレージデバイス806は、コンピュータで読み取り可能な媒体、例えば、フロッピーディスクデバイス、ハードディスクデバイス、光学ディスクデバイス、またはテープデバイス、フラッシュメモリもしくは他の類似の固体メモリデバイス、あるいはストレージエリアネットワークもしくは他の構成におけるデバイスを含む、デバイスのアレイなどであり得るか、それらを含み得る。コンピュータプログラム製品は、そのようなコンピュータで読み取り可能な媒体に明白に具体化され得る。コンピュータプログラム製品はまた、実行されるときに、例えば上記したものなどの、1つ以上の方法を行う命令を含み得る。コンピュータまたはマシンで読み取り可能な媒体は、ストレージデバイス、例えばメモリ804、ストレージデバイス806、またはプロセッサ802上のメモリなどである。
インターフェース808は、コンピューティングデバイス800のための帯域消費型の動作を扱う高速コントローラ、またはより低い帯域消費型の動作を扱う低速コントローラ、あるいはそのようなコントローラの組み合わせであり得る。外部インターフェース840は、他のデバイスとのデバイス800の近接領域通信を可能にするように、提供され得る。いくつかの実施形態において、コントローラ808は、ストレージデバイス806および拡張ポート814に結合され得る。種々の通信ポート(例えば、USB、ブルートゥース(登録商標)、イーサネット(登録商標)、無線イーサネット(登録商標))を含み得る拡張ポートは、例えば、ネットワークアダプタを通して、1つ以上の入出力デバイス、例えば、キーボード、ポインティングデバイス、スキャナ、または例えばスイッチもしくはルータなどのネットワーキングデバイスに結合され得る。
コンピューティングデバイス800は、図面に示されるように、多くの異なる形態で実装され得る。例えば、それは、標準サーバ830として、またはそのようなサーバのグループにおいて複数回、実装され得る。それはまた、ラックサーバシステムの一部として実装され得る。加えて、それは、パーソナルコンピュータ、例えばラップトップコンピュータ832、デスクトップコンピュータ834、あるいはスマートフォン836などで実装され得る。システム全体は、互いに通信する複数のコンピューティングデバイス800で構成され得る。他の構成が可能である。
図9は、汎用コンピュータデバイス900の例を示しており、それは、図1のシステム100であり得るとともに本明細書に記載される技法を用いて使用され得る。コンピューティングデバイス900は、大規模データ処理デバイス、例えばサーバ、ブレードサーバ、データセンター、メインフレーム、および他の大規模コンピューティングデバイスなどの種々の形態例を表わすことが意図される。コンピューティングデバイス900は、場合によっては1つ以上の通信ネットワークによって相互接続されるネットワーク接続ストレージノードを含む、複数プロセッサを有する分散型システムであり得る。本明細書に示された構成要素、それらのつながりや関係、およびそれらの機能は、単なる例示であることを意味するものであり、この文書において記載されるか請求される発明の実施形態を限定することを意味するものではない。
分散型コンピューティングシステム900は、任意の数のコンピューティングデバイス980を含み得る。コンピューティングデバイス980は、ローカルもしくはワイドエリアネットワーク、専用光学リンク、モデム、ブリッジ、ルータ、スイッチ、有線もしくは無線ネットワーク等の上で通信する、サーバまたはラックサーバ、メインフレーム等を含み得る。
いくつかの実施形態において、各コンピューティングデバイスは、複数のラックを含み得る。例えば、コンピューティングデバイス980aは、複数のラック958a〜958nを含む。各ラックは、1以上のプロセッサ、例えばプロセッサ952a〜952nおよび962a〜962nなどを含み得る。プロセッサは、データプロセッサ、ネットワーク接続ストレージデバイス、および他のコンピュータ制御デバイスを含み得る。いくつかの実施形態において、1つのプロセッサは、マスタープロセッサとして動作し得、スケジューリングおよびデータ分散タスクを管理し得る。プロセッサは、1以上のラックスイッチ958を通して相互接続され得、1以上のラックが、スイッチ978を通して接続され得る。スイッチ978は、複数の接続されたコンピューティングデバイス900間の通信に対処し得る。
各ラックは、メモリ、例えばメモリ954やメモリ964など、およびストレージ、例えば956および966などを含み得る。ストレージ956および966は、マスストレージを提供し得、揮発性もしくは不揮発性ストレージ、例えばネットワーク接続ディスク、フロッピーディスク、ハードディスク、光学ディスク、テープ、フラッシュメモリもしくは他の類似の固体メモリデバイス、あるいはストレージエリアネットワークまたは他の構成におけるデバイスを含む、デバイスのアレイなどを含み得る。ストレージ956または966は、複数のプロセッサ、複数のラック、または複数のコンピューティングデバイス間で共有され得、1つ以上のプロセッサによって実行可能な命令を記憶するコンピュータで読み取り可能な媒体を含み得る。メモリ954および964は、例えば、揮発性メモリのユニットまたは複数ユニット、不揮発性メモリのユニットもしくは複数ユニット、及び/又はコンピュータで読み取り可能な媒体の他の形態、例えば、磁気もしくは光学ディスク、フラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、およびそれらの組み合わせなどを含み得る。メモリ、例えばメモリ954などはまた、プロセッサ952a〜952n間で共有され得る。索引などのデータ構造は、例えば、ストレージ956やメモリ954にわたって、記憶され得る。コンピューティングデバイス700は、図示されない他の構成要素、例えば、コントローラ、バス、入出力デバイス、通信モジュール等を含み得る。
システム100などのシステム全体は、互いと通信する複数のコンピュータデバイス900で構成され得る。例えば、デバイス980aは、デバイス980b、980c、および980dと通信し得、これらは、集合的にシステム100として知られ得る。別の例として、図1のシステム100は、1以上のコンピュータデバイス900を含み得る。コンピュータデバイスのうちのいくつかは、互いに地理的に近く位置し得、その他は、地理的に離れて位置し得る。コンピュータデバイス900のレイアウトは、単なる例であり、システムは、他のレイアウトまたは構成を取り得る。
さまざまな実施形態は、ストレージシステム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータや命令を受信するように、並びにそれらにデータや命令を送信するように、結合される、特殊目的もしくは一般の目的であり得る、回路基板に形成された少なくとも1つのプログラム可能なプロセッサを含むプログラム可能なシステム上で実行可能または解釈可能である1つ以上のコンピュータプログラムにおける実施形態を含むことができる。
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、またはコードとしても知られる)は、プログラム可能なプロセッサに対する機械語命令を含み、高レベル手続言語及び/又はオブジェクト指向プログラミング言語で、ならびに/あるいはアセンブリ/機械言語で実装することができる。本明細書で使用される場合、「機械可読媒体」「コンピュータ可読媒体」という用語は、機械語命令及び/又はデータをプログラム可能なプロセッサに提供するために使用される任意の非一時的コンピュータプログラム製品、装置、及び/又はデバイス(例えば、磁気ディスク、光ディスク、メモリ(読み取り専用メモリを含む)、プログラマブル論理デバイス(PLD))を指す。
本明細書で述べたシステムおよび技術は、バックエンドコンポーネント(例えば、データサーバとして)を含むコンピューティングシステム、またはミドルウェアコンポーネント(例えば、アプリケーションサーバ)を含むコンピューティングシステム、またはフロントエンドコンポーネント(例えば、ユーザが本明細書で述べたシステムおよび技術の実装と相互作用することができるグラフィカルユーザインタフェースまたはウェブブラウザを備えたクライアントコンピュータ)を含むコンピューティングシステム、またはこのようなバックエンド、ミドルウェア、またはフロントエンドコンポーネントの任意の組合せで、実装されることができる。前記システムのコンポーネントは、デジタルデータ通信(例えば通信ネットワーク)の任意の形式または媒体で接続されることができる。通信ネットワークの例としては、ローカルエリアネットワーク(”LAN”)、ワイドエリアネットワーク(”WAN”)、およびインターネットを含む。
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントおよびサーバは、通常、相互に離れており、および通常は、通信ネットワークを通じて相互作用する。クライアントとサーバの関係は、それぞれのコンピュータ上で動作し、互いにクライアント−サーバ関係を有するコンピュータプログラムの効力によって生じる。
多くの実施形態が説明されてきた。それにもかかわらず、本発明の精神および範囲から逸脱することなく、さまざまな変更がなされ得る。さらに、図に示された論理フローは、望ましい結果を達成するために、図示された特定の順序または連続する順序である必要はない。さらに、他のステップを設けても、または記載されたフローから複数のステップを除いてもよく、また、記載されたシステムに他の要素を追加してもよく、またはそこから除去してもよい。従って、他の実施形態は、添付の特許請求の範囲に含まれる。
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 エラー

Claims (19)

  1. 少なくとも1つのプロセッサと、
    メモリと、を含むコンピュータシステムであって、前記メモリが、
    埋め込みアイテムのためのコンテンツのデータストアと、
    前記少なくとも1つのプロセッサによって実行されたときに、前記システムに、
    バッチプロセスから、ウェブページをレンダリングするための要求を受信することと、
    前記ウェブページの埋め込みアイテムを識別することと、
    書き換え規則に基づいて、前記埋め込みアイテムが以前にフェッチされた埋め込みアイテムのためのコンテンツの重複であるコンテンツを有すると判定することと、
    前記判定に応答して、前記データストアから前記以前にフェッチされた埋め込みアイテムのための前記コンテンツを提供することと、
    前記以前にフェッチされた埋め込みアイテムのための前記コンテンツを使用して、前記ウェブページについてのレンダリング結果を生成することと、
    前記バッチプロセスに前記レンダリング結果を提供することと、
    を行わせる命令と、を格納する、
    コンピュータシステム。
  2. 前記埋め込みアイテムが以前にフェッチされた埋め込みアイテムのためのコンテンツの重複であるコンテンツを有すると判断することの一部として、前記命令が、前記少なくとも1つのプロセッサによって実行されるときに、前記システムに、
    前記書き換え規則のテンプレートに前記埋め込みアイテムを照合させることをもたらす命令をさらに含み、前記書き換え規則がリダイレクト識別子も含み、
    ここで、前記以前にフェッチされた埋め込みアイテムのための前記コンテンツを提供することが、前記以前にフェッチされた埋め込みアイテムのための前記コンテンツを示すための前記リダイレクト識別子を使用することを含む、
    請求項1に記載のシステム。
  3. 前記テンプレートが、クエリ文字列なしでURLを含む、請求項2に記載のシステム。
  4. 前記埋め込みアイテムが、第1の埋め込みアイテムであり、かつ前記命令が、前記少なくとも1つのプロセッサによって実行されるとき、前記システムに、
    前記ウェブページの第2の埋め込みアイテムを識別し、
    前記第2の埋め込みアイテムがブラックリストに載せられているか否かを判断し、
    前記第2の埋め込みアイテムが前記第2の埋め込みアイテムのためのフェッチコンテンツなしでブラックリストに載せられているとき、エラーを返し、
    前記第2の埋め込みアイテムのための前記コンテンツなしで前記レンダリング結果を生成することをもたらす命令をさらに含む、
    請求項1に記載のシステム。
  5. 前記命令が、前記少なくとも1つのプロセッサによって実行されるとき、前記システムに、
    前記レンダリング結果を生成するとき、仮想時計を使用することをもたらす命令をさらに含み、前記仮想時計が、リアルタイムとは無関係に進む、
    請求項1に記載のシステム。
  6. 前記命令が、前記少なくとも1つのプロセッサによって実行されるとき、前記システムに、
    前記レンダリング結果を生成するとき、仮想時計を使用することをもたらす命令をさらに含み、
    前記仮想時計が、前記以前にフェッチされた埋め込みアイテムの前記提供されたコンテンツを待つ間に進行しない、
    請求項1に記載のシステム。
  7. 前記埋め込みアイテムが、第1の埋め込みアイテムであり、かつ前記命令が、前記少なくとも1つのプロセッサによって実行されるとき、前記システムに、
    前記ウェブページの第2の埋め込みアイテムを識別し、
    前記第2の埋め込みアイテムが画像を含むことを判断し、
    サイズテーブルを使用して、前記第2の埋め込みアイテムのためのサイズを指定するモック画像を生成し、
    前記レンダリング結果を生成するときに前記モック画像を使用することをもたらす命令をさらに含む、
    請求項1に記載のシステム。
  8. ウェブページをレンダリングするための要求をバッチプロセスから受信するステップと、
    少なくとも1つのプロセッサを使用して、仮想時計と前記ウェブページをレンダリングするためのタスクリストを初期化するステップであって、前記仮想時計が、埋め込みアイテムのための要求が未処理であるときかつタスクが準備完了であるとき、依然として静止している、初期化するステップと、
    前記仮想時計が前記タスクリストの停止タスクのためのランタイムに一致するとき、前記少なくとも1つのプロセッサを使用して、前記ウェブページのためのレンダリング結果を生成するステップと、
    前記バッチプロセスのための前記レンダリング結果を提供するステップと、を含む、
    方法。
  9. 前記タスクリストを初期化するステップが、ランタイムセットを備えた前記停止タスクを前記仮想時計に追加された所定の時間に追加するステップを含む、請求項8に記載の方法。
  10. 前記バッチプロセスが、インデックスエンジンを含み、かつ前記方法が、インデックスのトークンをランク付けするために前記レンダリング結果を使用するステップをさらに含む、請求項8に記載の方法。
  11. 埋め込みアイテムに対する要求が未解決でない、かつ前記仮想時計よりも大きいランタイムを有するただ一つのタスクが前記タスクリストにあるとき、前記仮想時計を前記タスクリスト内のタスクのランタイムに進めるステップをさらに含む、請求項8に記載の方法。
  12. 前記ウェブページの埋め込み画像を識別するステップと、
    前記埋め込み画像のためのコンテンツを要求するステップと、
    前記要求に応答して、前記埋め込み画像のためにサイズを指定するが、空のコンテンツを有するモック画像を受信するステップと、
    前記レンダリング結果を生成するときに前記モック画像を使用するステップと、をさらに含む、
    請求項8に記載の方法。
  13. 前記バッチプロセスが、インデックスエンジンであり、かつ前記方法が、前記レンダリング結果の情報に基づいて、前記ウェブページのためのランクを降格させるステップをさらに含む、請求項8に記載の方法。
  14. 前記バッチプロセスが、インデックスエンジンであり、かつ前記方法が、動的に生成されたコンテンツにインデックスを付けるために前記レンダリング結果を使用するステップをさらに含む、請求項8に記載の方法。
  15. ウェブページ内の埋め込みアイテムのユニフォームリソースロケータ(URL)のためのバッチレンダリングプロセスから要求を受信するステップと、
    少なくとも1つのプロセッサを使用して、書き換えられたURLを判断する書き換え規則を適用するステップと、
    前記少なくとも1つのプロセッサを使用して、前記書き換えられたURLのためのコンテンツがデータストアに存在するか否かを判断するステップと、
    前記コンテンツが存在するとき、前記コンテンツを前記バッチレンダリングプロセスに提供するステップと、
    前記コンテンツが存在しないとき、
    前記コンテンツのフェッチを初期化し、ここで前記バッチレンダリングプロセスが前記フェッチの間にタイムアウトなしで待機するように構成され、
    ウェブ巡回エンジンから前記コンテンツを受信するステップと、
    前記バッチレンダリングプロセスのための前記コンテンツを提供するステップと、
    前記データストアの前記コンテンツを保存するステップと、を含む、
    方法。
  16. 前記バッチレンダリングプロセスによって、前記ウェブページのレンダリング結果を生成する前記コンテンツを使用するステップをさらに含む、請求項15に記載の方法。
  17. 前記レンダリング結果が、レイアウト情報および動的に生成されたコンテンツを含む、請求項16に記載の方法。
  18. 書き換え規則を適用するステップが、前記URLを、リダイレクトURLと関連しているテンプレートに照合させるステップを含み、
    前記URLが前記テンプレートに一致するとき、前記リダイレクトURLが、前記書き換えられたURLであると判断され、
    前記URLがテンプレートに一致しないとき、前記URLが、前記書き換えられたURLである、
    請求項15に記載の方法。
  19. 変更率または前記データストアに保存された前記埋め込みアイテムのタイプに基づいて、前記書き換えられたURLのための前記コンテンツが古いと判断するステップと、
    前記書き換えられたURLのための前記コンテンツが古いと判断する前記ステップに応答して、
    前記ウェブ巡回エンジンから更新されたコンテンツを受信するステップと、
    前記更新されたコンテンツを備えた前記データストアを更新するステップと、
    書き換えられたURLのための前記コンテンツとして、前記更新されたコンテンツを提供するステップと、をさらに含む、
    請求項15に記載の方法。
JP2016572796A 2014-06-26 2014-06-26 バッチ最適化レンダリング及びフェッチアーキテクチャ Active JP6356273B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/080832 WO2015196414A1 (en) 2014-06-26 2014-06-26 Batch-optimized render and fetch architecture

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2018111739A Division JP6568985B2 (ja) 2018-06-12 2018-06-12 バッチ最適化レンダリング及びフェッチアーキテクチャ

Publications (2)

Publication Number Publication Date
JP2017526041A true JP2017526041A (ja) 2017-09-07
JP6356273B2 JP6356273B2 (ja) 2018-07-11

Family

ID=54930717

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016572796A Active JP6356273B2 (ja) 2014-06-26 2014-06-26 バッチ最適化レンダリング及びフェッチアーキテクチャ

Country Status (6)

Country Link
US (2) US9984130B2 (ja)
EP (1) EP3161668B1 (ja)
JP (1) JP6356273B2 (ja)
CN (1) CN106462582B (ja)
RU (1) RU2659481C1 (ja)
WO (1) WO2015196414A1 (ja)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015071997A1 (ja) * 2013-11-14 2015-05-21 楽天株式会社 情報処理システム、情報処理装置、情報処理方法、記録媒体、及び、プログラム
RU2665920C2 (ru) 2014-06-26 2018-09-04 Гугл Инк. Оптимизированный процесс визуализации в браузере
JP6356273B2 (ja) * 2014-06-26 2018-07-11 グーグル エルエルシー バッチ最適化レンダリング及びフェッチアーキテクチャ
KR102133486B1 (ko) 2014-06-26 2020-07-13 구글 엘엘씨 최적화된 브라우저 렌더링 프로세스
US20170032420A1 (en) * 2015-07-29 2017-02-02 Linkedln Corporation Publisher facilitated advertisement mediation
US10778744B2 (en) * 2015-08-13 2020-09-15 Molbase (Shanghai) Biotechnology Co., Ltd. Configurable caching system and method thereof
US10216694B2 (en) * 2015-08-24 2019-02-26 Google Llc Generic scheduling
US10033826B2 (en) * 2015-09-11 2018-07-24 Verizon Patent And Licensing Inc. Token based dynamic cache-busting
US10452730B2 (en) * 2015-12-22 2019-10-22 Usablenet Inc. Methods for analyzing web sites using web services and devices thereof
US10528647B2 (en) * 2016-06-10 2020-01-07 Ebay Inc. Optimization for browser rendering during navigation
CN106204713B (zh) * 2016-07-22 2020-03-17 网易(杭州)网络有限公司 静态合并处理方法和装置
US10574723B2 (en) * 2016-11-30 2020-02-25 Nutanix, Inc. Web services communication management
CN109558187B (zh) * 2017-09-27 2022-08-23 斑马智行网络(香港)有限公司 一种用户界面渲染方法及装置
US10984166B2 (en) 2017-09-29 2021-04-20 Oracle International Corporation System and method for extracting website characteristics
US10878187B1 (en) * 2017-12-13 2020-12-29 Amazon Technologies, Inc. Network-based content rendering
US11095748B1 (en) * 2017-12-13 2021-08-17 Amazon Technologies, Inc. Network-based content rendering
CN108717651B (zh) * 2018-03-29 2021-10-26 京东方科技集团股份有限公司 一种商品推荐方法、装置及电子设备
US11271878B2 (en) * 2018-06-15 2022-03-08 Slack Technologies, Llc Method, apparatus, and computer program product for initiating and executing a group based communication browser session and rendering a group based communication interface
US11605106B2 (en) * 2018-10-10 2023-03-14 The Toronto-Dominion Bank Automated solution for loyalty rewards points
CN110496395B (zh) * 2019-08-22 2023-02-21 创新先进技术有限公司 一种针对虚幻引擎的组件运行方法、系统及设备
CN113032702B (zh) * 2019-12-06 2024-12-10 北京沃东天骏信息技术有限公司 一种页面加载方法和装置
CN111274519A (zh) * 2020-01-20 2020-06-12 杭州熊猫智云企业服务有限公司 一种页面加载提速方法
CN111359220B (zh) * 2020-03-04 2023-06-13 深圳市腾讯网域计算机网络有限公司 游戏广告生成方法、装置和计算机设备
CN111581489B (zh) * 2020-05-22 2023-03-24 哈尔滨工程大学 一种基于共享计数树的存储空间优化采样方法
CN112950738B (zh) * 2021-03-30 2022-11-11 杭州群核信息技术有限公司 渲染引擎的处理方法及装置、存储介质和电子设备
CN113836455B (zh) * 2021-09-18 2024-08-02 北京百度网讯科技有限公司 特效渲染方法、装置、设备、存储介质及计算机程序产品
CN113934954B (zh) * 2021-10-11 2025-08-26 上海哔哩哔哩科技有限公司 应用程序中的网页首屏渲染方法及装置
US12038829B1 (en) * 2021-12-10 2024-07-16 Zembula, Inc. Testing for dynamically generated content
JP7120694B1 (ja) * 2022-02-03 2022-08-17 アイデアマンズ株式会社 ページ表示速度改善処理システム
CN116977537A (zh) * 2022-04-22 2023-10-31 北京字跳网络技术有限公司 一种合批渲染方法、装置、设备及存储介质
CN116186439A (zh) * 2023-02-07 2023-05-30 中山佳维电子有限公司 浏览器页面渲染方法、装置、电子设备及可读存储介质
USD1078731S1 (en) 2023-03-10 2025-06-10 Active Healthcare Solutions Ltd Task management device
USD1078730S1 (en) 2023-03-10 2025-06-10 Active Healthcare Solutions Ltd Task management device

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1091638A (ja) * 1996-09-17 1998-04-10 Toshiba Corp 検索システム
JP2006107446A (ja) * 2004-09-30 2006-04-20 Microsoft Corp ネットワーク・ドキュメントのバッチ索引付けのためのシステムおよび方法
WO2006046323A1 (ja) * 2004-10-28 2006-05-04 Fujitsu Limited インターネット情報収集装置、プログラム及び方法
US8346755B1 (en) * 2010-05-04 2013-01-01 Google Inc. Iterative off-line rendering process
JP2013225220A (ja) * 2012-04-20 2013-10-31 Nippon Telegr & Teleph Corp <Ntt> Web閲覧画面サムネイル生成システム

Family Cites Families (133)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5828879A (en) * 1994-12-22 1998-10-27 Fore Systems, Inc. Method and a scheduler for controlling when a server provides service to an entity
US5761683A (en) * 1996-02-13 1998-06-02 Microtouch Systems, Inc. Techniques for changing the behavior of a link in a hypertext document
US7103794B2 (en) 1998-06-08 2006-09-05 Cacheflow, Inc. Network object cache engine
US6393526B1 (en) 1997-10-28 2002-05-21 Cache Plan, Inc. Shared cache parsing and pre-fetch
JP2987355B2 (ja) 1998-01-21 1999-12-06 三菱電機株式会社 ハイパーテキスト表示システム及びハイパーテキスト表示方法
US6173316B1 (en) 1998-04-08 2001-01-09 Geoworks Corporation Wireless communication device with markup language based man-machine interface
US6271840B1 (en) 1998-09-24 2001-08-07 James Lee Finseth Graphical search engine visual index
US6631369B1 (en) 1999-06-30 2003-10-07 Microsoft Corporation Method and system for incremental web crawling
US6665838B1 (en) 1999-07-30 2003-12-16 International Business Machines Corporation Web page thumbnails and user configured complementary information provided from a server
US6321265B1 (en) 1999-11-02 2001-11-20 Altavista Company System and method for enforcing politeness while scheduling downloads in a web crawler
US7200677B1 (en) 2000-04-27 2007-04-03 Microsoft Corporation Web address converter for dynamic web pages
US6643641B1 (en) 2000-04-27 2003-11-04 Russell Snyder Web search engine with graphic snapshots
US6714905B1 (en) 2000-05-02 2004-03-30 Iphrase.Com, Inc. Parsing ambiguous grammar
US8640017B1 (en) 2000-05-02 2014-01-28 International Business Machines Corporation Bootstrapping in information access systems
US6704728B1 (en) 2000-05-02 2004-03-09 Iphase.Com, Inc. Accessing information from a collection of data
US6978298B1 (en) * 2000-05-25 2005-12-20 International Business Machines Corporation Method and apparatus for managing session information in a data processing system
JP3703080B2 (ja) 2000-07-27 2005-10-05 インターナショナル・ビジネス・マシーンズ・コーポレーション ウェブコンテンツを簡略化するための方法、システムおよび媒体
US7231606B2 (en) 2000-10-31 2007-06-12 Software Research, Inc. Method and system for testing websites
US6865192B1 (en) 2000-12-22 2005-03-08 Sprint Communications Company L.P. Integrated services hub self configuration
US7155436B2 (en) * 2001-01-12 2006-12-26 Vendaria, Inc Method and system for generating and providing rich media presentations optimized for a device over a network
JP2002297619A (ja) 2001-03-29 2002-10-11 Brother Ind Ltd 広告情報提供システム、広告情報閲覧装置、広告情報閲覧方法及び広告情報閲覧プログラム
AU2002321795A1 (en) 2001-07-27 2003-02-17 Quigo Technologies Inc. System and method for automated tracking and analysis of document usage
US6763362B2 (en) 2001-11-30 2004-07-13 Micron Technology, Inc. Method and system for updating a search engine
US7200680B2 (en) 2002-03-11 2007-04-03 Ericsson Inc. Method, apparatus and system for providing multimedia messages to incompatible terminals
US7136875B2 (en) 2002-09-24 2006-11-14 Google, Inc. Serving advertisements based on content
US7231442B2 (en) 2002-04-03 2007-06-12 Tonic Software, Inc. Global network monitoring system
US7441010B2 (en) 2002-06-06 2008-10-21 International Business Machines Corporation Method and system for determining the availability of in-line resources within requested web pages
US7054917B1 (en) 2002-08-07 2006-05-30 Propel Software Corporation Method for accelerating delivery of content in a computer network
US7188359B2 (en) 2002-12-18 2007-03-06 America Online, Inc. Optimizing authentication service availability and responsiveness via client-side routing
US20050132197A1 (en) 2003-05-15 2005-06-16 Art Medlar Method and apparatus for a character-based comparison of documents
GB0315154D0 (en) 2003-06-28 2003-08-06 Ibm Improvements to hypertext integrity
US7725452B1 (en) 2003-07-03 2010-05-25 Google Inc. Scheduler for search engine crawler
US7895523B2 (en) 2003-09-04 2011-02-22 International Business Machines Corporation Method, system and program product for obscuring supplemental web content
EP1680752A2 (en) * 2003-10-31 2006-07-19 Access Co., Ltd. Method, program and device for rendering web page
US7457823B2 (en) 2004-05-02 2008-11-25 Markmonitor Inc. Methods and systems for analyzing data related to possible online fraud
US8353028B2 (en) 2004-06-21 2013-01-08 Ebay Inc. Render engine, and method of using the same, to verify data for access and/or publication via a computer system
US7613703B2 (en) 2004-09-30 2009-11-03 Microsoft Corporation Organizing resources into collections to facilitate more efficient and reliable resource access
ATE535869T1 (de) 2004-10-22 2011-12-15 Access Co Ltd Parametereinstell- und speicherverfahren
US8156429B2 (en) 2004-10-22 2012-04-10 Flash Networks. Ltd Method and system for accelerating downloading of web pages
US8812551B2 (en) * 2004-11-18 2014-08-19 International Business Machines Corporation Client-side manipulation of tables
US20060129463A1 (en) 2004-12-15 2006-06-15 Zicherman Amir S Method and system for automatic product searching, and use thereof
US7536389B1 (en) 2005-02-22 2009-05-19 Yahoo ! Inc. Techniques for crawling dynamic web content
US7769819B2 (en) * 2005-04-20 2010-08-03 Videoegg, Inc. Video editing with timeline representations
US20060282776A1 (en) * 2005-06-10 2006-12-14 Farmer Larry C Multimedia and performance analysis tool
US20070005652A1 (en) 2005-07-02 2007-01-04 Electronics And Telecommunications Research Institute Apparatus and method for gathering of objectional web sites
US8527504B1 (en) 2005-09-01 2013-09-03 At&T Intellectual Property Ii, L.P. Data network content filtering using categorized filtering parameters
US7814410B2 (en) 2005-09-12 2010-10-12 Workman Nydegger Initial server-side content rendering for client-script web pages
US7548915B2 (en) * 2005-09-14 2009-06-16 Jorey Ramer Contextual mobile content placement on a mobile communication facility
US8271611B2 (en) 2005-09-28 2012-09-18 Telefonaktiebolaget L M Ericsson (Publ) Method and system of invoking MIDlets from a web browser on a local device
CN101346634B (zh) 2005-11-04 2012-10-24 甲骨文国际公司 用于通信网络中的网守的系统和方法
US8170395B2 (en) * 2006-05-07 2012-05-01 Wellcomemat Llc Methods and systems for handling montage video data
CN101075236A (zh) * 2006-06-12 2007-11-21 腾讯科技(深圳)有限公司 一种加快浏览器网页显示的装置和方法
US20080010642A1 (en) * 2006-06-30 2008-01-10 Maclellan Scot Method, system and computer program for scheduling execution of work units with monitoring of progress thereof
US8015162B2 (en) 2006-08-04 2011-09-06 Google Inc. Detecting duplicate and near-duplicate files
CN101201827B (zh) 2006-12-14 2013-02-20 阿里巴巴集团控股有限公司 一种网页显示的方法和系统
US7886042B2 (en) 2006-12-19 2011-02-08 Yahoo! Inc. Dynamically constrained, forward scheduling over uncertain workloads
US7694054B2 (en) 2007-04-26 2010-04-06 Microsoft Corporation Governing access to a computing resource
US9430577B2 (en) 2007-05-31 2016-08-30 Microsoft Technology Licensing, Llc Search ranger system and double-funnel model for search spam analyses and browser protection
US9542394B2 (en) * 2007-06-14 2017-01-10 Excalibur Ip, Llc Method and system for media-based event generation
US8578261B1 (en) 2007-06-22 2013-11-05 Adobe Systems Incorporated Active preview of hyperlink content in browser supported file-format
US9906549B2 (en) 2007-09-06 2018-02-27 Microsoft Technology Licensing, Llc Proxy engine for custom handling of web content
US8751626B2 (en) * 2007-10-23 2014-06-10 Microsoft Corporation Model-based composite application platform
US8463779B2 (en) * 2007-10-30 2013-06-11 Yahoo! Inc. Representative keyword selection
US9465892B2 (en) * 2007-12-03 2016-10-11 Yahoo! Inc. Associating metadata with media objects using time
US20090164502A1 (en) 2007-12-24 2009-06-25 Anirban Dasgupta Systems and methods of universal resource locator normalization
NZ566291A (en) 2008-02-27 2008-12-24 Actionthis Ltd Methods and devices for post processing rendered web pages and handling requests of post processed web pages
US8131753B2 (en) 2008-05-18 2012-03-06 Rybak Ilya Apparatus and method for accessing and indexing dynamic web pages
US8307431B2 (en) 2008-05-30 2012-11-06 At&T Intellectual Property I, L.P. Method and apparatus for identifying phishing websites in network traffic using generated regular expressions
US8924650B2 (en) 2008-09-09 2014-12-30 International Business Machines Corporation Synchronizing network feeds in high-frequency network events
US8316124B1 (en) 2008-09-29 2012-11-20 Amazon Technologies, Inc. Managing network data display
CN101763357B (zh) * 2008-11-13 2016-09-14 北京搜狗科技发展有限公司 一种用于浏览器加载互联网资源的方法及系统
CN101504648A (zh) 2008-11-14 2009-08-12 北京搜狗科技发展有限公司 展现网页资源的方法及装置
US20100131488A1 (en) 2008-11-26 2010-05-27 Yahoo! Inc. Digital Images of Web Pages
WO2010065796A1 (en) 2008-12-03 2010-06-10 Mobophiles, Inc. System and method for providing virtual web access
US8356247B2 (en) 2008-12-16 2013-01-15 Rich Media Worldwide, Llc Content rendering control system and method
US8543580B2 (en) 2008-12-23 2013-09-24 Microsoft Corporation Mining translations of web queries from web click-through data
US8880498B2 (en) 2008-12-31 2014-11-04 Fornova Ltd. System and method for aggregating and ranking data from a plurality of web sites
US8539359B2 (en) 2009-02-11 2013-09-17 Jeffrey A. Rapaport Social network driven indexing system for instantly clustering people with concurrent focus on same topic into on-topic chat rooms and/or for generating on-topic search results tailored to user preferences regarding topic
US9311425B2 (en) 2009-03-31 2016-04-12 Qualcomm Incorporated Rendering a page using a previously stored DOM associated with a different page
CN101587495A (zh) * 2009-07-08 2009-11-25 伍帝州 通过浏览器下载部署应用并提供应用入口的方法及系统
US20110055683A1 (en) 2009-09-02 2011-03-03 Facebook Inc. Page caching for rendering dynamic web pages
US8868637B2 (en) 2009-09-02 2014-10-21 Facebook, Inc. Page rendering for dynamic web pages
JP2011065488A (ja) 2009-09-17 2011-03-31 Sony Corp 情報処理装置、データ取得方法及びプログラム
US8392748B2 (en) 2009-10-06 2013-03-05 Microsoft Corporation Reliable media streaming
US20110112995A1 (en) 2009-10-28 2011-05-12 Industrial Technology Research Institute Systems and methods for organizing collective social intelligence information using an organic object data model
US8689117B1 (en) 2009-10-30 2014-04-01 Google Inc. Webpages with conditional content
JP2011108102A (ja) 2009-11-19 2011-06-02 Sony Corp ウェブサーバ、ウェブブラウザおよびウェブシステム
US8738686B2 (en) 2009-12-30 2014-05-27 Teradata Us, Inc. Dynamic resource management
US8768926B2 (en) 2010-01-05 2014-07-01 Yahoo! Inc. Techniques for categorizing web pages
US8250478B2 (en) 2010-01-28 2012-08-21 Microsoft Corporation State persistence and background initialization for post-back web applications
US8713571B2 (en) * 2010-02-17 2014-04-29 Microsoft Corporation Asynchronous task execution
KR101122700B1 (ko) 2010-03-08 2012-03-12 (주)이앤비소프트 Url 정보 발신 방법
JP2011221616A (ja) 2010-04-05 2011-11-04 Nec Corp Urlフィルタリングシステム、システム制御方法およびシステム制御用プログラム
US8446411B2 (en) * 2010-06-11 2013-05-21 Microsoft Corporation Adaptive image rendering and use of imposter
US8676978B2 (en) 2010-08-03 2014-03-18 Facebook, Inc. Efficient storage and retrieval of resources for rendering structured documents
EP2416546A1 (en) * 2010-08-03 2012-02-08 Research In Motion Limited Method for providing indication of communicatively coupled device
JP5279793B2 (ja) 2010-10-25 2013-09-04 京セラ株式会社 携帯端末、携帯端末の制御方法及びプログラム
JP5512495B2 (ja) 2010-11-18 2014-06-04 株式会社Nttドコモ データダウンロード装置、データダウンロード方法
US8849991B2 (en) * 2010-12-15 2014-09-30 Blue Coat Systems, Inc. System and method for hypertext transfer protocol layered reconstruction
WO2012101585A1 (en) 2011-01-28 2012-08-02 Strangeloop Networks, Inc. Prioritized image rendering based on position within a web page
WO2012106655A2 (en) 2011-02-05 2012-08-09 Visa International Service Association Merchant-consumer bridging platform apparatuses, methods and systems
US8707162B1 (en) 2011-03-22 2014-04-22 Google Inc. Methods and systems for reducing web page transmission bandwidth
US8799262B2 (en) * 2011-04-11 2014-08-05 Vistaprint Schweiz Gmbh Configurable web crawler
RU2453916C1 (ru) 2011-05-05 2012-06-20 Игорь Викторович Лебедев Способ поиска информационных ресурсов с использованием переадресаций
US8655865B1 (en) 2011-05-27 2014-02-18 Adobe Systems Incorporated Method and apparatus for indexing rich internet content using contextual information
US8538949B2 (en) 2011-06-17 2013-09-17 Microsoft Corporation Interactive web crawler
US20130007586A1 (en) 2011-06-29 2013-01-03 Renjit Tom Thomas Method and system for creating and using web feed display templates
WO2013038320A1 (en) 2011-09-16 2013-03-21 Strangeloop Networks, Inc. Mobile resource accelerator
US20130117252A1 (en) * 2011-11-09 2013-05-09 Google Inc. Large-scale real-time fetch service
AU2013207407A1 (en) 2012-01-05 2013-10-24 Visa International Service Association Transaction visual capturing apparatuses, methods and systems
US8793235B2 (en) 2012-01-19 2014-07-29 Google Inc. System and method for improving access to search results
CN102663002B (zh) 2012-03-16 2014-05-07 掌中帷幄(北京)科技有限公司 结构化文档的渲染方法及系统
US20150172228A1 (en) 2012-04-17 2015-06-18 George Zalepa Method and system for communicating information over a network
US8910132B2 (en) 2012-07-13 2014-12-09 Facebook, Inc. Client-side script bundle management system
US20140053056A1 (en) 2012-08-16 2014-02-20 Qualcomm Incorporated Pre-processing of scripts in web browsers
CN102855318B (zh) 2012-08-31 2015-05-27 北京搜狗信息服务有限公司 网页预加载方法与系统
US8965880B2 (en) 2012-10-05 2015-02-24 Google Inc. Transcoding and serving resources
CN102902805B (zh) * 2012-10-15 2017-06-27 东软集团股份有限公司 一种页面访问方法和装置
CN102917067B (zh) 2012-10-24 2015-06-10 网宿科技股份有限公司 基于客户端自适应并发控制提高响应速度的方法和装置
EP2728481A1 (en) * 2012-11-04 2014-05-07 Rightware Oy Evaluation of page load performance of web browser
CN103034503B (zh) 2012-12-25 2016-07-06 北京奇虎科技有限公司 一种脚本执行方法、系统及浏览器
US20140189534A1 (en) 2012-12-31 2014-07-03 Google Inc. Customizing shared web resource snapshots
US9286408B2 (en) 2013-01-30 2016-03-15 Hewlett-Packard Development Company, L.P. Analyzing uniform resource locators
US10375192B1 (en) * 2013-03-15 2019-08-06 Viasat, Inc. Faster web browsing using HTTP over an aggregated TCP transport
US9256795B1 (en) 2013-03-15 2016-02-09 A9.Com, Inc. Text entity recognition
US8601565B1 (en) 2013-06-19 2013-12-03 Edgecast Networks, Inc. White-list firewall based on the document object model
US9678928B1 (en) * 2013-10-01 2017-06-13 Michael Tung Webpage partial rendering engine
EP3063674B1 (en) 2013-11-01 2019-06-19 Kapow Technologies A/S Determining web page processing state
US8924850B1 (en) * 2013-11-21 2014-12-30 Google Inc. Speeding up document loading
US9646254B2 (en) 2014-06-20 2017-05-09 Amazon Technologies, Inc. Predicting next web pages
JP6356273B2 (ja) * 2014-06-26 2018-07-11 グーグル エルエルシー バッチ最適化レンダリング及びフェッチアーキテクチャ
KR102133486B1 (ko) 2014-06-26 2020-07-13 구글 엘엘씨 최적화된 브라우저 렌더링 프로세스
RU2665920C2 (ru) 2014-06-26 2018-09-04 Гугл Инк. Оптимизированный процесс визуализации в браузере

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1091638A (ja) * 1996-09-17 1998-04-10 Toshiba Corp 検索システム
JP2006107446A (ja) * 2004-09-30 2006-04-20 Microsoft Corp ネットワーク・ドキュメントのバッチ索引付けのためのシステムおよび方法
WO2006046323A1 (ja) * 2004-10-28 2006-05-04 Fujitsu Limited インターネット情報収集装置、プログラム及び方法
US8346755B1 (en) * 2010-05-04 2013-01-01 Google Inc. Iterative off-line rendering process
JP2013225220A (ja) * 2012-04-20 2013-10-31 Nippon Telegr & Teleph Corp <Ntt> Web閲覧画面サムネイル生成システム

Also Published As

Publication number Publication date
WO2015196414A1 (en) 2015-12-30
US11328114B2 (en) 2022-05-10
US20150379014A1 (en) 2015-12-31
US20180276220A1 (en) 2018-09-27
RU2659481C1 (ru) 2018-07-02
EP3161668A1 (en) 2017-05-03
JP6356273B2 (ja) 2018-07-11
CN106462582B (zh) 2020-05-15
EP3161668B1 (en) 2020-08-05
EP3161668A4 (en) 2018-03-28
US9984130B2 (en) 2018-05-29
CN106462582A (zh) 2017-02-22

Similar Documents

Publication Publication Date Title
JP6356273B2 (ja) バッチ最適化レンダリング及びフェッチアーキテクチャ
KR101768181B1 (ko) 최적화된 브라우저 렌더링 프로세스
US10713330B2 (en) Optimized browser render process
JP6568985B2 (ja) バッチ最適化レンダリング及びフェッチアーキテクチャ
US10044804B2 (en) Enabling users to specify an electronic resource for viewing based on prior accessed electronic resources
US10599740B1 (en) Program code streaming
Kivilohkare Optimizing the Critical Rendering Path for Decreased Website Loading Time
JP6397101B2 (ja) 最適化されたブラウザレンダリング処理
JP2013025421A (ja) 情報検索システム及び情報検索方法
Padilla et al. Pro PHP application performance: tuning PHP Web projects for maximum performance
Hou et al. A static shell based web page implementation method and application in Haier 3D printing platform

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170531

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180327

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: 20180514

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180613

R150 Certificate of patent or registration of utility model

Ref document number: 6356273

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250