JP2017532621A - 動的コンテンツと古いコンテンツとを含んでいるウェブサイトの高速レンダリング - Google Patents

動的コンテンツと古いコンテンツとを含んでいるウェブサイトの高速レンダリング Download PDF

Info

Publication number
JP2017532621A
JP2017532621A JP2017503866A JP2017503866A JP2017532621A JP 2017532621 A JP2017532621 A JP 2017532621A JP 2017503866 A JP2017503866 A JP 2017503866A JP 2017503866 A JP2017503866 A JP 2017503866A JP 2017532621 A JP2017532621 A JP 2017532621A
Authority
JP
Japan
Prior art keywords
serialized
dom
final
final dom
dynamic content
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
JP2017503866A
Other languages
English (en)
Other versions
JP2017532621A5 (ja
JP6416374B2 (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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2017532621A publication Critical patent/JP2017532621A/ja
Publication of JP2017532621A5 publication Critical patent/JP2017532621A5/ja
Application granted granted Critical
Publication of JP6416374B2 publication Critical patent/JP6416374B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR 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
    • G06F16/9577Optimising the visualization of content, e.g. distillation of HTML documents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • G06F40/117Tagging; Marking up; Designating a block; Setting of attributes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • G06F40/154Tree transformation for tree-structured or markup documents, e.g. XSLT, XSL-FO or stylesheets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/194Calculation of difference between files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • G06F40/221Parsing markup language streams

Landscapes

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

Abstract

ウェブページをレンダリングする例示的な方法は、ロケーションによって参照される第1のウェブドキュメントを処理することに基づいて第1のシリアル化最終ドキュメントオブジェクトモジュール(DOM)を生成することを含む。第1のシリアル化最終DOMは第1のインライン化動的コンテンツを含む。本方法はまた、ロケーションによって参照される第2のウェブドキュメントを処理することに基づいて第2のシリアル化最終DOMを生成することを含む。第2のシリアル化最終DOMは第2のインライン化動的コンテンツを含む。本方法は、第1のシリアル化最終DOMと第2のシリアル化最終DOMとの間の差分に基づいて共通シリアル化最終DOMを生成することをさらに含む。共通シリアル化最終DOMは、第1のシリアル化最終DOMと第2のシリアル化最終DOMとの中に含まれる静的な動的コンテンツを含み、差分は真の動的コンテンツである。本方法はまた、共通シリアル化最終DOMをデバイスのディスプレイにレンダリングすることを含む。

Description

[0001]本開示は、一般にコンテンツをレンダリングすることに関し、より詳細には、ウェブページをレンダリングすることに関する。
関連出願の相互参照
[0002]本出願は、その両方が参照により本明細書に組み込まれる、2015年7月24日に出願された米国特許出願第14/809,046号の出願日の優先権を主張する、2014年7月25日に出願された米国仮特許出願第62/029,398号からの優先権の利益を主張する。
[0003]高速ウェブページ表示のための旧来の技法は、最初のペイントのために最小のJavaScript(登録商標)およびCSS処理が行われるようにアプリケーション開発者がウェブページを設計することに依拠する。しかしながら、この手法は、JavaScriptによって生成された大量の動的コンテンツを含んでいるウェブサイトに不適である。たとえば、いくつかのウェブサイトは、JavaScriptによって生成されたそれらのユーザインターフェース(UI)要素のすべてを有し得る。さらに、ウェブページ開発者のツールおよび/またはライブラリの選択肢が制限されるので、ウェブページ開発者がウェブページ表示をより速くすることに依拠することは十分でないことがある。たとえば、ウェブページ開発者は、しばしば、一般にJavaScriptで実装されるサードパーティライブラリに依拠する。
[0004]ブラウザまたはコンテンツ配信ネットワーク(CDN:content delivery network)側での動作の速度を上げるために使用される従来の技法は、キャッシュされたページを使用することである。しかしながら、この技法は、古い情報がキャッシュされ、後でユーザに提示され得るので、高度に動的なウェブサイトに不適である。「古い」情報が示されるのを防ぐために、JavaScriptによって生成されたコンテンツがまったく表示されない場合、大量の動的コンテンツを含んでいるそれらのウェブサイトは、示すべき最小の物を有することになる。ウェブページを迅速にレンダリングすると同時に、これらの欠点を回避することが望ましいことがある。
[0005]本開示は、コンテンツをレンダリングすることに関する。
[0006]いくつかの実施形態によれば、ウェブページをレンダリングする例示的な方法は、ロケーションによって参照される第1のウェブドキュメントを処理することに基づいて第1のシリアル化最終(serialized eventual)ドキュメントオブジェクトモジュール(DOM:document object module)を生成することを含む。第1のシリアル化最終DOMは第1のインライン化動的コンテンツを含む。本方法はまた、ロケーションによって参照される第2のウェブドキュメントを処理することに基づいて第2のシリアル化最終DOMを生成することを含む。第2のシリアル化最終DOMは第2のインライン化動的コンテンツを含む。本方法は、第1のシリアル化最終DOMと第2のシリアル化最終DOMとの間の差分に基づいて共通シリアル化最終DOMを生成することをさらに含む。共通シリアル化最終DOMは、第1のシリアル化最終DOMと第2のシリアル化最終DOMとの中に含まれる静的な動的コンテンツを含み、差分は真の動的コンテンツである。本方法はまた、共通シリアル化最終DOMをデバイスのディスプレイにレンダリングすることを含む。
[0007]いくつかの実施形態によれば、ウェブページをレンダリングするためのシステムは、ロケーションによって参照される第1のウェブドキュメントを処理することに基づいて第1のシリアル化最終ドキュメントオブジェクトモジュール(DOM)を生成し、ロケーションによって参照される第2のウェブドキュメントを処理することに基づいて第2のシリアル化最終DOMを生成するクライアントブラウザを含む。第1のシリアル化最終DOMは第1のインライン化動的コンテンツを含み、第2のシリアル化最終DOMは第2のインライン化動的コンテンツを含む。クライアントブラウザは、第1のシリアル化最終DOMと第2のシリアル化最終DOMとの間の差分に基づいて共通シリアル化最終DOMを生成する。共通シリアル化最終DOMは、第1のシリアル化最終DOMと第2のシリアル化最終DOMとの中に含まれる静的な動的コンテンツを含み、差分は真の動的コンテンツである。クライアントブラウザは、共通シリアル化最終DOMをデバイスのディスプレイにレンダリングする。
[0008]いくつかの実施形態によれば、動作を実行するためのコンピュータ実行可能命令を記憶したコンピュータ可読媒体は、ロケーションによって参照される第1のウェブドキュメントを処理することに基づいて第1のシリアル化最終ドキュメントオブジェクトモジュール(DOM)を生成することと、第1のシリアル化最終DOMが第1のインライン化動的コンテンツを含む、ロケーションによって参照される第2のウェブドキュメントを処理することに基づいて第2のシリアル化最終DOMを生成することと、第2のシリアル化最終DOMが第2のインライン化動的コンテンツを含む、第1のシリアル化最終DOMと第2のシリアル化最終DOMとの間の差分に基づいて共通シリアル化最終ドキュメントオブジェクトモジュール(DOM)を生成することと、共通シリアル化最終DOMが、第1のシリアル化最終DOMと第2のシリアル化最終DOMとの中に含まれる静的な動的コンテンツを含み、差分が真の動的コンテンツである、共通シリアル化最終DOMをデバイスのディスプレイにレンダリングすることとを含む。
[0009]いくつかの実施形態によれば、ウェブページをレンダリングするためのシステムは、ロケーションによって参照される第1のウェブドキュメントを処理することに基づいて第1のシリアル化最終ドキュメントオブジェクトモジュール(DOM)を生成するための手段と、第1のシリアル化最終DOMが第1のインライン化動的コンテンツを含む、ロケーションによって参照される第2のウェブドキュメントを処理することに基づいて第2のシリアル化最終DOMを生成するための手段と、第2のシリアル化最終DOMが第2のインライン化動的コンテンツを含む、第1のシリアル化最終DOMと第2のシリアル化最終DOMとの間の差分に基づいて共通シリアル化最終DOMを生成するための手段と、共通シリアル化最終DOMが、第1のシリアル化最終DOMと第2のシリアル化最終DOMとの中に含まれる静的な動的コンテンツを含み、差分が真の動的コンテンツである、共通シリアル化最終DOMをデバイスのディスプレイにレンダリングするための手段とを含む。
[0010]本明細書の一部をなす添付の図面は、本開示の実施形態を示し、説明とともに、実施形態の原理について説明するようにさらに働く。図面において、同様の参照番号は、同等であるかまたは機能的に類似する要素を示し得る。要素が最初に現れる図面は、概して、対応する参照番号中の最左桁によって示される。
[0011]いくつかの実施形態による、例示的な通信システムの図。 [0012]いくつかの実施形態による、最終DOMをシリアル化するためのプロセスフローの図。 [0013]いくつかの実施形態による、ウェブドキュメント中の真の動的コンテンツを識別するためのプロセスフローの図。 [0014]いくつかの実施形態による、2つのウェブページ間の差分を与えるための、クライアントとサーバとの間の通信の例示的なスイム図(swim diagram)。 [0015]いくつかの実施形態による、デュアルレンダリングプロセス手法を使用して共通シリアル化最終DOMと本当のウェブページとを表示するための例示的なプロセスフローの図。 [0016]いくつかの実施形態による、ウェブページをレンダリングする方法を示すフローチャート。 [0017]本開示の1つまたは複数の実施形態を実装するのに好適なコンピュータシステムのブロック図。
I.概要
II.例示的なシステムアーキテクチャ
III.ウェブページをレンダリングする
A.元のDOMに基づいて最終DOMを構築する
B.最終DOMをシリアル化する
1.最終DOMの視覚表現に対応するシリアル化最終DOMを構築する
2.最終DOMをファイルにシリアル化する
C.真の動的コンテンツと静的な動的コンテンツとを識別および処理する
D.シリアル化最終DOM管理および配信のための機構
E.要求されたウェブページを表示するための機構
1.デュアルレンダリングプロセス手法
2.埋込みJavaScript手法
IV.例示的な方法
V.例示的なデバイス
I.概要
[0018]以下の開示は、本開示の異なる特徴を実装するための、多くの異なる実施形態または例を与えることを理解されたい。いくつかの実施形態は、これらの具体的な詳細の一部または全部なしに実施され得る。本開示を簡略化するために、構成要素、モジュール、および構成の特定の例について以下で説明する。これらは、もちろん、例にすぎず、限定するものではない。
[0019]本開示は、ウェブ開発者にそれらのウェブサイトを変更するように要求することなしに、できる限り、古くない動的コンテンツの高速レンダリングの相反する要件を達成するためのブラウザ/サーバフレームワークを与える。多くの普及しているウェブサイトは、クライアント側スクリプト記述を使用してクライアント側で生成された動的コンテンツを有する。動的コンテンツをもつウェブページをできる限り迅速にレンダリングしながら、最小の古い情報を示すことが望ましいことがある。静的な動的コンテンツは、たとえば、フレーム、レイアウト、サイドバー、メニュー、ポストテンプレート、友人リストなどを指すことがある。真の動的コンテンツは、ページロードにわたって極めて頻繁に変化するコンテンツ(たとえば、ニュースフィード)を指すことがある。
[0020]ウェブページをより迅速にレンダリングするために、本開示は、最終DOMのシリアライゼーション、(古い情報を示すことを回避するための)動的コンテンツ識別および処理、(コンテンツの管理および配信のための)シリアル化最終DOMを生成するための機構、ならびにシリアル化最終DOMと本当のウェブページとを表示するための機構(また、最終DOMをどのように使用するか)などの技法を提供する。ウェブページが完全にロードされた後のDOMは、ウェブページの「最終DOM」と呼ばれることがある。
[0021]本開示で説明する1つまたは複数の技法を含む実施形態は、最も動的なウェブサイトでもより高速に表示し、古い情報がユーザに表示されることを回避し、および/または高速表示のために、動的に生成されるが変化しない項目を保存し得る。さらに、ソリューションは、サーバの支援を用いてまたは用いずにブラウザにおいて実装され得る。したがって、開発者が元のウェブサイトを変更することは不要であり得る。
II.例示的なシステムアーキテクチャ
[0022]図1は、いくつかの実施形態による、例示的な通信システム100である。システム100は、ネットワーク140を介してサーバ120に通信可能に結合されたクライアントブラウザ110を含む。システム100について、1つのクライアントブラウザと1つのサーバとに関して本明細書で説明するが、システム100が2つ以上のクライアントブラウザおよび/またはサーバを含み得ることを当業者は認識されよう。
[0023]ブラウザは、ユーザが、ワールドワイドウェブ上のウェブサイトまたはウェブアプリケーション上など、ネットワーク上で利用可能であるコンテンツを閲覧またはダウンロードすることを可能にするソフトウェアアプリケーションである。コンテンツは、テキスト、ファイル、画像、オーディオ、ビデオ、およびパーソナル通信を含み得る。ウェブページは、そのようなコンテンツを提示し、ユニフォームリソースロケータ(URL)などのユニフォームリソース識別子(URI)を使用して位置を特定される。ウェブページは、ウェブページコンテンツを保持するコンピュータのインターネットプロトコル(IP)アドレスを使用して取り出され得る。ブラウザは、コンテンツフローを取得または管理するためにいくつかのプロトコルおよび規格を使用し得る。たとえば、ブラウザは、コンテンツおよびウェブページをフェッチするためにハイパーテキスト転送プロトコル(HTTP)を使用し得る。HTTPは、基本的な要求/応答セマンティクスを与えるアプリケーションレベルプロトコルである。HTTPは、サーバにオブジェクトを要求し、そこから取り出すために使用され得る。
[0024]サーバ120は、たとえば、限定はしないが、ウェブサーバ、電気通信サーバ、データベースサーバなどであり得る。ウェブサーバは、クライアントからのHTTP要求に応答してコンテンツを生成するウェブアプリケーションを含んでいることがある。ウェブサーバは、生成されたコンテンツをパッケージングし、HTTP応答の形態でコンテンツをクライアントにサービスする。ウェブサーバは、HTTP返答でHTTP要求に応答するソフトウェア構成要素であり得る。例示的な例として、ウェブサーバは、限定はしないが、Apache HTTP Server、Apache Tomcat、Microsoft Internet Information Server、JBoss Application Server、WebLogic Application Server、またはSun Java System Web Serverであり得る。商標は、それらのそれぞれの所有者の所有物である。ウェブサーバは、ハイパーテキストマークアップ言語(HTML)、拡張可能なマークアップ言語(XML)、ドキュメント、ビデオ、画像、マルチメディア機能、またはそれらの任意の組合せなどのコンテンツをサービスし得る。これらの例はもっぱら例示的なものであり、本開示の範囲を制限しない。
[0025]クライアントブラウザ110はコンピューティングデバイス上で動作することができる。同様に、サーバ120は、クライアントにデータをサービスすることが可能なコンピューティングデバイスを使用して実装され得る。コンピューティングデバイスの例としては、限定はしないが、中央処理ユニット、特定用途向け集積回路、コンピュータ、ワークステーション、分散コンピューティングシステム、コンピュータクラスタ、組込みシステム、スタンドアロン電子デバイス、ネットワーク化されたデバイス、モバイルデバイス(たとえばモバイルフォン、スマートフォン、携帯情報端末(PDA)、ナビゲーションデバイス、タブレットまたはモバイルコンピューティングデバイス)、ラックサーバ、セットトップボックス、または少なくとも1つのプロセッサおよびメモリを有する他のタイプのコンピュータシステムがある。クラスタリングされたコンピューティング環境またはサーバファームによって実行されるコンピューティングプロセスは、同じまたは異なるロケーションに位置する複数のプロセッサにわたって行われ得る。そのようなコンピューティングデバイスは、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せを含み得る。ソフトウェアは、1つまたは複数のアプリケーションとオペレーティングシステムとを含み得る。ハードウェアは、限定はしないが、プロセッサ、メモリ、およびユーザインターフェースディスプレイを含むことができる。
[0026]ネットワーク140は、データ通信を搬送することができるネットワークまたはネットワークの組合せであり得、本明細書ではコンピュータネットワークと呼ばれることがある。そのようなネットワーク140は、限定はしないが、ワイヤード(たとえば、イーサネット(登録商標))またワイヤレス(たとえば、Wi−Fi(登録商標)および3G)ネットワーク、ローカルエリアネットワーク、中間エリアネットワーク、および/またはインターネットなどのワイドエリアネットワークを含むことができる。ネットワーク140は、限定はしないが、ワールドワイドウェブプロトコルおよび/またはサービスを含む、プロトコルおよび技術をサポートすることができる。中間ウェブサーバ、ゲートウェイ、または他のサーバが、特定の適用例または環境に応じてシステム100の構成要素間に与えられ得る。
[0027]クライアントブラウザ110は、サーバへの一連の要求とサーバからの一連の応答とを通してウェブページを取り出し得る。一例では、クライアントブラウザ110は、ネットワーク140上でウェブページについての要求をサーバ120に送る。サーバ120は要求を受信し、要求を処理し、要求されたウェブページのためのコンテンツなどの応答を返す。一例では、サーバ120は、クライアントブラウザ110の要求に応答してクライアントブラウザ110にHTMLページ132を返す。HTMLページ132は、マークアップ言語(HTML)でのものであるウェブドキュメントであり、1つまたは複数の要素(たとえば、タグ)のセットと1つまたは複数のルールのセットとを含む。ルールは、たとえば、1つまたは複数の要素、あるいはカスケーディングスタイルシート(CSS:Cascading Style Sheet)要素に適用されるJavaScriptであり得る。CSSは、ウェブドキュメントをフォーマットおよびレンダリングするために使用されるプレゼンテーションルールと、プロパティと、補助構成体とを定義するための宣言シンタックスである。CSSを使用することによって、ドキュメント(たとえば、HTMLページ132)中の要素(たとえば、HTML要素)の外観およびフォーマッティングは、要素を追加または削除することなしに迅速に変更され得る。したがって、HTMLページ132のサイズは小さくなり得、ドキュメントを操作するスクリプトは高速であり得る。
[0028]クライアントブラウザ110は、HTMLページ132をレンダリングするために外部リソースをダウンロードし得る。たとえば、HTMLページ132は、CSS、JavaScriptファイル、画像、および他のリソースなどの他の構成要素のアドレスを含んでいることがある。クライアントブラウザ110は、次に、サーバにこれらのうちの各々を要求し、それらをウェブページの最終レンダリングに組み合わせる。HTMLページ132をレンダリングすることが可能になる前に、クライアントブラウザ110が複数のアクションを実行し得るので、クライアントブラウザ110がHTMLページ132をレンダリングすることは時間がかかり得る。たとえば、HTMLページ132はJavaScriptを含み得、その場合、クライアントブラウザ110は、クライアントにおいて動的コンテンツを生成するためにJavaScriptをダウンロードおよび実行し得、それは時間がかかる。生成された動的コンテンツは、次いで、ウェブページの一部になる。
[0029]HTMLページ132中の一部のコンテンツは「真の」動的コンテンツであり得、それは、各ページロード(たとえば、ニュースフィード)ごとに変化する可能性がある。真の動的コンテンツは、同じURLによって参照されるページのローディングにわたって異なり得、一般に、各ページロードの後に古くなり得る。たとえば、1日目に、ユーザは、ソーシャルメディアウェブサイトを精読し、ユーザの友人によって投稿されたニュースフィードを表示するウェブページを要求し得る。レイアウトとサイドバーとテンプレートとの表示は、ページロードにわたって同じであり得るが、ユーザに表示される投稿されたニュースフィードは、ユーザがウェブページをリフレッシュまたは要求するたびに変化し得る。
[0030]HTMLページ132中の一部のコンテンツは「静的」な動的コンテンツであり得、それは、静的コンテンツがページロード間で変化しないという点で「静的」であるが、コンテンツがクライアント側スクリプト(たとえば、JavaScriptで書かれたスクリプト)によって生成されるという点で「動的」である。静的な動的コンテンツの例は、ユーザログイン後のウェブサイトのレイアウト、クロム、バナー、フォーム制御(テキストボックスおよびボタン)、メニュー、バックグラウンドなどである。そのようなウェブサイトのユーザインターフェース全体は、たとえば、JavaScriptを使用して生成され得、このコンテンツは、重要な設計変更が行われない限り同じままであり、重要な設計変更は頻繁に起こらない。
[0031]単一のウェブページが真の動的コンテンツと静的な動的コンテンツの両方を有することは一般的である。真の動的コンテンツと静的な動的コンテンツの両方が「動的コンテンツ」であるが、それらが両方ともオンザフライで生成されるという点で、静的な動的コンテンツは、ページロードにわたって同じである、より高い確率を有する。ウェブページをより高速にレンダリングするために、ウェブページ中の真の動的コンテンツと静的な動的コンテンツとを識別し、それらを互いと区別することが望ましいことがある。
[0032]ウェブページをより高速にレンダリングするために、クライアントブラウザ110はウェブページをキャッシュし得る。クライアントブラウザ110が、サーバ120からのキャッシュされたウェブページに対応するHTMLページ132を受信した場合、クライアントブラウザ110は、HTMLページ132に対応するキャッシュされたウェブページを表示し得る。しかしながら、古い情報が、ユーザに提示され得る(たとえば、昨日のニュースなど、間違った「真の」動的コンテンツがキャッシュから表示され得る)。本開示は、最小の古い情報を示しながら、古くない動的コンテンツの高速レンダリングの相反する要件を達成するためにブラウザ/サーバフレームワークを使用する技法を提供する。
III.ウェブページをレンダリングする
[0033]ウェブページを完全にロードし、表示するために、クライアントブラウザ110は、HTMLページ132をダウンロードし、HTMLページ132をパースし、HTMLページ132の構造のドキュメントオブジェクトモジュール(DOM)を構築し、DOMをレンダリングする。大量の動的コンテンツを有するウェブページでは、最も多くの時間がかかるアクションは、動的コンテンツ(たとえば、外部ソースからのJavaScriptスクリプト)をダウンロードすること、動的コンテンツを実行すること(たとえば、JavaScriptを実行すること)、およびスタイル計算であり得る。これらのアクションが実行された後、クライアントブラウザ110はDOMをレンダリングし得る。DOMをレンダリングすることは、実際のウェブページコンテンツをスクリーン上にペイントする。
[0034]図2は、いくつかの実施形態による、最終DOMをシリアル化するためのプロセスフロー200である。図2は、レンダリングのためにサーバ120によってクライアントブラウザ110に送られる「生の」HTMLページ132の一例を与える。クライアントブラウザ110はHTMLページ132を処理し、プロパティとメソッドとを有するノードおよびオブジェクトの構造化されたグループとして、HTMLページ132の表現である元のDOM202を構築する。元のDOM202は、HTMLページ132内のマークアップ要素の階層のためのツリー構造として視覚化される。
[0035]HTMLページ132中のオブジェクトプロパティは、HTML要素の属性への直接マッピングである。直接マッピングは、HTMLシンタックスとDOMとの間に存在する。元のDOM202では、「html」ノード204はHTMLページ132中の<html>要素に対応し、「body」ノード206はHTMLページ132中の<body>要素に対応し、「テキスト1」ノード208はHTMLページ132中の「テキスト1」に対応し、「Js1.js」ノード210はHTMLページ132中の<js1.js>要素に対応し、「Css1.css」ノード212はHTMLページ132中の<link css1.css>要素に対応する。HTMLページ132はまた、2つの終了タグ、</body>と</html>とを含む。DOMはスタイルへのプログラマチックアクセスを与える。DOM中のCSSオブジェクトは「ライブ」であり、すなわち、スタイルシートの変更は、計算されたおよび実際のスタイル中に反映される。したがって、個々の要素に対するインラインスタイルおよびスタイルルールは、単純なスクリプトベースプログラミングを使用して変更され得る。スクリプトは、たとえば、JavaScript、Microsoft JScript、またはMicrosoft Visual Basic Scripting Edition(VBScript)で書かれ得る。
A.元のDOMに基づいて最終DOMを構築する
[0036]クライアントブラウザ110は、HTMLページ132中で発見されるサブリソースをダウンロードする。例示的なサブリソースは、HTMLページ132中に含まれる1つまたは複数の要素に適用され得るルールである。例示的なルールはCSS要素とJavaScriptスクリプトとを含む。クライアントブラウザ110は、HTMLページ132がロードする間に、またはHTMLページ132がロードした直後にサブリソースをコンパイルおよび実行し得る。サブリソースのコンパイルおよび実行は、同期動作であり得る。サブリソースのコンパイルおよび実行中に、クライアントブラウザ110は、たとえば、CSS要素を処理し、画像を処理し、および/またはJavaScriptスクリプトを実行し得る。
[0037]サブリソースを実行した結果として、クライアントブラウザ110は、動的コンテンツを生成するか、HTMLタグから追加のDOMノードを構築するか、またはDOMからDOMノードを削除し得る。動的コンテンツをもつウェブページが完全にロードされた後、その段階におけるDOMは最終DOMと呼ばれることがあり、最終DOMは、元のHTMLページ132において定義された静的コンテンツだけでなく、サブルールによって生成された、新たに追加されたおよび/または変更された動的コンテンツ(たとえば、JavaScriptスクリプト、CSSにおいて指定されたスタイルなど)をも含んでいる。この段階で、最終DOM要素のスタイルは、すでに解決されている。
[0038]図2では、クライアントブラウザ110はHTMLページ132を処理し、ウェブページの動的コンテンツを組み込む最終DOM220を生成する。JavaScriptを実行することは、サーバ120から送られた元のHTMLページ132中にない追加のDOMノードを追加し得る。最終DOM220を生成するために、クライアントブラウザ110は、(HTMLページ132中の「js1.js」要素に関連する)「Js1.js」ノード210によって表されるJavaScriptを実行し、スクリプトを実行したことに応答して「form」ノード222によって表される動的コンテンツを生成する。「Js1.js」ノード210によって表されるJavaScriptスクリプトは、HTMLバイトストリーム中の「<form>」タグを追加すること(たとえば、document.write())によって、または「form」DOMノードを元のDOM202に直接追加することによって)元のDOM202に「form」を動的に追加する。図2に示されているように、最終DOM220は、元のDOM202中に含まれない「form」ノード222を含む。元のDOM202と同様に、最終DOM220は、ノード、「html」ノード204と、「body」ノード206と、「テキスト1」ノード208と、「Js1.js」ノード210と、「Css1.css」ノード212とを含む。これらのノードに加えて、最終DOM220はまた、「form」ノード222を含む。クライアントブラウザ110は、HTMLページ132中の適切なHTMLタグに、「Css1.css」ノード212によって指定されたスタイルを適用し、最終DOM220をユーザにレンダリングする。
B.最終DOMをシリアル化する
[0039]クライアントブラウザ110は、最終DOMの視覚表現に対応するDOMを構築することによって最終DOM220をレンダリングし、クライアントブラウザ110に結合されたデバイスのディスプレイ上にそれをペイントする。クライアントブラウザ110は、シリアル化最終DOM230を構築することと、それをファイルにシリアル化することとによって、最終DOM220をシリアル化し得る。本開示でさらに説明するように、真の動的コンテンツと静的な動的コンテンツとを識別し、ウェブページを迅速にレンダリングするために、シリアル化最終DOMをシリアル化することは有利であり得る。
1.最終DOMの視覚表現に対応するシリアル化最終DOMを構築する
[0040]クライアントブラウザ110は、最終DOM220中の動的コンテンツを識別することと、最終DOM220から、動的コンテンツを含むルールのセットを表すノード(たとえば、「Js1.js」ノード210および「Css1.css」ノード212)を削除することと、動的コンテンツをシリアル化最終DOM230にインライン化することとによってシリアル化最終DOM230を生成し得る。したがって、クライアントブラウザ110は、最終DOM220からJavaScriptスクリプトとCSSスタイルとを削除し、シリアル化最終DOM230中のこの動的コンテンツをインライン化する。いくつかの例では、クライアントブラウザ110は、最終DOM220中の1つまたは複数の非インラインルールをインラインルールに移動することによってシリアル化最終DOM230を生成する。
[0041]シリアル化最終DOM230は、ノード204、206、208’、および222’を含む。最終DOM220中のノード204および206は、シリアル化最終DOM230中のノード204および206と同じであり得る。最終DOM220中の「Css1.css」ノード212によって表される適切なスタイルは、適切なHTMLタグ/DOMノード(たとえば、最終DOM220中の「テキスト1」ノード208および/または「form」ノード222によって表されるテキスト)に適用される。インラインスタイルは、スタイル属性を使用して(1つまたは複数の)HTML要素に適用されたCSSスタイル割当てである。いくつかの例では、クライアントブラウザ110は、HTMLページ132中の「<link css1.css>」要素によって表されるロケーションにおいて記憶された外部CSSファイルのコンテンツをコピーすることによってCSSスタイルをインライン化し、HTMLページ132のヘッドセクション中のスタイルタグ間にコンテンツをペーストし得る。
2.最終DOMをファイルにシリアル化する
[0042]クライアントブラウザ110は、シリアル化最終DOM230を、要素のスタイルのすべてがインライン化されたシリアル化ファイル240(たとえば、HTMLファイル)にシリアル化し得る。最終DOM220のシリアライゼーションであるシリアル化ファイル240は、正しいスタイルをもつ、静的コンテンツと動的コンテンツの両方を含んでいる「フラットにされた」ファイルである。シリアル化ファイル240は、ユーザに最終的に表示される「本当のウェブページ」と同等のコンテンツを示すHTMLファイルであり得る。クライアントブラウザ110は、後の取出しおよびローディングのためにシリアル化ファイル240をキャッシュに記憶する。次回、HTMLページ132に関連するURLによって参照されるウェブページを表示するようにとの要求を受信すると、クライアントブラウザ110はシリアル化ファイル240をロードし得る。シリアル化ファイル240は、HTMLページ132と同じ外観を有するが、ルールを適用し、および/または外部ソースを探索することが不要であるので、はるかに高速に表示され得る。たとえば、クライアントブラウザ110がJavaScriptを実行するかまたはCSS要素を適用することは不要であり得、それらは、一般に、ウェブページを表示する際の時間がかかるステップである。したがって、ウェブページが要求される次回には、より高速なページ表示が達成され得る。
[0043]同じウェブページのシリアル化最終DOMが利用可能である場合、シリアル化ファイルは、本当のウェブページがバックグラウンドにおいてロードしている間、最初に(より高速に)表示され得る。本当のウェブページは、それがバックグラウンドにおけるローディングが終了したとき、表示され得る。しかしながら、シリアル化ファイル240は、古い情報を示し得る。たとえば、ウェブサイトがニュースフィードを含む場合、ユーザは古くなったニュースフィードを示され得る。古い情報の表示を回避するために、クライアントブラウザ110は、シリアル化ファイル240中の動的コンテンツを識別し、動的コンテンツの一部を削除するか、あるいはそれを一般的なおよび/またはダミーのプレースホルダーと交換し得る。
[0044]動的コンテンツを識別するために、クライアントブラウザ110は、HTMLドキュメント中のルール(たとえば、JavaScriptおよびCSS要素)のいずれかを適用する前に最終DOMと元のメイン(main)HTMLの対応する元のDOMとの間の差分を識別し得る。クライアントブラウザ110は、最終DOM220と元のDOM202との間の差分を決定し、最終DOMから差分を削除し、最終DOMを表示し得、ただし、差分は動的コンテンツである。しかしながら、この手法は、すべての動的コンテンツ(真の動的コンテンツと静的な動的コンテンツの両方)を削除し得る。正味効果は、ブラウザ中のJavaScriptを無効にし、次いで元のHTMLをロードすることと同様であり得る。さらに、元の生のHTMLではなく、最終DOM中に保持されるスタイルがJavaScriptによっても変更され得るので、正味効果は異なり得る。多くの静的な動的コンテンツを有するウェブサイトの場合、ユーザインターフェース要素のいずれも、またはほとんどいずれもユーザに表示されないので、ほとんど何もユーザに示されないことがある。したがって、真の動的コンテンツと静的な動的コンテンツとを区別し、真の動的コンテンツのみを削除することが望ましいことがある。
[0045]いくつかの実施形態では、シリアル化DOMを生成する方法は、第1のウェブドキュメントをパースすることを含む。第1のウェブドキュメントはマークアップ言語でのものであり、要素のセットとルールのセットとを含み得る。本方法はまた、要素のセットのうちの1つまたは複数の要素にルールのセットを適用することと、ウェブドキュメントをパースし、ウェブドキュメントにルールのセットを適用することに従って、最終DOMを構築することとを含み得る。本方法は、最終DOMをコンピューティングデバイスのディスプレイ上にレンダリングすることと、最終DOM中に含まれるルールのセットを識別することとをさらに含み得る。本方法はまた、最終DOMからルールのセットを削除することと、最終DOMを第2のウェブドキュメントにシリアル化することとを含み得る。シリアル化最終DOMはブラウザのキャッシュ中にキャッシュされ得る。
C.真の動的コンテンツと静的な動的コンテンツとを識別および処理する
[0046]古い情報の表示を回避するために、クライアントブラウザ110は、シリアル化ファイル240中の真の動的コンテンツと静的な動的コンテンツとを識別し、静的な動的コンテンツの少なくとも一部を削除するか、あるいはそれを一般的なおよび/またはダミーのプレースホルダーと交換する。真の動的コンテンツを識別するために、クライアントブラウザ110は、クライアントブラウザ110が同じURLのうちの1つまたは複数に対応するウェブページをロードするたびに、ウェブページロードに関連する最終DOMを維持し、それぞれの最終DOMを記憶し得る。各ページロードの後に、クライアントブラウザ110は、後で使用するためにシリアル化ファイル240(たとえば、HTMLファイル中のシリアル化されたシリアル化最終DOM)を保存し得る。
[0047]一例では、クライアントブラウザ110は、クライアントブラウザ110が同じウェブページ(同じURLによって参照されるウェブページ)をロードするたびに、同じウェブページについての要求に関連する複数の最終DOMを生成し、それぞれの最終DOMをキャッシュに記憶する。クライアントブラウザ110は、次いで、同じウェブページのための複数の最終DOM間の差分を決定する。異なる比較された複数の最終DOM中の部分は、真の動的コンテンツとして識別され得る。
[0048]図3は、いくつかの実施形態による、ウェブドキュメント中の真の動的コンテンツを識別するためのプロセスフロー300である。図3はシリアル化最終DOM302とシリアル化最終DOM304とを含む。シリアル化最終DOM302および304は、上記のように生成され得、同じURLに関連する。シリアル化最終DOM302および304は、同じウェブページのためのシリアル化最終DOMのバージョンであり得、メモリに維持および記憶される。
[0049]シリアル化最終DOM302は、「html」ノード306と、「body」ノード308と、「<Menu>」ノード310と、「<feed>」ノード312と、「項目1」ノード314と、「項目2」ノード316と、「ニュースA」ノード318とを含む。シリアル化最終DOM304は、「html」ノード306と、「body」ノード308と、「<Menu>」ノード310と、「<feed>」ノード312と、「項目1」ノード314と、「項目2」ノード316と、「ニュースB」ノード320とを含む。「html」ノード306、「body」ノード308、「<Menu>」ノード310、および「<feed>」ノード312は、HTML要素/サブツリーを表す「静的」ノードであり得る。「項目1」ノード314、「項目2」ノード316、「ニュースA」ノード318、および「ニュースB」ノード320は、JavaScriptによって生成された動的コンテンツであり得る。クライアントブラウザ110が1日目および2日目にソーシャルメディアウェブサイトからウェブページをロードすべきであった場合、クライアントブラウザ110は、これらの2つのウェブページロードに関連するシリアル化最終DOM302とシリアル化最終DOM304の両方のバージョンをキャッシュまたはデータベースに記憶し得る。
[0050]一例では、クライアントブラウザ110は、シリアル化最終DOM302とシリアル化最終DOM304とを比較し、変化した1つまたは複数の部分を識別する。1つまたは複数の識別された部分は、シリアル化最終DOMにわたる真の動的コンテンツである。シリアル化最終DOM302は「ニュースA」コンテンツを含み、シリアル化最終DOM304は「ニュースB」コンテンツを含む。したがって、「ニュースX」は真の動的コンテンツとして識別される。真の動的コンテンツ(たとえば、ニュースのニュースフィードおよびコンテンツ)は2つのシリアル化最終DOM間で異なるが、静的な動的コンテンツ(たとえば、ユーザインターフェース要素)は同じままである。クライアントブラウザ110がシリアル化最終DOM302をキャッシュし、シリアル化最終DOM304ではなくそれをユーザに表示すべきであった場合、ユーザは、(「ニュースB」コンテンツによって表される)最新のニュースフィードではなく、(「ニュースA」コンテンツによって表される)古いニュースフィードを提示され得る。ユーザに古い情報を表示することを回避するために、クライアントブラウザ110は、共通シリアル化最終DOM330を生成するために真の動的コンテンツを削除する。共通シリアル化最終DOM330は、真の動的コンテンツがシリアル化最終DOM302またはシリアル化最終DOM304から削除されたDOMである。
[0051]いくつかの例では、クライアントブラウザ110は、シリアル化最終DOM302(またはシリアル化最終DOM304)から真の動的コンテンツを表すノードを削除することによって、真の動的コンテンツを削除する。真の動的コンテンツを表すノードが削除された場合、ウェブページのレイアウトは変化し得る。たとえば、大きいバナー画像が真の動的コンテンツであり得、大きいバナー画像が削除された場合、ウェブページのレイアウトの残りは、ユーザにとって奇妙に見え得る。図3に示されている例では、真の動的コンテンツ表すノード(たとえば、ノード318)を削除するのではなく、クライアントブラウザ110は、真の動的コンテンツを表すノードを、プレースホルダー要素として働くダミーノード332と交換し得る。ダミーノード332は、ウェブページレイアウトを前と同じように保つために同じサイズ(さらには、たとえばそれが大きい画像である場合、配色)を有する。
[0052]真の動的コンテンツはまた、サブDOMから削除され得る。たとえば、iFrameはそれら自体のサブDOMを有し得、HTMLドキュメントは、一般にキャッシュ可能でない。したがって、クライアントブラウザ110は、iFrameを共通シリアル化最終DOM中に保ち得るか、またはソースURLが変化しない場合、iFrameを等しいサイズのダミーノードと交換し得る。
[0053]真の動的コンテンツ(たとえば、「ニュースX」)を表すノードを削除することによって真の動的コンテンツを削除したか、またはノードをダミーノードと交換した後に、シリアル化最終DOMの残りは、できるだけ少数の古いコンテンツを用いて表示され得る。共通シリアル化最終DOM330は、潜在的に古いコンテンツを含まない。元のHTMLページ(ウェブサイトからダウンロードされた実際のHTMLページ)とシリアル化最終DOMのHTMLとの間の差分を識別することによって、またはシリアル化最終DOMの異なるバージョン間の差分を識別することによって、共通シリアル化最終DOMは、真の動的コンテンツを含んでいることなしに生成され得る。シリアル化最終DOMの比較は、真の動的コンテンツを除外するために、最終DOMを改良するように異なる時間に実行され得る。さらに、シリアル化最終DOMの3つ以上の異なるバージョンが比較され得る。
D.シリアル化最終DOM管理および配信のための機構
[0054]いくつかの実施形態では、クライアント側で、クライアントブラウザ110は、シリアル化最終DOMを、ウェブページのURLによってインデックス付けされたローカルキャッシュまたはデータベースに保存し得る。クライアントブラウザ110はまた、シリアル化最終DOMについての有効期限を設定し得る。シリアル化最終DOMの異なるバージョン間の(1つまたは複数の)差分を識別することは、バックグラウンドにおいて周期的に実行され得る。一例では、ウェブページがロードされるたびに、ローカルキャッシュまたはデータベースは、URLを使用して、同じURLのシリアル化最終DOMが使用され得るかどうかを決定するために照会され得る。クライアントブラウザ110は、同じURLが要求される次回に使用されるべき、クライアントからのメタデータをサーバが受け付けた場合、シリアル化最終DOMをサーバにもサブミットし得る。
[0055]上記で説明したように、各ページロードの後に、シリアル化最終DOM HTMLは、後で使用するために生成され、記憶され得る。このシリアル化最終DOM生成および比較は、(クライアントブラウザ110中の)クライアント側またはサーバ側(たとえば、ウェブプロキシまたはCDNエッジサーバ)のいずれかにおいて実行され得る。したがって、クライアントブラウザ110について、最終DOMとシリアル化最終DOMとを生成および/または記憶するものとして説明するが、サーバが最終DOMおよび/またはシリアル化最終DOMを同様に(たとえば、コンテンツ配信ネットワーク(CDN)中で)生成および/または記憶し得ることをも理解されたい。たとえば、ウェブページが要求されるたびに、CDNは、ヒットの時間にシリアル化最終DOMをキャッシュし得る。
[0056]いくつかの実施形態では、サーバ側で、サーバ(たとえば、CDNエッジサーバまたはプロキシサーバ)は、複数のユーザから同じURLについての要求を受信し得る。一例では、URL要求がサーバによってサービスされるたびに、サーバは、シリアル化最終DOMサーバ側を生成し、そのURLについてサーバ上にシリアル化最終DOMを保存する。サーバは、たとえば、PhantomJSなどのヘッドレスブラウザを使用することによって、最終DOMを生成し得る。
[0057]図4は、いくつかの実施形態による、2つのウェブページ間の差分を与えるための、クライアントとサーバとの間の通信の例示的なスイム図である。図4では、サーバ「a.com」406が、クライアントブラウザ110および410から複数の要求を受信する。クライアントブラウザ110は、URL「http://a.com」402によって参照されるウェブページ408についての要求を送り得る。要求はクライアントブラウザ110からCDNサーバ404に送られ得、CDNサーバ404は要求をサーバ「a.com」406に渡し、サーバ「a.com」406は、URL「http://a.com」402によって参照されるウェブページ408を記憶する。サーバ「a.com」406は(index.html(1)によって表される)ウェブページ408をCDNサーバ404に送り、CDNサーバ404はウェブページをクライアントブラウザ110に渡す。CDNサーバ404は、「index.html(1)」に基づいてシリアル化最終DOM420を生成し、URL「http://a.com」402についてCDNサーバ404上にシリアル化最終DOM420を保存し得る。
[0058]後の時点において、クライアントブラウザ410は、URL「http://a.com」402によって参照されるウェブページ408についての要求を送り得る。要求はクライアントブラウザ410からCDNサーバ404に送られ得、CDNサーバ404は要求をサーバ「a.com」406に渡す。サーバ「a.com」406は(index.html(2)によって表される)ウェブページ408をCDNサーバ404に送り、CDNサーバ404はウェブページをクライアントブラウザ110に渡す。CDNサーバ404は、「index.html(2)」に基づいてシリアル化最終DOM430を生成し、URL「http://a.com」402についてCDNサーバ404上にシリアル化最終DOM430を保存し得る。
[0059]同じURL(たとえば、「http://a.com)であるが、異なるユーザ(たとえば、クライアントブラウザ110および410)のためのシリアル化最終DOM(たとえば、シリアル化最終DOM420およびシリアル化最終DOM430)の異なるバージョンは、最後のシリアル化最終DOMがすべてのユーザに共通であるコンテンツのみを含み得るように、異なるコンテンツを識別するために互いと比較され得る。真の動的コンテンツを含んでいない最後のシリアル化最終DOMは、共通シリアル化最終DOMと呼ばれることがある。
[0060]CDNサーバ404は、シリアル化最終DOMを生成し、シリアル化最終DOMの異なるバージョンを互いと比較し続け得る。図4では、CDNサーバ404は、図3に関して説明したように、シリアル化最終DOM420および430の(1つまたは複数の)差分を決定するために、シリアル化最終DOM420および430を生成し、それらを比較する。CDNサーバ404は、真の動的コンテンツであるものとして、シリアル化最終DOM420とシリアル化最終DOM430との間の、「差分=S(インデックス1)−(インデックス2)」として書かれ得る(1つまたは複数の)差分を識別し、(たとえば、シリアル化最終DOM420または430から真の動的コンテンツを表すノードを削除することによって、あるいは真の動的コンテンツを表すノードを、シリアル化最終DOM420または430中のダミーノードと交換することによって)シリアル化最終DOM420または430のうちの1つから真の動的コンテンツを削除し得る。
[0061]シリアル化最終DOMの変化していない(1つまたは複数の)部分が安定した後、CDNサーバ404は、シリアル化最終DOM420とシリアル化最終DOM430との間の(1つまたは複数の)差分を削除する共通シリアル化最終DOM440を生成し、共通シリアル化最終DOMをクライアントにサービスし得る。共通シリアル化最終DOM440は、「s.index.html=S(インデックス1)−差分」によって表される。後の時点において、クライアントブラウザ410は、ウェブページ408についての別の要求を送り得る。
E.要求されたウェブページを表示するための機構
[0062]本開示で説明する技法を使用して、ウェブページは様々な方法でレンダリングされ得る。一例では、この要求に応答して、CDNサーバ404は、動的コンテンツを含まない共通シリアル化最終DOM440をクライアントブラウザ410にサービスし得る。CDNサーバ404は、異なるURL442を使用して共通シリアル化最終DOM440をクライアントブラウザ410に配信し得る。別の例では、CDNサーバ404は、JavaScriptディスプレイマネージャによって使用されるべき真の動的コンテンツをメインHTMLに埋め込むかまたはインライン化し得る。したがって、共通シリアル化最終DOMは、クライアントにおいておよび/またはサーバにおいて生成され、別個のURLを通してクライアントに配信されるか、またはメインHTMLドキュメント中に埋め込まれ得る。
1.デュアルレンダリングプロセス手法
[0063]いくつかの実施形態では、クライアントブラウザ110は、ウェブページを表示するためにデュアルレンダリングプロセス手法を使用し得る。図5に、いくつかの実施形態による、デュアルレンダリングプロセス手法を使用して共通シリアル化最終DOMと本当のウェブページとを表示するための例示的なプロセスフローを示す。図5では、クライアントブラウザ110はサーバに「foo.com」を要求する。要求に応答して、クライアントブラウザ110は、2つのレンダリングプロセス、キャッシュまたはサーバ(たとえば、CDNサーバ404またはプロキシサーバ)のいずれかに共通シリアル化最終DOMを要求し、レンダリングするためのプロセスと、ユーザに表示されるべきである本当のウェブページのためのプロセスとを作成し得る。
[0064]第1のレンダリングプロセスは「高速プロセス」であり、ウェブページが迅速にレンダリングされているという錯覚の達成するために使用される。第1のレンダリングプロセスでは、クライアントブラウザ110は、(「s.foo.com」を使用して)キャッシュまたはサーバのいずれかから共通シリアル化最終DOMをロードし、最初にユーザに共通シリアル化最終DOMを表示する。したがって、クライアントブラウザ110は、最初に「s.foo.com」によって参照されるウェブページを表示する。ユーザは、動的コンテンツ(たとえば、JavaScriptまたはCSS要素)が削除されているので、ウェブページ中の静的な動的コンテンツを迅速に閲覧することが可能である。第2のレンダリングプロセスは「完全なプロセス」であり、バックグラウンドにおいて本当のウェブページを要求し、レンダリングするために使用される。第2のレンダリングプロセスでは、クライアントブラウザ110は、(「foo.com」を使用して)本当のウェブページをロードするが、それはユーザにまだ示されない。クライアントブラウザ110は、それが本当のウェブページのそれのレンダリングを完了したとき、ユーザに本当のウェブページを表示し、ユーザに最終的に示されるウェブページが壊れていないことを保証する。
[0065]再び図4を参照すると、およびデュアルレンダリングプロセス手法を使用して、URL「http://a.com」402によって参照されるウェブページがロードされる次回、クライアントブラウザ110はフォアグラウンドにおいてユーザに共通シリアル化最終DOM440を表示し得るが、バックグラウンドプロセスはバックグラウンドにおいて実際のウェブページをレンダリングする。共通シリアル化最終DOM440はシリアル化最終DOMの現在のバージョンであり、クライアントブラウザ110は、バックグラウンドにおいてシリアル化最終DOMの前のバージョンとシリアル化最終DOMの現在のバージョンとの間の別の差分を実行する。したがって、クライアントブラウザ110は、シリアル化最終DOMと本当のウェブページの両方を処理するためのプロセスをレンダリングするが、最初にシリアル化最終DOMを示し得る。
2.埋込みJavaScript手法
[0066]いくつかの実施形態では、クライアントブラウザ110は埋込みJavaScript手法を使用し得る。埋込みJavaScript手法では、シリアル化最終DOMコンテンツは、ウェブページのメインHTML中に埋め込まれる。したがって、ウェブページは、JavaScriptをも含む。クライアントブラウザ110は、最初にシリアル化最終DOMコンテンツを表示し、次いで、本当のウェブページを表示することに移る。埋込みJavaScript手法は、シリアル化最終DOMがサーバ側から入手可能である場合に実行され得る。サーバは、シリアル化最終DOMを元のHTMLの中に埋め込むことによって元のHTMLを変更し得、クライアントブラウザ110は、異なる時間にシリアル化最終DOMと本当のウェブページとをロードし、表示するために、JavaScriptを使用し得る。
IV.例示的な方法
[0067]図6は、いくつかの実施形態による、ウェブページをレンダリングする方法600を示すフローチャートである。方法600は、限定するものではなく、他の適用例において使用され得る。
[0068]図6では、方法600はブロック602〜608を含む。ブロック602において、ロケーションによって参照される第1のウェブドキュメントを処理することに基づいて第1のシリアル化最終DOMが生成され、第1のシリアル化最終DOMは第1のインライン化動的コンテンツを含む。一例では、クライアントブラウザ110は、URLによって参照されるHTMLページ132を処理することに基づいてシリアル化最終DOM302を生成し、シリアル化最終DOM302はインライン化動的コンテンツを含む。ブロック604において、ロケーションによって参照される第2のウェブドキュメントを処理することに基づいて第2のシリアル化最終DOMが生成され、第2のシリアル化最終DOMは第2のインライン化動的コンテンツを含む。一例では、クライアントブラウザ110は、ロケーションによって参照される第2のウェブドキュメントを処理することに基づいてシリアル化最終DOM304を生成し、シリアル化最終DOM304は第2のインライン化動的コンテンツを含む。
[0069]ブロック606において、第1のシリアル化最終DOMと第2のシリアル化最終DOMとの間の差分に基づいて共通シリアル化最終DOMが生成され、共通シリアル化最終DOMは、第1のシリアル化最終DOMと第2のシリアル化最終DOMとの中に含まれる静的な動的コンテンツを含み、差分は真の動的コンテンツである。一例では、クライアントブラウザ110は、シリアル化最終DOM302とシリアル化最終DOM304との間の差分に基づいて共通シリアル化最終DOM330を生成し、共通シリアル化最終DOM330は、シリアル化最終DOM302および304中に含まれる静的な動的コンテンツを含み、差分は真の動的コンテンツである。ブロック608において、共通シリアル化最終DOMはデバイスのディスプレイにレンダリングされる。一例では、クライアントブラウザ110は、共通シリアル化最終DOM330をデバイスのディスプレイにレンダリングする。
[0070]いくつかの実施形態では、ブロック602〜608に示されている1つまたは複数のアクションは、クライアントブラウザ110によってロードされる任意の数のウェブページのために実行され得る。さらにまた、上記で説明したブロック602〜608の前に、それらの間に、またはそれらの後に追加のプロセスが挿入され得ることを理解されたい。また、本明細書で説明する方法600のブロックのうちの1つまたは複数は、必要に応じて省略されるか、組み合わせられるか、または異なるシーケンスにおいて実行され得ることを理解されたい。
[0071]図1〜図6は例にすぎず、特許請求の範囲を過度に限定すべきではない。たとえば、簡潔のために、本開示は、クライアントアプリケーションについてクライアントブラウザであるものとして説明し得るが、これは限定するものではなく、他のクライアントアプリケーションが本開示の範囲内であることを理解されたい。
[0072]本開示は古いコンテンツを回避しながら、極めて動的なウェブサイトの高速レンダリングを達成するための技法を提供する。さらに、異なる態様からの手法が、ワーキングフレームワークを形成するために組み合わせられ得る。一例では、クライアントブラウザは、すべての真の動的コンテンツが削除された、サーバ側で生成されたシリアル化最終DOMを利用するためにデュアルレンダリング手法を採用し得る。別の例では、ブラウザは、動的コンテンツのないすべてのシリアル化最終DOMをキャッシュし得る。さらに、キャッシュ中のコンテンツと、クライアントブラウザによって要求されたコンテンツと、サーバによって返されたコンテンツとを見ることによって、クライアントブラウザ110は、シリアル化最終DOM、または高速レンダリングを可能にするための任意の形態のリソースが配信および処理されているかどうかを識別し得る。
V.例示的なデバイス
[0073]図7は、本明細書で開示する実施形態のいずれかを実装するのに好適な例示的なコンピュータシステム700のブロック図である。様々な実装形態では、コンピュータシステム700はサーバであり得る。様々な実装形態では、クライアントブラウザ110はコンピュータシステム700において動作し得る。
[0074]コンピュータシステム700は、入出力(I/O)704構成要素に結合された制御ユニット701を含む。制御ユニット701は、1つまたは複数の中央処理ユニット(CPU)770を含み得、1つまたは複数のストレージデバイスをさらに含み得、その各々は、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、他の磁気媒体、CD−ROM、他の光媒体、ランダムアクセスメモリ(RAM)、プログラマブル読取り専用メモリ(PROM)、消去可能ROM(EPROM)、FLASH−EPROM、他のメモリチップまたはカートリッジ、および/あるいはプロセッサまたはコンピュータがそれから読み取るように適応された他の媒体を含むグループから選択される。1つまたは複数のストレージデバイスは、コンピュータネットワーク(図示せず)を使用してコンピュータシステム700に結合された1つまたは複数のコンピューティングデバイスおよび/またはコンピュータプログラム(たとえば、クライアント)にとって利用可能にされ得る記憶された情報を含み得る。コンピュータネットワークは、LAN、WAN、イントラネット、インターネット、クラウド、ならびに/あるいはシステム中のコンピューティングデバイスおよび/またはコンピュータプログラムを相互接続することが可能であるそれらのネットワークの任意の組合せを含む任意のタイプのネットワークであり得る。
[0075]コンピュータシステム700は、コンピュータシステム700の様々な構成要素間で情報データ、信号、および情報を通信するためのバス702または他の通信機構を含む。構成要素は、キーパッド/キーボードからキーを選択すること、あるいは1つまたは複数のボタンまたはリンクなどを選択することなど、ユーザアクションを処理するための入出力(I/O)構成要素704を含み、バス702に対応する信号を送る。I/O構成要素704はまた、ディスプレイ711などの出力構成要素と、(キーボード、キーパッド、マウスなどの)カーソル制御713などの入力制御とを含み得る。オーディオ信号を情報信号に変換することによってユーザが情報を入力するために音声を使用することを可能にするために、オーディオI/O構成要素705も含まれ得る。オーディオI/O構成要素705は、ユーザがオーディオを聞くことを可能にし得る。
[0076]トランシーバまたはネットワークインターフェース706が、ネットワークへの通信リンク718を介してコンピュータシステム700と他のデバイスとの間で信号を送信および受信する。一実施形態では、送信はワイヤレスであるが、他の伝送媒体および方法も好適であり得る。さらに、ディスプレイ711は、通信リンク718を介して制御ユニット701に結合され得る。
[0077]マイクロコントローラ、デジタル信号プロセッサ(DSP)、または他の処理構成要素であり得るCPU770は、コンピュータシステム700のディスプレイ711上での表示、または通信リンク718を介した他のデバイスへの送信などのために、これらの様々な信号を処理する。CPU770はまた、他のデバイスへの、クッキーまたはIPアドレスなどの情報の送信を制御し得る。コンピュータシステム700の構成要素はまた、システムメモリ構成要素714(たとえば、RAM)、静的記憶構成要素716(たとえば、ROM)、および/またはコンピュータ可読媒体717を含む。コンピュータシステム700は、システムメモリ構成要素714中に含まれている命令の1つまたは複数のシーケンスを実行することによって、CPU770および他の構成要素によって特定の動作を実行する。実行のためにCPU770に命令を与えることに参加する任意の媒体を指すことがあるコンピュータ可読媒体717において、論理が符号化され得る。そのような媒体は、限定はしないが、不揮発性媒体、揮発性媒体、および伝送媒体を含む、多くの形態をとり得る。様々な実装形態では、不揮発性媒体は、光または磁気ディスク、あるいはソリッドステートドライブを含み、揮発性媒体は、システムメモリ構成要素714などのダイナミックメモリを含み、伝送媒体は、バス702を含むワイヤを含む、同軸ケーブル、銅線、および光ファイバーを含む。一実施形態では、論理は、非一時的コンピュータ可読媒体中で符号化される。コンピュータ可読媒体717は、CPU770によって使用されるか、またはCPU770に関する命令を含んでいるか、記憶するか、通信するか、伝搬するか、またはトランスポートすることができる任意の装置であり得る。コンピュータ可読媒体717は、電子的、磁気的、光学式、電磁的、赤外線式、または半導体式のデバイスまたは伝搬媒体、あるいは他のメモリチップまたはカートリッジ、あるいはコンピュータがそれから読み取るように適応された他の媒体であり得る。一例では、伝送媒体は、無線波、光、および赤外線データ通信中に生成されるものなど、音響波または光波の形態をとり得る。
[0078]本開示の様々な実施形態では、本開示を実施するための命令シーケンス(たとえば、方法600)の実行はコンピュータシステム700によって実行され得る。本開示の様々な他の実施形態では、通信リンク718によって(たとえば、LAN、WLAN、PTSN、ならびに/または電気通信、モバイル、およびセルラー電話ネットワークを含む様々な他のワイヤードまたはワイヤレスネットワークなどの)ネットワークに結合された複数のコンピュータシステム700が、互いと協調して本開示を実施するための命令シーケンスを実行し得る。
[0079]適用可能な場合に、本開示によって与えられる様々な実施形態は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアとの組合せを使用して実装され得る。また適用可能な場合に、本明細書に記載する様々なハードウェア構成要素および/またはソフトウェア構成要素は、本開示の趣旨から逸脱することなく、ソフトウェア、ハードウェア、および/またはその両方を含む複合構成要素に組み合わせられ得る。適用可能な場合に、本明細書に記載する様々なハードウェア構成要素および/またはソフトウェア構成要素は、本開示の趣旨から逸脱することなく、ソフトウェア、ハードウェア、またはその両方を含むサブ構成要素に分離され得る。さらに、適用可能な場合に、ソフトウェア構成要素はハードウェア構成要素として実装され得、その逆も同様であることが企図される。
[0080]本開示によるアプリケーションソフトウェアは、1つまたは複数のコンピュータ可読媒体に記憶され得る。また、本明細書で識別されるアプリケーションソフトウェアは、1つまたは複数の汎用または特定目的コンピュータおよび/またはコンピュータシステムを使用して実装され、ネットワーク化されおよび/またはそれ以外であり得ることが企図される。適用可能な場合に、本明細書で説明する様々なブロックの順序付けは、本明細書で説明する特徴を提供するために、変更され、複合ブロックに組み合わせられ、および/またはサブブロックに分離され得る。
[0081]上記の開示は、本開示を、厳密な形態、または開示した特定の使用分野に限定するものではない。したがって、本開示に対する様々な代替実施形態および/または変更は、本明細書で明示的に説明されるのか暗示されるのかにかかわらず、本開示に照らして可能であることが企図される。本開示の範囲から逸脱することなく、形態および詳細において変更が行われ得る。したがって、本開示は特許請求の範囲のみによって限定される。

Claims (20)

  1. ウェブページをレンダリングする方法であって、
    ロケーションによって参照される第1のウェブドキュメントを処理することに基づいて第1のシリアル化最終ドキュメントオブジェクトモジュール(DOM)を生成することと、前記第1のシリアル化最終DOMが第1のインライン化動的コンテンツを含む、
    前記ロケーションによって参照される第2のウェブドキュメントを処理することに基づいて第2のシリアル化最終DOMを生成することと、前記第2のシリアル化最終DOMが第2のインライン化動的コンテンツを含む、
    前記第1のシリアル化最終DOMと前記第2のシリアル化最終DOMとの間の差分に基づいて共通シリアル化最終DOMを生成することと、前記共通シリアル化最終DOMが、前記第1のシリアル化最終DOMと前記第2のシリアル化最終DOMとの中に含まれる静的な動的コンテンツを含み、前記差分が真の動的コンテンツである、
    前記共通シリアル化最終DOMをデバイスのディスプレイにレンダリングすることと
    を備える、方法。
  2. 前記共通シリアル化最終DOMを生成することが、前記第1のシリアル化最終DOMと前記第2のシリアル化最終DOMとの間の1つまたは複数の差分を識別することと、前記第1のシリアル化最終DOMから前記1つまたは複数の差分を削除することとを含む、請求項1に記載の方法。
  3. 前記第1のウェブドキュメントをパースすることと、前記第1のウェブドキュメントがマークアップ言語でのものであり、要素のセットとルールのセットとを含む、
    要素の前記セットのうちの1つまたは複数の要素にルールの前記セットを適用することと、
    前記パースすることと前記適用することとに従って最終DOMを生成することと、前記最終DOMが、ルールの前記セットを適用することに基づいて生成された第1の動的コンテンツを含む、
    前記第1のシリアル化最終DOMを生成するために前記最終DOMをシリアル化することと
    をさらに備える、請求項1に記載の方法。
  4. 前記第1のシリアル化最終DOMを生成することが、前記第1の最終DOM中の1つまたは複数の非インラインルールをインラインルールに移動することを含む、請求項3に記載の方法。
  5. ルールがクライアント側スクリプトを含む、請求項4に記載の方法。
  6. ルールが、前記第1のウェブドキュメント中の1つまたは複数の要素に適用されるフォーマッティングルールである、請求項4に記載の方法。
  7. 前記第1のシリアル化最終DOMと前記第2のシリアル化最終DOMとが前記最終DOMの異なるバージョンである、請求項3に記載の方法。
  8. 前記第1のシリアル化最終DOMをファイルにシリアル化することと、
    前記ファイルをキャッシュすることと
    をさらに備える、請求項1に記載の方法。
  9. 前記共通シリアル化最終DOMをレンダリングすることが、前記共通シリアル化最終DOMをフォアグラウンドにおいてレンダリングすることを含み、前記方法は、
    キャッシュから前記共通シリアル化最終DOMを取り出すことと、
    前記ロケーションによって参照される第3のウェブドキュメントについての現在の要求を受信することと、
    バックグラウンドプロセス中に、前記現在の要求のために現在のDOMを構成し、前記現在のDOMをレンダリングすることと、
    前記現在のDOMがレンダリングされた後に、前記レンダリングされた現在のDOMを、前記レンダリングされた共通シリアル化最終DOMと交換することと
    をさらに備える、請求項1に記載の方法。
  10. 前記ロケーションによって参照される第3のウェブドキュメントを処理することに基づいて第3のシリアル化最終DOMを生成することと、前記第3のシリアル化最終DOMが第3のインライン化動的コンテンツを含む、
    前記第2のシリアル化最終DOMと前記第3のシリアル化最終DOMとの間の第2の差分に基づいて第2の共通シリアル化最終DOMを生成することと、前記第2の共通シリアル化最終DOMは、前記第2のシリアル化最終DOMと前記第3のシリアル化最終DOMとの中に含まれる静的な動的コンテンツを含み、真の動的コンテンツが不在であり、前記第2の差分が真の動的コンテンツである、
    前記第2の共通シリアル化最終DOMを前記デバイスの前記ディスプレイにレンダリングすることと
    をさらに備える、請求項1に記載の方法。
  11. 前記ロケーションがユニフォームリソースロケータ(URL)である、請求項1に記載の方法。
  12. ウェブページをレンダリングするためのシステムであって、
    ロケーションによって参照される第1のウェブドキュメントを処理することに基づいて第1のシリアル化最終ドキュメントオブジェクトモジュール(DOM)を生成し、前記ロケーションによって参照される第2のウェブドキュメントを処理することに基づいて第2のシリアル化最終DOMを生成するクライアントブラウザを備え、ここにおいて、前記第1のシリアル化最終DOMが第1のインライン化動的コンテンツを含み、前記第2のシリアル化最終DOMが第2のインライン化動的コンテンツを含む、

    ここにおいて、前記クライアントブラウザが、前記第1のシリアル化最終DOMと前記第2のシリアル化最終DOMとの間の差分に基づいて共通シリアル化最終DOMを生成し、ここにおいて、前記共通シリアル化最終DOMが、前記第1のシリアル化最終DOMと前記第2のシリアル化最終DOMとの中に含まれる静的な動的コンテンツを含み、前記差分が真の動的コンテンツである、
    ここにおいて、前記クライアントブラウザが、前記共通シリアル化最終DOMをデバイスのディスプレイにレンダリングする、
    システム。
  13. 前記クライアントブラウザが、前記第1のシリアル化最終DOMと前記第2のシリアル化最終DOMとの間の1つまたは複数の差分を識別し、前記第1のシリアル化最終DOMから前記1つまたは複数の差分を削除する、請求項12に記載のシステム。
  14. 前記クライアントブラウザが前記第1のウェブドキュメントをパースし、前記第1のウェブドキュメントがマークアップ言語でのものであり、要素のセットとルールのセットとを含み、ここにおいて、前記クライアントブラウザが、要素の前記セットのうちの1つまたは複数の要素にルールの前記セットを適用し、前記パースすることと前記適用することとに従って最終DOMを生成し、ここにおいて、前記最終DOMが、ルールの前記セットを適用することに基づいて生成される第1の動的コンテンツを含む、請求項12に記載のシステム。
  15. 前記クライアントブラウザが、前記第1の最終DOMから1つまたは複数のルールを削除し、前記1つまたは複数の削除されたルールを前記第1の最終DOMにインラインで組み込む、請求項14に記載のシステム。
  16. ルールがクライアント側スクリプトを含む、請求項15に記載のシステム。
  17. 前記クライアント側スクリプトがJAVASCRIPT(登録商標)プログラミング言語でのものである、請求項15に記載のシステム。
  18. 前記第1のシリアル化最終DOMと前記第2のシリアル化最終DOMとが最終DOMの異なるバージョンである、請求項12に記載のシステム。
  19. ロケーションによって参照される第1のウェブドキュメントを処理することに基づいて第1のシリアル化最終ドキュメントオブジェクトモジュール(DOM)を生成することと、前記第1のシリアル化最終DOMが第1のインライン化動的コンテンツを含む、
    前記ロケーションによって参照される第2のウェブドキュメントを処理することに基づいて第2のシリアル化最終DOMを生成することと、前記第2のシリアル化最終DOMが第2のインライン化動的コンテンツを含む、
    前記第1のシリアル化最終DOMと前記第2のシリアル化最終DOMとの間の差分に基づいて共通シリアル化最終ドキュメントオブジェクトモジュール(DOM)を生成することと、前記共通シリアル化最終DOMが、前記第1のシリアル化最終DOMと前記第2のシリアル化最終DOMとの中に含まれる静的な動的コンテンツを含み、前記差分が真の動的コンテンツである、
    前記共通シリアル化最終DOMをデバイスのディスプレイにレンダリングすることと
    を備える、動作を実行するためのコンピュータ実行可能命令を記憶したコンピュータ可読媒体。
  20. ウェブページをレンダリングするためのシステムであって、
    ロケーションによって参照される第1のウェブドキュメントを処理することに基づいて第1のシリアル化最終ドキュメントオブジェクトモジュール(DOM)を生成するための手段と、前記第1のシリアル化最終DOMが第1のインライン化動的コンテンツを含む、
    前記ロケーションによって参照される第2のウェブドキュメントを処理することに基づいて第2のシリアル化最終DOMを生成するための手段と、前記第2のシリアル化最終DOMが第2のインライン化動的コンテンツを含む、
    前記第1のシリアル化最終DOMと前記第2のシリアル化最終DOMとの間の差分に基づいて共通シリアル化最終DOMを生成するための手段と、前記共通シリアル化最終DOMが、前記第1のシリアル化最終DOMと前記第2のシリアル化最終DOMとの中に含まれる静的な動的コンテンツを含み、前記差分が真の動的コンテンツである、
    前記共通シリアル化最終DOMをデバイスのディスプレイにレンダリングするための手段と
    を備える、システム。
JP2017503866A 2014-07-25 2015-07-25 動的コンテンツと古いコンテンツとを含んでいるウェブサイトの高速レンダリング Active JP6416374B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462029398P 2014-07-25 2014-07-25
US62/029,398 2014-07-25
US14/809,046 2015-07-24
US14/809,046 US9753904B2 (en) 2014-07-25 2015-07-24 Fast rendering of websites containing dynamic content and stale content
PCT/US2015/042146 WO2016015031A1 (en) 2014-07-25 2015-07-25 Fast rendering of websites containing dynamic content and stale content

Publications (3)

Publication Number Publication Date
JP2017532621A true JP2017532621A (ja) 2017-11-02
JP2017532621A5 JP2017532621A5 (ja) 2017-12-14
JP6416374B2 JP6416374B2 (ja) 2018-10-31

Family

ID=53765631

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017503866A Active JP6416374B2 (ja) 2014-07-25 2015-07-25 動的コンテンツと古いコンテンツとを含んでいるウェブサイトの高速レンダリング

Country Status (6)

Country Link
US (1) US9753904B2 (ja)
EP (1) EP3172680B1 (ja)
JP (1) JP6416374B2 (ja)
KR (1) KR101824222B1 (ja)
CN (1) CN106575298B (ja)
WO (1) WO2016015031A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021072089A (ja) * 2019-10-31 2021-05-06 バイドゥ オンライン ネットワーク テクノロジー (ベイジン) カンパニー リミテッド ウェブページレンダリング方法、装置、電子設備、記憶媒体及びプログラム
JP2022525831A (ja) * 2020-03-02 2022-05-20 バイドゥ オンライン ネットワーク テクノロジー(ペキン) カンパニー リミテッド ページプリレンダリング方法、装置、電子機器、コンピュータプログラム及び記憶媒体

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8954583B1 (en) 2014-01-20 2015-02-10 Shape Security, Inc. Intercepting and supervising calls to transformed operations and objects
US9602543B2 (en) 2014-09-09 2017-03-21 Shape Security, Inc. Client/server polymorphism using polymorphic hooks
US9740791B1 (en) 2014-09-23 2017-08-22 Amazon Technologies, Inc. Browser as a service
US9582600B1 (en) * 2014-09-23 2017-02-28 Amazon Technologies, Inc. Cloud browser DOM-based client
US10777164B2 (en) * 2014-12-19 2020-09-15 Qualcomm Incorporated Power optimization by rendering low-resolution tiles during page load
US10033656B2 (en) * 2015-05-21 2018-07-24 Sap Portals Israel Ltd Critical rendering path optimization
US10742764B2 (en) 2015-07-27 2020-08-11 Adp, Llc Web page generation system
US10324600B2 (en) * 2015-07-27 2019-06-18 Adp, Llc Web page generation system
US10417317B2 (en) 2015-07-27 2019-09-17 Adp, Llc Web page profiler
US10657322B2 (en) * 2015-11-03 2020-05-19 Facebook, Inc. Systems and methods to optimize acquisition of templates for content items in news feed
US10732796B2 (en) 2017-03-29 2020-08-04 Microsoft Technology Licensing, Llc Control of displayed activity information using navigational mnemonics
US10853220B2 (en) 2017-04-12 2020-12-01 Microsoft Technology Licensing, Llc Determining user engagement with software applications
US10452758B1 (en) * 2017-04-26 2019-10-22 Amazon Technologies, Inc. Optimizing online content rendering
CN107423059A (zh) * 2017-07-07 2017-12-01 北京小米移动软件有限公司 页面的显示方法、装置及终端
US11580088B2 (en) 2017-08-11 2023-02-14 Microsoft Technology Licensing, Llc Creation, management, and transfer of interaction representation sets
US20190050378A1 (en) * 2017-08-11 2019-02-14 Microsoft Technology Licensing, Llc Serializable and serialized interaction representations
KR102036715B1 (ko) * 2018-04-02 2019-10-25 주식회사 한글과컴퓨터 브라우저를 통해 프레젠테이션 문서의 빠른 로딩이 가능한 웹 기반의 프레젠테이션 편집 장치 및 그 동작 방법
KR102237520B1 (ko) 2018-05-04 2021-04-07 디프트(주) 효율적인 데이터 관리를 위한 가상 전시 공간 제공 방법
US10915599B2 (en) * 2018-11-15 2021-02-09 Elementor Ltd. System and method for producing transferable, modular web pages
CN109274904A (zh) * 2018-11-23 2019-01-25 威创集团股份有限公司 一种拼接墙字幕信号预览方法、服务端及系统
US10666528B1 (en) 2018-11-28 2020-05-26 Sap Portals Israel Ltd. Decoupling platform as a service providers using a service management platform
US11301539B2 (en) * 2019-02-21 2022-04-12 Bank Of America Corporation Just-in-time front end template generation using logical document object models
US11205041B2 (en) * 2019-08-15 2021-12-21 Anil Kumar Web element rediscovery system and method
US11182536B2 (en) 2020-02-05 2021-11-23 Exponea s.r.o. System and method for dynamic webpage rendering with no flicker or flash of original content
CN113657076B (zh) * 2021-08-17 2023-08-22 中国平安财产保险股份有限公司 页面操作记录表的生成方法、装置、电子设备及存储介质
EP4180951A1 (en) * 2021-11-12 2023-05-17 Siteimprove A/S Generating lossless static object models of dynamic webpages

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000215173A (ja) * 1999-01-21 2000-08-04 Internatl Business Mach Corp <Ibm> ブラウザ共有方法及びシステム
JP2004013345A (ja) * 2002-06-04 2004-01-15 Hitachi Information Systems Ltd 情報提供システム及び情報提供プログラム
JP2005018787A (ja) * 2003-06-25 2005-01-20 Microsoft Corp キャッシュエントリを無効化するために使用できるデータベーステーブル変更情報の登録および取り出し
US20110258532A1 (en) * 2009-03-31 2011-10-20 Luis Ceze Memoizing web-browsing computation with dom-based isomorphism
WO2014028115A1 (en) * 2012-08-16 2014-02-20 Qualcomm Incorporated Pre-processing of scripts in web browsers
US20140129925A1 (en) * 2012-11-08 2014-05-08 Igor Faletski Browser inline html adaptation

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7747782B2 (en) * 2000-04-26 2010-06-29 Novarra, Inc. System and method for providing and displaying information content
US20040049737A1 (en) * 2000-04-26 2004-03-11 Novarra, Inc. System and method for displaying information content with selective horizontal scrolling
US7194683B2 (en) * 2001-03-02 2007-03-20 International Business Machines Corporation Representing and managing dynamic data content for web documents
US7415538B2 (en) * 2001-03-19 2008-08-19 International Business Machines Corporation Intelligent document filtering
US7627814B1 (en) * 2004-01-14 2009-12-01 Microsoft Corporation Hierarchical bit stream markup compilation and rendering
US8181107B2 (en) * 2006-12-08 2012-05-15 Bytemobile, Inc. Content adaptation
CN100504879C (zh) * 2007-06-08 2009-06-24 北京大学 动态网页的分块方法
CA2674659C (en) * 2008-08-05 2016-10-18 Accenture Global Services Gmbh Synchronous to asynchronous web page conversion
CN101464905B (zh) * 2009-01-08 2011-03-23 中国科学院计算技术研究所 一种网页信息抽取的系统及方法
US9311425B2 (en) 2009-03-31 2016-04-12 Qualcomm Incorporated Rendering a page using a previously stored DOM associated with a different page
US20110029899A1 (en) 2009-08-03 2011-02-03 FasterWeb, Ltd. Systems and Methods for Acceleration and Optimization of Web Pages Access by Changing the Order of Resource Loading
US20110258538A1 (en) * 2010-03-31 2011-10-20 Heng Liu Capturing DOM Modifications Mediated by Decoupled Change Mechanism
US10296653B2 (en) 2010-09-07 2019-05-21 F5 Networks, Inc. Systems and methods for accelerating web page loading
WO2012160499A1 (en) 2011-05-23 2012-11-29 Strangeloop Networks, Inc. Optimized rendering of dynamic content
US20130227396A1 (en) * 2012-02-24 2013-08-29 Microsoft Corporation Editing content of a primary document and related files
WO2015001535A1 (en) * 2013-07-04 2015-01-08 Auditmark S.A. System and method for web application security
US10984175B2 (en) 2013-08-09 2021-04-20 Yottaa Inc. Systems and methods for dynamically modifying a requested web page from a server for presentation at a client
US20150193399A1 (en) * 2014-01-09 2015-07-09 Nokia Corporation Method and apparatus for determining partial updates for a document object model

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000215173A (ja) * 1999-01-21 2000-08-04 Internatl Business Mach Corp <Ibm> ブラウザ共有方法及びシステム
JP2004013345A (ja) * 2002-06-04 2004-01-15 Hitachi Information Systems Ltd 情報提供システム及び情報提供プログラム
JP2005018787A (ja) * 2003-06-25 2005-01-20 Microsoft Corp キャッシュエントリを無効化するために使用できるデータベーステーブル変更情報の登録および取り出し
US20110258532A1 (en) * 2009-03-31 2011-10-20 Luis Ceze Memoizing web-browsing computation with dom-based isomorphism
WO2014028115A1 (en) * 2012-08-16 2014-02-20 Qualcomm Incorporated Pre-processing of scripts in web browsers
US20140129925A1 (en) * 2012-11-08 2014-05-08 Igor Faletski Browser inline html adaptation

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021072089A (ja) * 2019-10-31 2021-05-06 バイドゥ オンライン ネットワーク テクノロジー (ベイジン) カンパニー リミテッド ウェブページレンダリング方法、装置、電子設備、記憶媒体及びプログラム
JP6997253B2 (ja) 2019-10-31 2022-01-17 バイドゥ オンライン ネットワーク テクノロジー(ペキン) カンパニー リミテッド ウェブページレンダリング方法、装置、電子設備、記憶媒体及びプログラム
JP2022525831A (ja) * 2020-03-02 2022-05-20 バイドゥ オンライン ネットワーク テクノロジー(ペキン) カンパニー リミテッド ページプリレンダリング方法、装置、電子機器、コンピュータプログラム及び記憶媒体
US20220308900A1 (en) 2020-03-02 2022-09-29 Baidu Online Network Technology (Beijing) Co., Ltd. Method and apparatus of pre-rendering page, electronic device, and storage medium
US11829436B2 (en) 2020-03-02 2023-11-28 Baidu Online Network Technology (Beijing) Co., Ltd. Method and apparatus of pre-rendering page, electronic device, and storage medium

Also Published As

Publication number Publication date
EP3172680A1 (en) 2017-05-31
US9753904B2 (en) 2017-09-05
US20160026611A1 (en) 2016-01-28
KR101824222B1 (ko) 2018-03-14
JP6416374B2 (ja) 2018-10-31
KR20170038793A (ko) 2017-04-07
CN106575298A (zh) 2017-04-19
WO2016015031A1 (en) 2016-01-28
EP3172680B1 (en) 2020-04-01
CN106575298B (zh) 2020-10-30

Similar Documents

Publication Publication Date Title
JP6416374B2 (ja) 動的コンテンツと古いコンテンツとを含んでいるウェブサイトの高速レンダリング
US10924574B2 (en) Systems and methods for managing loading priority or sequencing of fragments of a web object
US11233841B2 (en) Systems and methods for configuration-based optimization by an intermediary
US8762332B2 (en) Systems and method for facilitating the synchronization of data on multiple user computers
US9641591B1 (en) Modifying web content at a client
US9942299B2 (en) System and method for managing multiple variants of an HTTP object
CN102455913B (zh) 显示模板的定制
US7865544B2 (en) Method and system for providing XML-based asynchronous and interactive feeds for web applications
US9509764B1 (en) Updating cached web content
US8977653B1 (en) Modifying web pages to reduce retrieval latency
WO2015062366A1 (zh) 一种网页广告的拦截方法、装置和浏览器
US10997360B2 (en) Page display method, device, and system, and page display assist method and device
US8631394B2 (en) Static resource processing
US9401949B1 (en) Client web content cache purge
US20190222667A1 (en) Speculative prefetch of resources across page loads
US9967370B2 (en) OData enabled mobile software applications
US8682964B1 (en) Progressively loading network content
US20210174004A1 (en) Methods and systems for dynamic customization of independent webpage section templates
US20150169533A1 (en) Server-less HTML Templates
US8639770B1 (en) Separation of mutable and immutable data in a memory cache for improvement of data updates
US20170147543A1 (en) Enabling legacy web applications for mobile devices
US20140052772A1 (en) Http performance enhancement based on delta transfer
US10599740B1 (en) Program code streaming
US11880303B2 (en) Content cache invalidation using cache tags

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170929

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170929

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20170929

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20171003

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180109

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180404

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20180417

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180809

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20180816

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181003

R150 Certificate of patent or registration of utility model

Ref document number: 6416374

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