(57)【特許請求の範囲】
【請求項１】
少なくとも1つのプロセッサによって実行される、ウェブページをレンダリングする方法であって、
ロケーションによって参照される第１のウェブドキュメントを処理することに基づいて第１のシリアル化最終ドキュメントオブジェクトモジュール（ＤＯＭ）を生成することと、前記第１のウェブドキュメントが、静的な動的コンテンツと第１の真の動的コンテンツとを含む第１のクライアント側生成動的コンテンツに関連し、前記第１のクライアント側生成動的コンテンツが、前記第１のシリアル化最終ＤＯＭ中でインライン化される、
前記ロケーションによって参照される第２のウェブドキュメントを処理することに基づいて第２のシリアル化最終ＤＯＭを生成することと、前記第２のウェブドキュメントが、前記静的な動的コンテンツと第２の真の動的コンテンツとを含む第２のクライアント側生成動的コンテンツに関連し、前記第２のクライアント側生成動的コンテンツが、前記第２のシリアル化最終ＤＯＭ中でインライン化される、
前記第１のシリアル化最終ＤＯＭ中でインライン化される前記第１の真の動的コンテンツと前記第２のシリアル化最終ＤＯＭ中でインライン化される前記第２の真の動的コンテンツとの間の差分に基づいて共通シリアル化最終ＤＯＭを生成することと、前記共通シリアル化最終ＤＯＭが、前記静的な動的コンテンツを含み、前記第１の真の動的コンテンツが不在である、
前記共通シリアル化最終ＤＯＭをデバイスのディスプレイにレンダリングすることと
を備える、方法。
【請求項２】
前記共通シリアル化最終ＤＯＭを生成することが、前記第１のシリアル化最終ＤＯＭと前記第２のシリアル化最終ＤＯＭとの間の１つまたは複数の差分を識別することと、前記第１のシリアル化最終ＤＯＭから前記１つまたは複数の差分を削除することとを含む、請求項１に記載の方法。
【請求項３】
前記第１のウェブドキュメントをパースすることと、前記第１のウェブドキュメントがマークアップ言語でのものであり、要素のセットとルールのセットとを含む、
要素の前記セットのうちの１つまたは複数の要素にルールの前記セットを適用することと、
前記パースすることと前記適用することとに従って最終ＤＯＭを生成することと、前記最終ＤＯＭが、ルールの前記セットを適用することに基づいて生成された前記第１のクライアント側生成動的コンテンツを含む、
前記第１のシリアル化最終ＤＯＭを生成するために前記最終ＤＯＭをシリアル化することと
をさらに備える、請求項１に記載の方法。
【請求項４】
前記第１のシリアル化最終ＤＯＭを生成することが、前記最終ＤＯＭ中の１つまたは複数の非インラインルールをインラインルールに移動することを含む、請求項３に記載の方法。
【請求項５】
ルールがクライアント側スクリプトを含む、請求項４に記載の方法。
【請求項６】
ルールが、前記第１のウェブドキュメント中の１つまたは複数の要素に適用されるフォーマッティングルールである、請求項４に記載の方法。
【請求項７】
前記第１のシリアル化最終ＤＯＭと前記第２のシリアル化最終ＤＯＭのそれぞれは、前記最終ＤＯＭの異なるバージョンをそれぞれシリアル化したものである、請求項３に記載の方法。
【請求項８】
前記第１のシリアル化最終ＤＯＭをファイルにシリアル化することと、
前記ファイルをキャッシュすることと
をさらに備える、請求項１に記載の方法。
【請求項９】
前記共通シリアル化最終ＤＯＭをレンダリングすることが、前記共通シリアル化最終ＤＯＭをフォアグラウンドにおいてレンダリングすることを含み、前記方法は、
キャッシュから前記共通シリアル化最終ＤＯＭを取り出すことと、
前記ロケーションによって参照される第３のウェブドキュメントについての現在の要求を受信することと、
バックグラウンドプロセス中に、前記現在の要求のために現在のＤＯＭを構成し、前記現在のＤＯＭをレンダリングすることと、
前記現在のＤＯＭがレンダリングされた後に、前記レンダリングされた現在のＤＯＭを、前記レンダリングされた共通シリアル化最終ＤＯＭと交換することと
をさらに備える、請求項１に記載の方法。
【請求項１０】
前記ロケーションによって参照される第３のウェブドキュメントを処理することに基づいて第３のシリアル化最終ＤＯＭを生成することと、前記第３のシリアル化最終ＤＯＭがインライン化動的コンテンツを含む、
前記第２のシリアル化最終ＤＯＭと前記第３のシリアル化最終ＤＯＭとの間の第２の差分に基づいて第２の共通シリアル化最終ＤＯＭを生成することと、前記第２の共通シリアル化最終ＤＯＭは、前記第２のシリアル化最終ＤＯＭと前記第３のシリアル化最終ＤＯＭとの中に含まれる前記静的な動的コンテンツを含み、前記第２の真の動的コンテンツが不在である、
前記第２の共通シリアル化最終ＤＯＭを前記デバイスの前記ディスプレイにレンダリングすることと
をさらに備える、請求項１に記載の方法。
【請求項１１】
前記ロケーションがユニフォームリソースロケータ（ＵＲＬ）である、請求項１に記載の方法。
【請求項１２】
ウェブページをレンダリングするためのシステムであって、
ロケーションによって参照される第１のウェブドキュメントを処理することに基づいて第１のシリアル化最終ドキュメントオブジェクトモジュール（ＤＯＭ）を生成し、前記ロケーションによって参照される第２のウェブドキュメントを処理することに基づいて第２のシリアル化最終ＤＯＭを生成するクライアントブラウザを実行する少なくとも1つのプロセッサを備え、ここにおいて、前記第１のウェブドキュメントが、静的な動的コンテンツと第１の真の動的コンテンツとを含む第１のクライアント側生成動的コンテンツに関連し、前記第１のクライアント側生成動的コンテンツが、前記第１のシリアル化最終ＤＯＭ中でインライン化され、前記第２のウェブドキュメントが、前記静的な動的コンテンツと第２の真の動的コンテンツとを含む第２のクライアント側生成動的コンテンツに関連し、前記第２のクライアント側生成動的コンテンツが、前記第２のシリアル化最終ＤＯＭ中でインライン化される、
ここにおいて、前記少なくとも1つのプロセッサが、前記第１のシリアル化最終ＤＯＭ中でインライン化される前記第１の真の動的コンテンツと前記第２のシリアル化最終ＤＯＭ中でインライン化される前記第２の真の動的コンテンツとの間の差分に基づいて共通シリアル化最終ＤＯＭを生成し、前記共通シリアル化最終ＤＯＭが、前記静的な動的コンテンツを含み、前記第１の真の動的コンテンツが不在である、
ここにおいて、前記少なくとも1つのプロセッサが、前記共通シリアル化最終ＤＯＭをデバイスのディスプレイにレンダリングする、システム。
【請求項１３】
前記少なくとも1つのプロセッサが、前記第１のシリアル化最終ＤＯＭと前記第２のシリアル化最終ＤＯＭとの間の１つまたは複数の差分を識別し、前記第１のシリアル化最終ＤＯＭから前記１つまたは複数の差分を削除する、請求項１２に記載のシステム。
【請求項１４】
前記少なくとも1つのプロセッサが前記第１のウェブドキュメントをパースし、前記第１のウェブドキュメントがマークアップ言語でのものであり、要素のセットとルールのセットとを含み、ここにおいて、前記少なくとも1つのプロセッサが、要素の前記セットのうちの１つまたは複数の要素にルールの前記セットを適用し、前記パースすることと前記適用することとに従って最終ＤＯＭを生成し、ここにおいて、前記最終ＤＯＭが、ルールの前記セットを適用することに基づいて生成された前記第１のクライアント側生成動的コンテンツを含み、前記少なくとも1つのプロセッサが、前記第１のシリアル化最終ＤＯＭを生成するために前記最終ＤＯＭをシリアル化する、請求項１２に記載のシステム。
【請求項１５】
前記少なくとも1つのプロセッサが、前記最終ＤＯＭから１つまたは複数のルールを削除し、前記１つまたは複数の削除されたルールを前記最終ＤＯＭにインラインで組み込む、請求項１４に記載のシステム。
【請求項１６】
ルールがクライアント側スクリプトを含む、請求項１５に記載のシステム。
【請求項１７】
前記クライアント側スクリプトがＪＡＶＡＳＣＲＩＰＴ（登録商標）プログラミング言語でのものである、請求項１６に記載のシステム。
【請求項１８】
前記第１のシリアル化最終ＤＯＭと前記第２のシリアル化最終ＤＯＭのそれぞれは、前記最終ＤＯＭの異なるバージョンをそれぞれシリアル化したものである、請求項１４に記載のシステム。
【請求項１９】
ロケーションによって参照される第１のウェブドキュメントを処理することに基づいて第１のシリアル化最終ドキュメントオブジェクトモジュール（ＤＯＭ）を生成することと、前記第１のウェブドキュメントが、静的な動的コンテンツと第１の真の動的コンテンツとを含む第１のクライアント側生成動的コンテンツに関連し、前記第１のクライアント側生成動的コンテンツが、前記第１のシリアル化最終ＤＯＭ中でインライン化される、
前記ロケーションによって参照される第２のウェブドキュメントを処理することに基づいて第２のシリアル化最終ＤＯＭを生成することと、前記第２のウェブドキュメントが、前記静的な動的コンテンツと第２の真の動的コンテンツとを含む第２のクライアント側生成動的コンテンツに関連し、前記第２のクライアント側生成動的コンテンツが、前記第２のシリアル化最終ＤＯＭ中でインライン化される、
前記第１のシリアル化最終ＤＯＭ中でインライン化される前記第１の真の動的コンテンツと前記第２のシリアル化最終ＤＯＭ中でインライン化される前記第２の真の動的コンテンツとの間の差分に基づいて共通シリアル化最終ＤＯＭを生成することと、前記共通シリアル化最終ＤＯＭが、前記静的な動的コンテンツを含み、前記第１の真の動的コンテンツが不在である、
前記共通シリアル化最終ＤＯＭをデバイスのディスプレイにレンダリングすることと
を少なくとも1つのプロセッサに実行させるプログラム。
【請求項２０】
ウェブページをレンダリングするためのシステムであって、
ロケーションによって参照される第１のウェブドキュメントを処理することに基づいて第１のシリアル化最終ドキュメントオブジェクトモジュール（ＤＯＭ）を生成するための手段と、前記第１のウェブドキュメントが、静的な動的コンテンツと第１の真の動的コンテンツとを含む第１のクライアント側生成動的コンテンツに関連し、前記第１のクライアント側生成動的コンテンツが、前記第１のシリアル化最終ＤＯＭ中でインライン化される、
前記ロケーションによって参照される第２のウェブドキュメントを処理することに基づいて第２のシリアル化最終ＤＯＭを生成するための手段と、前記第２のウェブドキュメントが、前記静的な動的コンテンツと第２の真の動的コンテンツとを含む第２のクライアント側生成動的コンテンツに関連し、前記第２のクライアント側生成動的コンテンツが、前記第２のシリアル化最終ＤＯＭ中でインライン化される、
前記第１のシリアル化最終ＤＯＭ中でインライン化される前記第１の真の動的コンテンツと前記第２のシリアル化最終ＤＯＭ中でインライン化される前記第２の真の動的コンテンツとの間の差分に基づいて共通シリアル化最終ＤＯＭを生成するための手段と、前記共通シリアル化最終ＤＯＭが、前記静的な動的コンテンツを含み、前記第１の真の動的コンテンツが不在である、
前記共通シリアル化最終ＤＯＭをデバイスのディスプレイにレンダリングするための手段と
を備える、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本開示は、一般にコンテンツをレンダリングすることに関し、より詳細には、ウェブページをレンダリングすることに関する。
【０００２】
関連出願の相互参照
[0002]本出願は、その両方が参照により本明細書に組み込まれる、２０１５年７月２４日に出願された米国特許出願第１４／８０９，０４６号の出願日の優先権を主張する、２０１４年７月２５日に出願された米国仮特許出願第６２／０２９，３９８号からの優先権の利益を主張する。
【背景技術】
【０００３】
[0003]高速ウェブページ表示のための旧来の技法は、最初のペイントのために最小のＪａｖａＳｃｒｉｐｔ（登録商標）およびＣＳＳ処理が行われるようにアプリケーション開発者がウェブページを設計することに依拠する。しかしながら、この手法は、ＪａｖａＳｃｒｉｐｔによって生成された大量の動的コンテンツを含んでいるウェブサイトに不適である。たとえば、いくつかのウェブサイトは、ＪａｖａＳｃｒｉｐｔによって生成されたそれらのユーザインターフェース（ＵＩ）要素のすべてを有し得る。さらに、ウェブページ開発者のツールおよび／またはライブラリの選択肢が制限されるので、ウェブページ開発者がウェブページ表示をより速くすることに依拠することは十分でないことがある。たとえば、ウェブページ開発者は、しばしば、一般にＪａｖａＳｃｒｉｐｔで実装されるサードパーティライブラリに依拠する。
【０００４】
[0004]ブラウザまたはコンテンツ配信ネットワーク（ＣＤＮ：content delivery network）側での動作の速度を上げるために使用される従来の技法は、キャッシュされたページを使用することである。しかしながら、この技法は、古い情報がキャッシュされ、後でユーザに提示され得るので、高度に動的なウェブサイトに不適である。「古い」情報が示されるのを防ぐために、ＪａｖａＳｃｒｉｐｔによって生成されたコンテンツがまったく表示されない場合、大量の動的コンテンツを含んでいるそれらのウェブサイトは、示すべき最小の物を有することになる。ウェブページを迅速にレンダリングすると同時に、これらの欠点を回避することが望ましいことがある。
【発明の概要】
【０００５】
[0005]本開示は、コンテンツをレンダリングすることに関する。
【０００６】
[0006]いくつかの実施形態によれば、ウェブページをレンダリングする例示的な方法は、ロケーションによって参照される第１のウェブドキュメントを処理することに基づいて第１のシリアル化最終（serialized eventual）ドキュメントオブジェクトモジュール（ＤＯＭ：document object module）を生成することを含む。第１のシリアル化最終ＤＯＭは第１のインライン化動的コンテンツを含む。本方法はまた、ロケーションによって参照される第２のウェブドキュメントを処理することに基づいて第２のシリアル化最終ＤＯＭを生成することを含む。第２のシリアル化最終ＤＯＭは第２のインライン化動的コンテンツを含む。本方法は、第１のシリアル化最終ＤＯＭと第２のシリアル化最終ＤＯＭとの間の差分に基づいて共通シリアル化最終ＤＯＭを生成することをさらに含む。共通シリアル化最終ＤＯＭは、第１のシリアル化最終ＤＯＭと第２のシリアル化最終ＤＯＭとの中に含まれる静的な動的コンテンツを含み、差分は真の動的コンテンツである。本方法はまた、共通シリアル化最終ＤＯＭをデバイスのディスプレイにレンダリングすることを含む。
【０００７】
[0007]いくつかの実施形態によれば、ウェブページをレンダリングするためのシステムは、ロケーションによって参照される第１のウェブドキュメントを処理することに基づいて第１のシリアル化最終ドキュメントオブジェクトモジュール（ＤＯＭ）を生成し、ロケーションによって参照される第２のウェブドキュメントを処理することに基づいて第２のシリアル化最終ＤＯＭを生成するクライアントブラウザを含む。第１のシリアル化最終ＤＯＭは第１のインライン化動的コンテンツを含み、第２のシリアル化最終ＤＯＭは第２のインライン化動的コンテンツを含む。クライアントブラウザは、第１のシリアル化最終ＤＯＭと第２のシリアル化最終ＤＯＭとの間の差分に基づいて共通シリアル化最終ＤＯＭを生成する。共通シリアル化最終ＤＯＭは、第１のシリアル化最終ＤＯＭと第２のシリアル化最終ＤＯＭとの中に含まれる静的な動的コンテンツを含み、差分は真の動的コンテンツである。クライアントブラウザは、共通シリアル化最終ＤＯＭをデバイスのディスプレイにレンダリングする。
【０００８】
[0008]いくつかの実施形態によれば、動作を実行するためのコンピュータ実行可能命令を記憶したコンピュータ可読媒体は、ロケーションによって参照される第１のウェブドキュメントを処理することに基づいて第１のシリアル化最終ドキュメントオブジェクトモジュール（ＤＯＭ）を生成することと、第１のシリアル化最終ＤＯＭが第１のインライン化動的コンテンツを含む、ロケーションによって参照される第２のウェブドキュメントを処理することに基づいて第２のシリアル化最終ＤＯＭを生成することと、第２のシリアル化最終ＤＯＭが第２のインライン化動的コンテンツを含む、第１のシリアル化最終ＤＯＭと第２のシリアル化最終ＤＯＭとの間の差分に基づいて共通シリアル化最終ドキュメントオブジェクトモジュール（ＤＯＭ）を生成することと、共通シリアル化最終ＤＯＭが、第１のシリアル化最終ＤＯＭと第２のシリアル化最終ＤＯＭとの中に含まれる静的な動的コンテンツを含み、差分が真の動的コンテンツである、共通シリアル化最終ＤＯＭをデバイスのディスプレイにレンダリングすることとを含む。
【０００９】
[0009]いくつかの実施形態によれば、ウェブページをレンダリングするためのシステムは、ロケーションによって参照される第１のウェブドキュメントを処理することに基づいて第１のシリアル化最終ドキュメントオブジェクトモジュール（ＤＯＭ）を生成するための手段と、第１のシリアル化最終ＤＯＭが第１のインライン化動的コンテンツを含む、ロケーションによって参照される第２のウェブドキュメントを処理することに基づいて第２のシリアル化最終ＤＯＭを生成するための手段と、第２のシリアル化最終ＤＯＭが第２のインライン化動的コンテンツを含む、第１のシリアル化最終ＤＯＭと第２のシリアル化最終ＤＯＭとの間の差分に基づいて共通シリアル化最終ＤＯＭを生成するための手段と、共通シリアル化最終ＤＯＭが、第１のシリアル化最終ＤＯＭと第２のシリアル化最終ＤＯＭとの中に含まれる静的な動的コンテンツを含み、差分が真の動的コンテンツである、共通シリアル化最終ＤＯＭをデバイスのディスプレイにレンダリングするための手段とを含む。
【００１０】
[0010]本明細書の一部をなす添付の図面は、本開示の実施形態を示し、説明とともに、実施形態の原理について説明するようにさらに働く。図面において、同様の参照番号は、同等であるかまたは機能的に類似する要素を示し得る。要素が最初に現れる図面は、概して、対応する参照番号中の最左桁によって示される。
【図面の簡単な説明】
【００１１】
【図１】[0011]いくつかの実施形態による、例示的な通信システムの図。
【図２】[0012]いくつかの実施形態による、最終ＤＯＭをシリアル化するためのプロセスフローの図。
【図３】[0013]いくつかの実施形態による、ウェブドキュメント中の真の動的コンテンツを識別するためのプロセスフローの図。
【図４】[0014]いくつかの実施形態による、２つのウェブページ間の差分を与えるための、クライアントとサーバとの間の通信の例示的なスイム図（swim diagram）。
【図５】[0015]いくつかの実施形態による、デュアルレンダリングプロセス手法を使用して共通シリアル化最終ＤＯＭと本当のウェブページとを表示するための例示的なプロセスフローの図。
【図６】[0016]いくつかの実施形態による、ウェブページをレンダリングする方法を示すフローチャート。
【図７】[0017]本開示の１つまたは複数の実施形態を実装するのに好適なコンピュータシステムのブロック図。
【発明を実施するための形態】
【００１２】
Ｉ．概要
ＩＩ．例示的なシステムアーキテクチャ
ＩＩＩ．ウェブページをレンダリングする
Ａ．元のＤＯＭに基づいて最終ＤＯＭを構築する
Ｂ．最終ＤＯＭをシリアル化する
１．最終ＤＯＭの視覚表現に対応するシリアル化最終ＤＯＭを構築する
２．最終ＤＯＭをファイルにシリアル化する
Ｃ．真の動的コンテンツと静的な動的コンテンツとを識別および処理する
Ｄ．シリアル化最終ＤＯＭ管理および配信のための機構
Ｅ．要求されたウェブページを表示するための機構
１．デュアルレンダリングプロセス手法
２．埋込みＪａｖａＳｃｒｉｐｔ手法
ＩＶ．例示的な方法
Ｖ．例示的なデバイス
【００１３】
Ｉ．概要
[0018]以下の開示は、本開示の異なる特徴を実装するための、多くの異なる実施形態または例を与えることを理解されたい。いくつかの実施形態は、これらの具体的な詳細の一部または全部なしに実施され得る。本開示を簡略化するために、構成要素、モジュール、および構成の特定の例について以下で説明する。これらは、もちろん、例にすぎず、限定するものではない。
【００１４】
[0019]本開示は、ウェブ開発者にそれらのウェブサイトを変更するように要求することなしに、できる限り、古くない動的コンテンツの高速レンダリングの相反する要件を達成するためのブラウザ／サーバフレームワークを与える。多くの普及しているウェブサイトは、クライアント側スクリプト記述を使用してクライアント側で生成された動的コンテンツを有する。動的コンテンツをもつウェブページをできる限り迅速にレンダリングしながら、最小の古い情報を示すことが望ましいことがある。静的な動的コンテンツは、たとえば、フレーム、レイアウト、サイドバー、メニュー、ポストテンプレート、友人リストなどを指すことがある。真の動的コンテンツは、ページロードにわたって極めて頻繁に変化するコンテンツ（たとえば、ニュースフィード）を指すことがある。
【００１５】
[0020]ウェブページをより迅速にレンダリングするために、本開示は、最終ＤＯＭのシリアライゼーション、（古い情報を示すことを回避するための）動的コンテンツ識別および処理、（コンテンツの管理および配信のための）シリアル化最終ＤＯＭを生成するための機構、ならびにシリアル化最終ＤＯＭと本当のウェブページとを表示するための機構（また、最終ＤＯＭをどのように使用するか）などの技法を提供する。ウェブページが完全にロードされた後のＤＯＭは、ウェブページの「最終ＤＯＭ」と呼ばれることがある。
【００１６】
[0021]本開示で説明する１つまたは複数の技法を含む実施形態は、最も動的なウェブサイトでもより高速に表示し、古い情報がユーザに表示されることを回避し、および／または高速表示のために、動的に生成されるが変化しない項目を保存し得る。さらに、ソリューションは、サーバの支援を用いてまたは用いずにブラウザにおいて実装され得る。したがって、開発者が元のウェブサイトを変更することは不要であり得る。
【００１７】
ＩＩ．例示的なシステムアーキテクチャ
[0022]図１は、いくつかの実施形態による、例示的な通信システム１００である。システム１００は、ネットワーク１４０を介してサーバ１２０に通信可能に結合されたクライアントブラウザ１１０を含む。システム１００について、１つのクライアントブラウザと１つのサーバとに関して本明細書で説明するが、システム１００が２つ以上のクライアントブラウザおよび／またはサーバを含み得ることを当業者は認識されよう。
【００１８】
[0023]ブラウザは、ユーザが、ワールドワイドウェブ上のウェブサイトまたはウェブアプリケーション上など、ネットワーク上で利用可能であるコンテンツを閲覧またはダウンロードすることを可能にするソフトウェアアプリケーションである。コンテンツは、テキスト、ファイル、画像、オーディオ、ビデオ、およびパーソナル通信を含み得る。ウェブページは、そのようなコンテンツを提示し、ユニフォームリソースロケータ（ＵＲＬ）などのユニフォームリソース識別子（ＵＲＩ）を使用して位置を特定される。ウェブページは、ウェブページコンテンツを保持するコンピュータのインターネットプロトコル（ＩＰ）アドレスを使用して取り出され得る。ブラウザは、コンテンツフローを取得または管理するためにいくつかのプロトコルおよび規格を使用し得る。たとえば、ブラウザは、コンテンツおよびウェブページをフェッチするためにハイパーテキスト転送プロトコル（ＨＴＴＰ）を使用し得る。ＨＴＴＰは、基本的な要求／応答セマンティクスを与えるアプリケーションレベルプロトコルである。ＨＴＴＰは、サーバにオブジェクトを要求し、そこから取り出すために使用され得る。
【００１９】
[0024]サーバ１２０は、たとえば、限定はしないが、ウェブサーバ、電気通信サーバ、データベースサーバなどであり得る。ウェブサーバは、クライアントからのＨＴＴＰ要求に応答してコンテンツを生成するウェブアプリケーションを含んでいることがある。ウェブサーバは、生成されたコンテンツをパッケージングし、ＨＴＴＰ応答の形態でコンテンツをクライアントにサービスする。ウェブサーバは、ＨＴＴＰ返答でＨＴＴＰ要求に応答するソフトウェア構成要素であり得る。例示的な例として、ウェブサーバは、限定はしないが、Ａｐａｃｈｅ  ＨＴＴＰ  Ｓｅｒｖｅｒ、Ａｐａｃｈｅ  Ｔｏｍｃａｔ、Ｍｉｃｒｏｓｏｆｔ  Ｉｎｔｅｒｎｅｔ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｓｅｒｖｅｒ、ＪＢｏｓｓ  Ａｐｐｌｉｃａｔｉｏｎ  Ｓｅｒｖｅｒ、ＷｅｂＬｏｇｉｃ  Ａｐｐｌｉｃａｔｉｏｎ  Ｓｅｒｖｅｒ、またはＳｕｎ  Ｊａｖａ  Ｓｙｓｔｅｍ  Ｗｅｂ  Ｓｅｒｖｅｒであり得る。商標は、それらのそれぞれの所有者の所有物である。ウェブサーバは、ハイパーテキストマークアップ言語（ＨＴＭＬ）、拡張可能なマークアップ言語（ＸＭＬ）、ドキュメント、ビデオ、画像、マルチメディア機能、またはそれらの任意の組合せなどのコンテンツをサービスし得る。これらの例はもっぱら例示的なものであり、本開示の範囲を制限しない。
【００２０】
[0025]クライアントブラウザ１１０はコンピューティングデバイス上で動作することができる。同様に、サーバ１２０は、クライアントにデータをサービスすることが可能なコンピューティングデバイスを使用して実装され得る。コンピューティングデバイスの例としては、限定はしないが、中央処理ユニット、特定用途向け集積回路、コンピュータ、ワークステーション、分散コンピューティングシステム、コンピュータクラスタ、組込みシステム、スタンドアロン電子デバイス、ネットワーク化されたデバイス、モバイルデバイス（たとえばモバイルフォン、スマートフォン、携帯情報端末（ＰＤＡ）、ナビゲーションデバイス、タブレットまたはモバイルコンピューティングデバイス）、ラックサーバ、セットトップボックス、または少なくとも１つのプロセッサおよびメモリを有する他のタイプのコンピュータシステムがある。クラスタリングされたコンピューティング環境またはサーバファームによって実行されるコンピューティングプロセスは、同じまたは異なるロケーションに位置する複数のプロセッサにわたって行われ得る。そのようなコンピューティングデバイスは、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せを含み得る。ソフトウェアは、１つまたは複数のアプリケーションとオペレーティングシステムとを含み得る。ハードウェアは、限定はしないが、プロセッサ、メモリ、およびユーザインターフェースディスプレイを含むことができる。
【００２１】
[0026]ネットワーク１４０は、データ通信を搬送することができるネットワークまたはネットワークの組合せであり得、本明細書ではコンピュータネットワークと呼ばれることがある。そのようなネットワーク１４０は、限定はしないが、ワイヤード（たとえば、イーサネット（登録商標））またワイヤレス（たとえば、Ｗｉ−Ｆｉ（登録商標）および３Ｇ）ネットワーク、ローカルエリアネットワーク、中間エリアネットワーク、および／またはインターネットなどのワイドエリアネットワークを含むことができる。ネットワーク１４０は、限定はしないが、ワールドワイドウェブプロトコルおよび／またはサービスを含む、プロトコルおよび技術をサポートすることができる。中間ウェブサーバ、ゲートウェイ、または他のサーバが、特定の適用例または環境に応じてシステム１００の構成要素間に与えられ得る。
【００２２】
[0027]クライアントブラウザ１１０は、サーバへの一連の要求とサーバからの一連の応答とを通してウェブページを取り出し得る。一例では、クライアントブラウザ１１０は、ネットワーク１４０上でウェブページについての要求をサーバ１２０に送る。サーバ１２０は要求を受信し、要求を処理し、要求されたウェブページのためのコンテンツなどの応答を返す。一例では、サーバ１２０は、クライアントブラウザ１１０の要求に応答してクライアントブラウザ１１０にＨＴＭＬページ１３２を返す。ＨＴＭＬページ１３２は、マークアップ言語（ＨＴＭＬ）でのものであるウェブドキュメントであり、１つまたは複数の要素（たとえば、タグ）のセットと１つまたは複数のルールのセットとを含む。ルールは、たとえば、１つまたは複数の要素、あるいはカスケーディングスタイルシート（ＣＳＳ：Cascading Style Sheet）要素に適用されるＪａｖａＳｃｒｉｐｔであり得る。ＣＳＳは、ウェブドキュメントをフォーマットおよびレンダリングするために使用されるプレゼンテーションルールと、プロパティと、補助構成体とを定義するための宣言シンタックスである。ＣＳＳを使用することによって、ドキュメント（たとえば、ＨＴＭＬページ１３２）中の要素（たとえば、ＨＴＭＬ要素）の外観およびフォーマッティングは、要素を追加または削除することなしに迅速に変更され得る。したがって、ＨＴＭＬページ１３２のサイズは小さくなり得、ドキュメントを操作するスクリプトは高速であり得る。
【００２３】
[0028]クライアントブラウザ１１０は、ＨＴＭＬページ１３２をレンダリングするために外部リソースをダウンロードし得る。たとえば、ＨＴＭＬページ１３２は、ＣＳＳ、ＪａｖａＳｃｒｉｐｔファイル、画像、および他のリソースなどの他の構成要素のアドレスを含んでいることがある。クライアントブラウザ１１０は、次に、サーバにこれらのうちの各々を要求し、それらをウェブページの最終レンダリングに組み合わせる。ＨＴＭＬページ１３２をレンダリングすることが可能になる前に、クライアントブラウザ１１０が複数のアクションを実行し得るので、クライアントブラウザ１１０がＨＴＭＬページ１３２をレンダリングすることは時間がかかり得る。たとえば、ＨＴＭＬページ１３２はＪａｖａＳｃｒｉｐｔを含み得、その場合、クライアントブラウザ１１０は、クライアントにおいて動的コンテンツを生成するためにＪａｖａＳｃｒｉｐｔをダウンロードおよび実行し得、それは時間がかかる。生成された動的コンテンツは、次いで、ウェブページの一部になる。
【００２４】
[0029]ＨＴＭＬページ１３２中の一部のコンテンツは「真の」動的コンテンツであり得、それは、各ページロード（たとえば、ニュースフィード）ごとに変化する可能性がある。真の動的コンテンツは、同じＵＲＬによって参照されるページのローディングにわたって異なり得、一般に、各ページロードの後に古くなり得る。たとえば、１日目に、ユーザは、ソーシャルメディアウェブサイトを精読し、ユーザの友人によって投稿されたニュースフィードを表示するウェブページを要求し得る。レイアウトとサイドバーとテンプレートとの表示は、ページロードにわたって同じであり得るが、ユーザに表示される投稿されたニュースフィードは、ユーザがウェブページをリフレッシュまたは要求するたびに変化し得る。
【００２５】
[0030]ＨＴＭＬページ１３２中の一部のコンテンツは「静的」な動的コンテンツであり得、それは、静的コンテンツがページロード間で変化しないという点で「静的」であるが、コンテンツがクライアント側スクリプト（たとえば、ＪａｖａＳｃｒｉｐｔで書かれたスクリプト）によって生成されるという点で「動的」である。静的な動的コンテンツの例は、ユーザログイン後のウェブサイトのレイアウト、クロム、バナー、フォーム制御（テキストボックスおよびボタン）、メニュー、バックグラウンドなどである。そのようなウェブサイトのユーザインターフェース全体は、たとえば、ＪａｖａＳｃｒｉｐｔを使用して生成され得、このコンテンツは、重要な設計変更が行われない限り同じままであり、重要な設計変更は頻繁に起こらない。
【００２６】
[0031]単一のウェブページが真の動的コンテンツと静的な動的コンテンツの両方を有することは一般的である。真の動的コンテンツと静的な動的コンテンツの両方が「動的コンテンツ」であるが、それらが両方ともオンザフライで生成されるという点で、静的な動的コンテンツは、ページロードにわたって同じである、より高い確率を有する。ウェブページをより高速にレンダリングするために、ウェブページ中の真の動的コンテンツと静的な動的コンテンツとを識別し、それらを互いと区別することが望ましいことがある。
【００２７】
[0032]ウェブページをより高速にレンダリングするために、クライアントブラウザ１１０はウェブページをキャッシュし得る。クライアントブラウザ１１０が、サーバ１２０からのキャッシュされたウェブページに対応するＨＴＭＬページ１３２を受信した場合、クライアントブラウザ１１０は、ＨＴＭＬページ１３２に対応するキャッシュされたウェブページを表示し得る。しかしながら、古い情報が、ユーザに提示され得る（たとえば、昨日のニュースなど、間違った「真の」動的コンテンツがキャッシュから表示され得る）。本開示は、最小の古い情報を示しながら、古くない動的コンテンツの高速レンダリングの相反する要件を達成するためにブラウザ／サーバフレームワークを使用する技法を提供する。
【００２８】
ＩＩＩ．ウェブページをレンダリングする
[0033]ウェブページを完全にロードし、表示するために、クライアントブラウザ１１０は、ＨＴＭＬページ１３２をダウンロードし、ＨＴＭＬページ１３２をパースし、ＨＴＭＬページ１３２の構造のドキュメントオブジェクトモジュール（ＤＯＭ）を構築し、ＤＯＭをレンダリングする。大量の動的コンテンツを有するウェブページでは、最も多くの時間がかかるアクションは、動的コンテンツ（たとえば、外部ソースからのＪａｖａＳｃｒｉｐｔスクリプト）をダウンロードすること、動的コンテンツを実行すること（たとえば、ＪａｖａＳｃｒｉｐｔを実行すること）、およびスタイル計算であり得る。これらのアクションが実行された後、クライアントブラウザ１１０はＤＯＭをレンダリングし得る。ＤＯＭをレンダリングすることは、実際のウェブページコンテンツをスクリーン上にペイントする。
【００２９】
[0034]図２は、いくつかの実施形態による、最終ＤＯＭをシリアル化するためのプロセスフロー２００である。図２は、レンダリングのためにサーバ１２０によってクライアントブラウザ１１０に送られる「生の」ＨＴＭＬページ１３２の一例を与える。クライアントブラウザ１１０はＨＴＭＬページ１３２を処理し、プロパティとメソッドとを有するノードおよびオブジェクトの構造化されたグループとして、ＨＴＭＬページ１３２の表現である元のＤＯＭ２０２を構築する。元のＤＯＭ２０２は、ＨＴＭＬページ１３２内のマークアップ要素の階層のためのツリー構造として視覚化される。
【００３０】
[0035]ＨＴＭＬページ１３２中のオブジェクトプロパティは、ＨＴＭＬ要素の属性への直接マッピングである。直接マッピングは、ＨＴＭＬシンタックスとＤＯＭとの間に存在する。元のＤＯＭ２０２では、「ｈｔｍｌ」ノード２０４はＨＴＭＬページ１３２中の＜ｈｔｍｌ＞要素に対応し、「ｂｏｄｙ」ノード２０６はＨＴＭＬページ１３２中の＜ｂｏｄｙ＞要素に対応し、「テキスト１」ノード２０８はＨＴＭＬページ１３２中の「テキスト１」に対応し、「Ｊｓ１．ｊｓ」ノード２１０はＨＴＭＬページ１３２中の＜ｊｓ１．ｊｓ＞要素に対応し、「Ｃｓｓ１．ｃｓｓ」ノード２１２はＨＴＭＬページ１３２中の＜ｌｉｎｋ  ｃｓｓ１．ｃｓｓ＞要素に対応する。ＨＴＭＬページ１３２はまた、２つの終了タグ、＜／ｂｏｄｙ＞と＜／ｈｔｍｌ＞とを含む。ＤＯＭはスタイルへのプログラマチックアクセスを与える。ＤＯＭ中のＣＳＳオブジェクトは「ライブ」であり、すなわち、スタイルシートの変更は、計算されたおよび実際のスタイル中に反映される。したがって、個々の要素に対するインラインスタイルおよびスタイルルールは、単純なスクリプトベースプログラミングを使用して変更され得る。スクリプトは、たとえば、ＪａｖａＳｃｒｉｐｔ、Ｍｉｃｒｏｓｏｆｔ  ＪＳｃｒｉｐｔ、またはＭｉｃｒｏｓｏｆｔ  Ｖｉｓｕａｌ  Ｂａｓｉｃ  Ｓｃｒｉｐｔｉｎｇ  Ｅｄｉｔｉｏｎ（ＶＢＳｃｒｉｐｔ）で書かれ得る。
【００３１】
Ａ．元のＤＯＭに基づいて最終ＤＯＭを構築する
[0036]クライアントブラウザ１１０は、ＨＴＭＬページ１３２中で発見されるサブリソースをダウンロードする。例示的なサブリソースは、ＨＴＭＬページ１３２中に含まれる１つまたは複数の要素に適用され得るルールである。例示的なルールはＣＳＳ要素とＪａｖａＳｃｒｉｐｔスクリプトとを含む。クライアントブラウザ１１０は、ＨＴＭＬページ１３２がロードする間に、またはＨＴＭＬページ１３２がロードした直後にサブリソースをコンパイルおよび実行し得る。サブリソースのコンパイルおよび実行は、同期動作であり得る。サブリソースのコンパイルおよび実行中に、クライアントブラウザ１１０は、たとえば、ＣＳＳ要素を処理し、画像を処理し、および／またはＪａｖａＳｃｒｉｐｔスクリプトを実行し得る。
【００３２】
[0037]サブリソースを実行した結果として、クライアントブラウザ１１０は、動的コンテンツを生成するか、ＨＴＭＬタグから追加のＤＯＭノードを構築するか、またはＤＯＭからＤＯＭノードを削除し得る。動的コンテンツをもつウェブページが完全にロードされた後、その段階におけるＤＯＭは最終ＤＯＭと呼ばれることがあり、最終ＤＯＭは、元のＨＴＭＬページ１３２において定義された静的コンテンツだけでなく、サブルールによって生成された、新たに追加されたおよび／または変更された動的コンテンツ（たとえば、ＪａｖａＳｃｒｉｐｔスクリプト、ＣＳＳにおいて指定されたスタイルなど）をも含んでいる。この段階で、最終ＤＯＭ要素のスタイルは、すでに解決されている。
【００３３】
[0038]図２では、クライアントブラウザ１１０はＨＴＭＬページ１３２を処理し、ウェブページの動的コンテンツを組み込む最終ＤＯＭ２２０を生成する。ＪａｖａＳｃｒｉｐｔを実行することは、サーバ１２０から送られた元のＨＴＭＬページ１３２中にない追加のＤＯＭノードを追加し得る。最終ＤＯＭ２２０を生成するために、クライアントブラウザ１１０は、（ＨＴＭＬページ１３２中の「ｊｓ１．ｊｓ」要素に関連する）「Ｊｓ１．ｊｓ」ノード２１０によって表されるＪａｖａＳｃｒｉｐｔを実行し、スクリプトを実行したことに応答して「ｆｏｒｍ」ノード２２２によって表される動的コンテンツを生成する。「Ｊｓ１．ｊｓ」ノード２１０によって表されるＪａｖａＳｃｒｉｐｔスクリプトは、ＨＴＭＬバイトストリーム中の「＜ｆｏｒｍ＞」タグを追加すること（たとえば、ｄｏｃｕｍｅｎｔ．ｗｒｉｔｅ（））によって、または「ｆｏｒｍ」ＤＯＭノードを元のＤＯＭ２０２に直接追加することによって）元のＤＯＭ２０２に「ｆｏｒｍ」を動的に追加する。図２に示されているように、最終ＤＯＭ２２０は、元のＤＯＭ２０２中に含まれない「ｆｏｒｍ」ノード２２２を含む。元のＤＯＭ２０２と同様に、最終ＤＯＭ２２０は、ノード、「ｈｔｍｌ」ノード２０４と、「ｂｏｄｙ」ノード２０６と、「テキスト１」ノード２０８と、「Ｊｓ１．ｊｓ」ノード２１０と、「Ｃｓｓ１．ｃｓｓ」ノード２１２とを含む。これらのノードに加えて、最終ＤＯＭ２２０はまた、「ｆｏｒｍ」ノード２２２を含む。クライアントブラウザ１１０は、ＨＴＭＬページ１３２中の適切なＨＴＭＬタグに、「Ｃｓｓ１．ｃｓｓ」ノード２１２によって指定されたスタイルを適用し、最終ＤＯＭ２２０をユーザにレンダリングする。
【００３４】
Ｂ．最終ＤＯＭをシリアル化する
[0039]クライアントブラウザ１１０は、最終ＤＯＭの視覚表現に対応するＤＯＭを構築することによって最終ＤＯＭ２２０をレンダリングし、クライアントブラウザ１１０に結合されたデバイスのディスプレイ上にそれをペイントする。クライアントブラウザ１１０は、シリアル化最終ＤＯＭ２３０を構築することと、それをファイルにシリアル化することとによって、最終ＤＯＭ２２０をシリアル化し得る。本開示でさらに説明するように、真の動的コンテンツと静的な動的コンテンツとを識別し、ウェブページを迅速にレンダリングするために、シリアル化最終ＤＯＭをシリアル化することは有利であり得る。
【００３５】
１．最終ＤＯＭの視覚表現に対応するシリアル化最終ＤＯＭを構築する
[0040]クライアントブラウザ１１０は、最終ＤＯＭ２２０中の動的コンテンツを識別することと、最終ＤＯＭ２２０から、動的コンテンツを含むルールのセットを表すノード（たとえば、「Ｊｓ１．ｊｓ」ノード２１０および「Ｃｓｓ１．ｃｓｓ」ノード２１２）を削除することと、動的コンテンツをシリアル化最終ＤＯＭ２３０にインライン化することとによってシリアル化最終ＤＯＭ２３０を生成し得る。したがって、クライアントブラウザ１１０は、最終ＤＯＭ２２０からＪａｖａＳｃｒｉｐｔスクリプトとＣＳＳスタイルとを削除し、シリアル化最終ＤＯＭ２３０中のこの動的コンテンツをインライン化する。いくつかの例では、クライアントブラウザ１１０は、最終ＤＯＭ２２０中の１つまたは複数の非インラインルールをインラインルールに移動することによってシリアル化最終ＤＯＭ２３０を生成する。
【００３６】
[0041]シリアル化最終ＤＯＭ２３０は、ノード２０４、２０６、２０８’、および２２２’を含む。最終ＤＯＭ２２０中のノード２０４および２０６は、シリアル化最終ＤＯＭ２３０中のノード２０４および２０６と同じであり得る。最終ＤＯＭ２２０中の「Ｃｓｓ１．ｃｓｓ」ノード２１２によって表される適切なスタイルは、適切なＨＴＭＬタグ／ＤＯＭノード（たとえば、最終ＤＯＭ２２０中の「テキスト１」ノード２０８および／または「ｆｏｒｍ」ノード２２２によって表されるテキスト）に適用される。インラインスタイルは、スタイル属性を使用して（１つまたは複数の）ＨＴＭＬ要素に適用されたＣＳＳスタイル割当てである。いくつかの例では、クライアントブラウザ１１０は、ＨＴＭＬページ１３２中の「＜ｌｉｎｋ  ｃｓｓ１．ｃｓｓ＞」要素によって表されるロケーションにおいて記憶された外部ＣＳＳファイルのコンテンツをコピーすることによってＣＳＳスタイルをインライン化し、ＨＴＭＬページ１３２のヘッドセクション中のスタイルタグ間にコンテンツをペーストし得る。
【００３７】
２．最終ＤＯＭをファイルにシリアル化する
[0042]クライアントブラウザ１１０は、シリアル化最終ＤＯＭ２３０を、要素のスタイルのすべてがインライン化されたシリアル化ファイル２４０（たとえば、ＨＴＭＬファイル）にシリアル化し得る。最終ＤＯＭ２２０のシリアライゼーションであるシリアル化ファイル２４０は、正しいスタイルをもつ、静的コンテンツと動的コンテンツの両方を含んでいる「フラットにされた」ファイルである。シリアル化ファイル２４０は、ユーザに最終的に表示される「本当のウェブページ」と同等のコンテンツを示すＨＴＭＬファイルであり得る。クライアントブラウザ１１０は、後の取出しおよびローディングのためにシリアル化ファイル２４０をキャッシュに記憶する。次回、ＨＴＭＬページ１３２に関連するＵＲＬによって参照されるウェブページを表示するようにとの要求を受信すると、クライアントブラウザ１１０はシリアル化ファイル２４０をロードし得る。シリアル化ファイル２４０は、ＨＴＭＬページ１３２と同じ外観を有するが、ルールを適用し、および／または外部ソースを探索することが不要であるので、はるかに高速に表示され得る。たとえば、クライアントブラウザ１１０がＪａｖａＳｃｒｉｐｔを実行するかまたはＣＳＳ要素を適用することは不要であり得、それらは、一般に、ウェブページを表示する際の時間がかかるステップである。したがって、ウェブページが要求される次回には、より高速なページ表示が達成され得る。
【００３８】
[0043]同じウェブページのシリアル化最終ＤＯＭが利用可能である場合、シリアル化ファイルは、本当のウェブページがバックグラウンドにおいてロードしている間、最初に（より高速に）表示され得る。本当のウェブページは、それがバックグラウンドにおけるローディングが終了したとき、表示され得る。しかしながら、シリアル化ファイル２４０は、古い情報を示し得る。たとえば、ウェブサイトがニュースフィードを含む場合、ユーザは古くなったニュースフィードを示され得る。古い情報の表示を回避するために、クライアントブラウザ１１０は、シリアル化ファイル２４０中の動的コンテンツを識別し、動的コンテンツの一部を削除するか、あるいはそれを一般的なおよび／またはダミーのプレースホルダーと交換し得る。
【００３９】
[0044]動的コンテンツを識別するために、クライアントブラウザ１１０は、ＨＴＭＬドキュメント中のルール（たとえば、ＪａｖａＳｃｒｉｐｔおよびＣＳＳ要素）のいずれかを適用する前に最終ＤＯＭと元のメイン（main）ＨＴＭＬの対応する元のＤＯＭとの間の差分を識別し得る。クライアントブラウザ１１０は、最終ＤＯＭ２２０と元のＤＯＭ２０２との間の差分を決定し、最終ＤＯＭから差分を削除し、最終ＤＯＭを表示し得、ただし、差分は動的コンテンツである。しかしながら、この手法は、すべての動的コンテンツ（真の動的コンテンツと静的な動的コンテンツの両方）を削除し得る。正味効果は、ブラウザ中のＪａｖａＳｃｒｉｐｔを無効にし、次いで元のＨＴＭＬをロードすることと同様であり得る。さらに、元の生のＨＴＭＬではなく、最終ＤＯＭ中に保持されるスタイルがＪａｖａＳｃｒｉｐｔによっても変更され得るので、正味効果は異なり得る。多くの静的な動的コンテンツを有するウェブサイトの場合、ユーザインターフェース要素のいずれも、またはほとんどいずれもユーザに表示されないので、ほとんど何もユーザに示されないことがある。したがって、真の動的コンテンツと静的な動的コンテンツとを区別し、真の動的コンテンツのみを削除することが望ましいことがある。
【００４０】
[0045]いくつかの実施形態では、シリアル化ＤＯＭを生成する方法は、第１のウェブドキュメントをパースすることを含む。第１のウェブドキュメントはマークアップ言語でのものであり、要素のセットとルールのセットとを含み得る。本方法はまた、要素のセットのうちの１つまたは複数の要素にルールのセットを適用することと、ウェブドキュメントをパースし、ウェブドキュメントにルールのセットを適用することに従って、最終ＤＯＭを構築することとを含み得る。本方法は、最終ＤＯＭをコンピューティングデバイスのディスプレイ上にレンダリングすることと、最終ＤＯＭ中に含まれるルールのセットを識別することとをさらに含み得る。本方法はまた、最終ＤＯＭからルールのセットを削除することと、最終ＤＯＭを第２のウェブドキュメントにシリアル化することとを含み得る。シリアル化最終ＤＯＭはブラウザのキャッシュ中にキャッシュされ得る。
【００４１】
Ｃ．真の動的コンテンツと静的な動的コンテンツとを識別および処理する
[0046]古い情報の表示を回避するために、クライアントブラウザ１１０は、シリアル化ファイル２４０中の真の動的コンテンツと静的な動的コンテンツとを識別し、静的な動的コンテンツの少なくとも一部を削除するか、あるいはそれを一般的なおよび／またはダミーのプレースホルダーと交換する。真の動的コンテンツを識別するために、クライアントブラウザ１１０は、クライアントブラウザ１１０が同じＵＲＬのうちの１つまたは複数に対応するウェブページをロードするたびに、ウェブページロードに関連する最終ＤＯＭを維持し、それぞれの最終ＤＯＭを記憶し得る。各ページロードの後に、クライアントブラウザ１１０は、後で使用するためにシリアル化ファイル２４０（たとえば、ＨＴＭＬファイル中のシリアル化されたシリアル化最終ＤＯＭ）を保存し得る。
【００４２】
[0047]一例では、クライアントブラウザ１１０は、クライアントブラウザ１１０が同じウェブページ（同じＵＲＬによって参照されるウェブページ）をロードするたびに、同じウェブページについての要求に関連する複数の最終ＤＯＭを生成し、それぞれの最終ＤＯＭをキャッシュに記憶する。クライアントブラウザ１１０は、次いで、同じウェブページのための複数の最終ＤＯＭ間の差分を決定する。異なる比較された複数の最終ＤＯＭ中の部分は、真の動的コンテンツとして識別され得る。
【００４３】
[0048]図３は、いくつかの実施形態による、ウェブドキュメント中の真の動的コンテンツを識別するためのプロセスフロー３００である。図３はシリアル化最終ＤＯＭ３０２とシリアル化最終ＤＯＭ３０４とを含む。シリアル化最終ＤＯＭ３０２および３０４は、上記のように生成され得、同じＵＲＬに関連する。シリアル化最終ＤＯＭ３０２および３０４は、同じウェブページのためのシリアル化最終ＤＯＭのバージョンであり得、メモリに維持および記憶される。
【００４４】
[0049]シリアル化最終ＤＯＭ３０２は、「ｈｔｍｌ」ノード３０６と、「ｂｏｄｙ」ノード３０８と、「＜Ｍｅｎｕ＞」ノード３１０と、「＜ｆｅｅｄ＞」ノード３１２と、「項目１」ノード３１４と、「項目２」ノード３１６と、「ニュースＡ」ノード３１８とを含む。シリアル化最終ＤＯＭ３０４は、「ｈｔｍｌ」ノード３０６と、「ｂｏｄｙ」ノード３０８と、「＜Ｍｅｎｕ＞」ノード３１０と、「＜ｆｅｅｄ＞」ノード３１２と、「項目１」ノード３１４と、「項目２」ノード３１６と、「ニュースＢ」ノード３２０とを含む。「ｈｔｍｌ」ノード３０６、「ｂｏｄｙ」ノード３０８、「＜Ｍｅｎｕ＞」ノード３１０、および「＜ｆｅｅｄ＞」ノード３１２は、ＨＴＭＬ要素／サブツリーを表す「静的」ノードであり得る。「項目１」ノード３１４、「項目２」ノード３１６、「ニュースＡ」ノード３１８、および「ニュースＢ」ノード３２０は、ＪａｖａＳｃｒｉｐｔによって生成された動的コンテンツであり得る。クライアントブラウザ１１０が１日目および２日目にソーシャルメディアウェブサイトからウェブページをロードすべきであった場合、クライアントブラウザ１１０は、これらの２つのウェブページロードに関連するシリアル化最終ＤＯＭ３０２とシリアル化最終ＤＯＭ３０４の両方のバージョンをキャッシュまたはデータベースに記憶し得る。
【００４５】
[0050]一例では、クライアントブラウザ１１０は、シリアル化最終ＤＯＭ３０２とシリアル化最終ＤＯＭ３０４とを比較し、変化した１つまたは複数の部分を識別する。１つまたは複数の識別された部分は、シリアル化最終ＤＯＭにわたる真の動的コンテンツである。シリアル化最終ＤＯＭ３０２は「ニュースＡ」コンテンツを含み、シリアル化最終ＤＯＭ３０４は「ニュースＢ」コンテンツを含む。したがって、「ニュースＸ」は真の動的コンテンツとして識別される。真の動的コンテンツ（たとえば、ニュースのニュースフィードおよびコンテンツ）は２つのシリアル化最終ＤＯＭ間で異なるが、静的な動的コンテンツ（たとえば、ユーザインターフェース要素）は同じままである。クライアントブラウザ１１０がシリアル化最終ＤＯＭ３０２をキャッシュし、シリアル化最終ＤＯＭ３０４ではなくそれをユーザに表示すべきであった場合、ユーザは、（「ニュースＢ」コンテンツによって表される）最新のニュースフィードではなく、（「ニュースＡ」コンテンツによって表される）古いニュースフィードを提示され得る。ユーザに古い情報を表示することを回避するために、クライアントブラウザ１１０は、共通シリアル化最終ＤＯＭ３３０を生成するために真の動的コンテンツを削除する。共通シリアル化最終ＤＯＭ３３０は、真の動的コンテンツがシリアル化最終ＤＯＭ３０２またはシリアル化最終ＤＯＭ３０４から削除されたＤＯＭである。
【００４６】
[0051]いくつかの例では、クライアントブラウザ１１０は、シリアル化最終ＤＯＭ３０２（またはシリアル化最終ＤＯＭ３０４）から真の動的コンテンツを表すノードを削除することによって、真の動的コンテンツを削除する。真の動的コンテンツを表すノードが削除された場合、ウェブページのレイアウトは変化し得る。たとえば、大きいバナー画像が真の動的コンテンツであり得、大きいバナー画像が削除された場合、ウェブページのレイアウトの残りは、ユーザにとって奇妙に見え得る。図３に示されている例では、真の動的コンテンツ表すノード（たとえば、ノード３１８）を削除するのではなく、クライアントブラウザ１１０は、真の動的コンテンツを表すノードを、プレースホルダー要素として働くダミーノード３３２と交換し得る。ダミーノード３３２は、ウェブページレイアウトを前と同じように保つために同じサイズ（さらには、たとえばそれが大きい画像である場合、配色）を有する。
【００４７】
[0052]真の動的コンテンツはまた、サブＤＯＭから削除され得る。たとえば、ｉＦｒａｍｅはそれら自体のサブＤＯＭを有し得、ＨＴＭＬドキュメントは、一般にキャッシュ可能でない。したがって、クライアントブラウザ１１０は、ｉＦｒａｍｅを共通シリアル化最終ＤＯＭ中に保ち得るか、またはソースＵＲＬが変化しない場合、ｉＦｒａｍｅを等しいサイズのダミーノードと交換し得る。
【００４８】
[0053]真の動的コンテンツ（たとえば、「ニュースＸ」）を表すノードを削除することによって真の動的コンテンツを削除したか、またはノードをダミーノードと交換した後に、シリアル化最終ＤＯＭの残りは、できるだけ少数の古いコンテンツを用いて表示され得る。共通シリアル化最終ＤＯＭ３３０は、潜在的に古いコンテンツを含まない。元のＨＴＭＬページ（ウェブサイトからダウンロードされた実際のＨＴＭＬページ）とシリアル化最終ＤＯＭのＨＴＭＬとの間の差分を識別することによって、またはシリアル化最終ＤＯＭの異なるバージョン間の差分を識別することによって、共通シリアル化最終ＤＯＭは、真の動的コンテンツを含んでいることなしに生成され得る。シリアル化最終ＤＯＭの比較は、真の動的コンテンツを除外するために、最終ＤＯＭを改良するように異なる時間に実行され得る。さらに、シリアル化最終ＤＯＭの３つ以上の異なるバージョンが比較され得る。
【００４９】
Ｄ．シリアル化最終ＤＯＭ管理および配信のための機構
[0054]いくつかの実施形態では、クライアント側で、クライアントブラウザ１１０は、シリアル化最終ＤＯＭを、ウェブページのＵＲＬによってインデックス付けされたローカルキャッシュまたはデータベースに保存し得る。クライアントブラウザ１１０はまた、シリアル化最終ＤＯＭについての有効期限を設定し得る。シリアル化最終ＤＯＭの異なるバージョン間の（１つまたは複数の）差分を識別することは、バックグラウンドにおいて周期的に実行され得る。一例では、ウェブページがロードされるたびに、ローカルキャッシュまたはデータベースは、ＵＲＬを使用して、同じＵＲＬのシリアル化最終ＤＯＭが使用され得るかどうかを決定するために照会され得る。クライアントブラウザ１１０は、同じＵＲＬが要求される次回に使用されるべき、クライアントからのメタデータをサーバが受け付けた場合、シリアル化最終ＤＯＭをサーバにもサブミットし得る。
【００５０】
[0055]上記で説明したように、各ページロードの後に、シリアル化最終ＤＯＭ  ＨＴＭＬは、後で使用するために生成され、記憶され得る。このシリアル化最終ＤＯＭ生成および比較は、（クライアントブラウザ１１０中の）クライアント側またはサーバ側（たとえば、ウェブプロキシまたはＣＤＮエッジサーバ）のいずれかにおいて実行され得る。したがって、クライアントブラウザ１１０について、最終ＤＯＭとシリアル化最終ＤＯＭとを生成および／または記憶するものとして説明するが、サーバが最終ＤＯＭおよび／またはシリアル化最終ＤＯＭを同様に（たとえば、コンテンツ配信ネットワーク（ＣＤＮ）中で）生成および／または記憶し得ることをも理解されたい。たとえば、ウェブページが要求されるたびに、ＣＤＮは、ヒットの時間にシリアル化最終ＤＯＭをキャッシュし得る。
【００５１】
[0056]いくつかの実施形態では、サーバ側で、サーバ（たとえば、ＣＤＮエッジサーバまたはプロキシサーバ）は、複数のユーザから同じＵＲＬについての要求を受信し得る。一例では、ＵＲＬ要求がサーバによってサービスされるたびに、サーバは、シリアル化最終ＤＯＭサーバ側を生成し、そのＵＲＬについてサーバ上にシリアル化最終ＤＯＭを保存する。サーバは、たとえば、ＰｈａｎｔｏｍＪＳなどのヘッドレスブラウザを使用することによって、最終ＤＯＭを生成し得る。
【００５２】
[0057]図４は、いくつかの実施形態による、２つのウェブページ間の差分を与えるための、クライアントとサーバとの間の通信の例示的なスイム図である。図４では、サーバ「ａ．ｃｏｍ」４０６が、クライアントブラウザ１１０および４１０から複数の要求を受信する。クライアントブラウザ１１０は、ＵＲＬ「ｈｔｔｐ：／／ａ．ｃｏｍ」４０２によって参照されるウェブページ４０８についての要求を送り得る。要求はクライアントブラウザ１１０からＣＤＮサーバ４０４に送られ得、ＣＤＮサーバ４０４は要求をサーバ「ａ．ｃｏｍ」４０６に渡し、サーバ「ａ．ｃｏｍ」４０６は、ＵＲＬ「ｈｔｔｐ：／／ａ．ｃｏｍ」４０２によって参照されるウェブページ４０８を記憶する。サーバ「ａ．ｃｏｍ」４０６は（ｉｎｄｅｘ．ｈｔｍｌ（１）によって表される）ウェブページ４０８をＣＤＮサーバ４０４に送り、ＣＤＮサーバ４０４はウェブページをクライアントブラウザ１１０に渡す。ＣＤＮサーバ４０４は、「ｉｎｄｅｘ．ｈｔｍｌ（１）」に基づいてシリアル化最終ＤＯＭ４２０を生成し、ＵＲＬ「ｈｔｔｐ：／／ａ．ｃｏｍ」４０２についてＣＤＮサーバ４０４上にシリアル化最終ＤＯＭ４２０を保存し得る。
【００５３】
[0058]後の時点において、クライアントブラウザ４１０は、ＵＲＬ「ｈｔｔｐ：／／ａ．ｃｏｍ」４０２によって参照されるウェブページ４０８についての要求を送り得る。要求はクライアントブラウザ４１０からＣＤＮサーバ４０４に送られ得、ＣＤＮサーバ４０４は要求をサーバ「ａ．ｃｏｍ」４０６に渡す。サーバ「ａ．ｃｏｍ」４０６は（ｉｎｄｅｘ．ｈｔｍｌ（２）によって表される）ウェブページ４０８をＣＤＮサーバ４０４に送り、ＣＤＮサーバ４０４はウェブページをクライアントブラウザ１１０に渡す。ＣＤＮサーバ４０４は、「ｉｎｄｅｘ．ｈｔｍｌ（２）」に基づいてシリアル化最終ＤＯＭ４３０を生成し、ＵＲＬ「ｈｔｔｐ：／／ａ．ｃｏｍ」４０２についてＣＤＮサーバ４０４上にシリアル化最終ＤＯＭ４３０を保存し得る。
【００５４】
[0059]同じＵＲＬ（たとえば、「ｈｔｔｐ：／／ａ．ｃｏｍ）であるが、異なるユーザ（たとえば、クライアントブラウザ１１０および４１０）のためのシリアル化最終ＤＯＭ（たとえば、シリアル化最終ＤＯＭ４２０およびシリアル化最終ＤＯＭ４３０）の異なるバージョンは、最後のシリアル化最終ＤＯＭがすべてのユーザに共通であるコンテンツのみを含み得るように、異なるコンテンツを識別するために互いと比較され得る。真の動的コンテンツを含んでいない最後のシリアル化最終ＤＯＭは、共通シリアル化最終ＤＯＭと呼ばれることがある。
【００５５】
[0060]ＣＤＮサーバ４０４は、シリアル化最終ＤＯＭを生成し、シリアル化最終ＤＯＭの異なるバージョンを互いと比較し続け得る。図４では、ＣＤＮサーバ４０４は、図３に関して説明したように、シリアル化最終ＤＯＭ４２０および４３０の（１つまたは複数の）差分を決定するために、シリアル化最終ＤＯＭ４２０および４３０を生成し、それらを比較する。ＣＤＮサーバ４０４は、真の動的コンテンツであるものとして、シリアル化最終ＤＯＭ４２０とシリアル化最終ＤＯＭ４３０との間の、「差分＝Ｓ（インデックス１）−（インデックス２）」として書かれ得る（１つまたは複数の）差分を識別し、（たとえば、シリアル化最終ＤＯＭ４２０または４３０から真の動的コンテンツを表すノードを削除することによって、あるいは真の動的コンテンツを表すノードを、シリアル化最終ＤＯＭ４２０または４３０中のダミーノードと交換することによって）シリアル化最終ＤＯＭ４２０または４３０のうちの１つから真の動的コンテンツを削除し得る。
【００５６】
[0061]シリアル化最終ＤＯＭの変化していない（１つまたは複数の）部分が安定した後、ＣＤＮサーバ４０４は、シリアル化最終ＤＯＭ４２０とシリアル化最終ＤＯＭ４３０との間の（１つまたは複数の）差分を削除する共通シリアル化最終ＤＯＭ４４０を生成し、共通シリアル化最終ＤＯＭをクライアントにサービスし得る。共通シリアル化最終ＤＯＭ４４０は、「ｓ．ｉｎｄｅｘ．ｈｔｍｌ＝Ｓ（インデックス１）−差分」によって表される。後の時点において、クライアントブラウザ４１０は、ウェブページ４０８についての別の要求を送り得る。
【００５７】
Ｅ．要求されたウェブページを表示するための機構
[0062]本開示で説明する技法を使用して、ウェブページは様々な方法でレンダリングされ得る。一例では、この要求に応答して、ＣＤＮサーバ４０４は、動的コンテンツを含まない共通シリアル化最終ＤＯＭ４４０をクライアントブラウザ４１０にサービスし得る。ＣＤＮサーバ４０４は、異なるＵＲＬ４４２を使用して共通シリアル化最終ＤＯＭ４４０をクライアントブラウザ４１０に配信し得る。別の例では、ＣＤＮサーバ４０４は、ＪａｖａＳｃｒｉｐｔディスプレイマネージャによって使用されるべき真の動的コンテンツをメインＨＴＭＬに埋め込むかまたはインライン化し得る。したがって、共通シリアル化最終ＤＯＭは、クライアントにおいておよび／またはサーバにおいて生成され、別個のＵＲＬを通してクライアントに配信されるか、またはメインＨＴＭＬドキュメント中に埋め込まれ得る。
【００５８】
１．デュアルレンダリングプロセス手法
[0063]いくつかの実施形態では、クライアントブラウザ１１０は、ウェブページを表示するためにデュアルレンダリングプロセス手法を使用し得る。図５に、いくつかの実施形態による、デュアルレンダリングプロセス手法を使用して共通シリアル化最終ＤＯＭと本当のウェブページとを表示するための例示的なプロセスフローを示す。図５では、クライアントブラウザ１１０はサーバに「ｆｏｏ．ｃｏｍ」を要求する。要求に応答して、クライアントブラウザ１１０は、２つのレンダリングプロセス、キャッシュまたはサーバ（たとえば、ＣＤＮサーバ４０４またはプロキシサーバ）のいずれかに共通シリアル化最終ＤＯＭを要求し、レンダリングするためのプロセスと、ユーザに表示されるべきである本当のウェブページのためのプロセスとを作成し得る。
【００５９】
[0064]第１のレンダリングプロセスは「高速プロセス」であり、ウェブページが迅速にレンダリングされているという錯覚の達成するために使用される。第１のレンダリングプロセスでは、クライアントブラウザ１１０は、（「ｓ．ｆｏｏ．ｃｏｍ」を使用して）キャッシュまたはサーバのいずれかから共通シリアル化最終ＤＯＭをロードし、最初にユーザに共通シリアル化最終ＤＯＭを表示する。したがって、クライアントブラウザ１１０は、最初に「ｓ．ｆｏｏ．ｃｏｍ」によって参照されるウェブページを表示する。ユーザは、動的コンテンツ（たとえば、ＪａｖａＳｃｒｉｐｔまたはＣＳＳ要素）が削除されているので、ウェブページ中の静的な動的コンテンツを迅速に閲覧することが可能である。第２のレンダリングプロセスは「完全なプロセス」であり、バックグラウンドにおいて本当のウェブページを要求し、レンダリングするために使用される。第２のレンダリングプロセスでは、クライアントブラウザ１１０は、（「ｆｏｏ．ｃｏｍ」を使用して）本当のウェブページをロードするが、それはユーザにまだ示されない。クライアントブラウザ１１０は、それが本当のウェブページのそれのレンダリングを完了したとき、ユーザに本当のウェブページを表示し、ユーザに最終的に示されるウェブページが壊れていないことを保証する。
【００６０】
[0065]再び図４を参照すると、およびデュアルレンダリングプロセス手法を使用して、ＵＲＬ「ｈｔｔｐ：／／ａ．ｃｏｍ」４０２によって参照されるウェブページがロードされる次回、クライアントブラウザ１１０はフォアグラウンドにおいてユーザに共通シリアル化最終ＤＯＭ４４０を表示し得るが、バックグラウンドプロセスはバックグラウンドにおいて実際のウェブページをレンダリングする。共通シリアル化最終ＤＯＭ４４０はシリアル化最終ＤＯＭの現在のバージョンであり、クライアントブラウザ１１０は、バックグラウンドにおいてシリアル化最終ＤＯＭの前のバージョンとシリアル化最終ＤＯＭの現在のバージョンとの間の別の差分を実行する。したがって、クライアントブラウザ１１０は、シリアル化最終ＤＯＭと本当のウェブページの両方を処理するためのプロセスをレンダリングするが、最初にシリアル化最終ＤＯＭを示し得る。
【００６１】
２．埋込みＪａｖａＳｃｒｉｐｔ手法
[0066]いくつかの実施形態では、クライアントブラウザ１１０は埋込みＪａｖａＳｃｒｉｐｔ手法を使用し得る。埋込みＪａｖａＳｃｒｉｐｔ手法では、シリアル化最終ＤＯＭコンテンツは、ウェブページのメインＨＴＭＬ中に埋め込まれる。したがって、ウェブページは、ＪａｖａＳｃｒｉｐｔをも含む。クライアントブラウザ１１０は、最初にシリアル化最終ＤＯＭコンテンツを表示し、次いで、本当のウェブページを表示することに移る。埋込みＪａｖａＳｃｒｉｐｔ手法は、シリアル化最終ＤＯＭがサーバ側から入手可能である場合に実行され得る。サーバは、シリアル化最終ＤＯＭを元のＨＴＭＬの中に埋め込むことによって元のＨＴＭＬを変更し得、クライアントブラウザ１１０は、異なる時間にシリアル化最終ＤＯＭと本当のウェブページとをロードし、表示するために、ＪａｖａＳｃｒｉｐｔを使用し得る。
【００６２】
ＩＶ．例示的な方法
[0067]図６は、いくつかの実施形態による、ウェブページをレンダリングする方法６００を示すフローチャートである。方法６００は、限定するものではなく、他の適用例において使用され得る。
【００６３】
[0068]図６では、方法６００はブロック６０２〜６０８を含む。ブロック６０２において、ロケーションによって参照される第１のウェブドキュメントを処理することに基づいて第１のシリアル化最終ＤＯＭが生成され、第１のシリアル化最終ＤＯＭは第１のインライン化動的コンテンツを含む。一例では、クライアントブラウザ１１０は、ＵＲＬによって参照されるＨＴＭＬページ１３２を処理することに基づいてシリアル化最終ＤＯＭ３０２を生成し、シリアル化最終ＤＯＭ３０２はインライン化動的コンテンツを含む。ブロック６０４において、ロケーションによって参照される第２のウェブドキュメントを処理することに基づいて第２のシリアル化最終ＤＯＭが生成され、第２のシリアル化最終ＤＯＭは第２のインライン化動的コンテンツを含む。一例では、クライアントブラウザ１１０は、ロケーションによって参照される第２のウェブドキュメントを処理することに基づいてシリアル化最終ＤＯＭ３０４を生成し、シリアル化最終ＤＯＭ３０４は第２のインライン化動的コンテンツを含む。
【００６４】
[0069]ブロック６０６において、第１のシリアル化最終ＤＯＭと第２のシリアル化最終ＤＯＭとの間の差分に基づいて共通シリアル化最終ＤＯＭが生成され、共通シリアル化最終ＤＯＭは、第１のシリアル化最終ＤＯＭと第２のシリアル化最終ＤＯＭとの中に含まれる静的な動的コンテンツを含み、差分は真の動的コンテンツである。一例では、クライアントブラウザ１１０は、シリアル化最終ＤＯＭ３０２とシリアル化最終ＤＯＭ３０４との間の差分に基づいて共通シリアル化最終ＤＯＭ３３０を生成し、共通シリアル化最終ＤＯＭ３３０は、シリアル化最終ＤＯＭ３０２および３０４中に含まれる静的な動的コンテンツを含み、差分は真の動的コンテンツである。ブロック６０８において、共通シリアル化最終ＤＯＭはデバイスのディスプレイにレンダリングされる。一例では、クライアントブラウザ１１０は、共通シリアル化最終ＤＯＭ３３０をデバイスのディスプレイにレンダリングする。
【００６５】
[0070]いくつかの実施形態では、ブロック６０２〜６０８に示されている１つまたは複数のアクションは、クライアントブラウザ１１０によってロードされる任意の数のウェブページのために実行され得る。さらにまた、上記で説明したブロック６０２〜６０８の前に、それらの間に、またはそれらの後に追加のプロセスが挿入され得ることを理解されたい。また、本明細書で説明する方法６００のブロックのうちの１つまたは複数は、必要に応じて省略されるか、組み合わせられるか、または異なるシーケンスにおいて実行され得ることを理解されたい。
【００６６】
[0071]図１〜図６は例にすぎず、特許請求の範囲を過度に限定すべきではない。たとえば、簡潔のために、本開示は、クライアントアプリケーションについてクライアントブラウザであるものとして説明し得るが、これは限定するものではなく、他のクライアントアプリケーションが本開示の範囲内であることを理解されたい。
【００６７】
[0072]本開示は古いコンテンツを回避しながら、極めて動的なウェブサイトの高速レンダリングを達成するための技法を提供する。さらに、異なる態様からの手法が、ワーキングフレームワークを形成するために組み合わせられ得る。一例では、クライアントブラウザは、すべての真の動的コンテンツが削除された、サーバ側で生成されたシリアル化最終ＤＯＭを利用するためにデュアルレンダリング手法を採用し得る。別の例では、ブラウザは、動的コンテンツのないすべてのシリアル化最終ＤＯＭをキャッシュし得る。さらに、キャッシュ中のコンテンツと、クライアントブラウザによって要求されたコンテンツと、サーバによって返されたコンテンツとを見ることによって、クライアントブラウザ１１０は、シリアル化最終ＤＯＭ、または高速レンダリングを可能にするための任意の形態のリソースが配信および処理されているかどうかを識別し得る。
【００６８】
Ｖ．例示的なデバイス
[0073]図７は、本明細書で開示する実施形態のいずれかを実装するのに好適な例示的なコンピュータシステム７００のブロック図である。様々な実装形態では、コンピュータシステム７００はサーバであり得る。様々な実装形態では、クライアントブラウザ１１０はコンピュータシステム７００において動作し得る。
【００６９】
[0074]コンピュータシステム７００は、入出力（Ｉ／Ｏ）７０４構成要素に結合された制御ユニット７０１を含む。制御ユニット７０１は、１つまたは複数の中央処理ユニット（ＣＰＵ）７７０を含み得、１つまたは複数のストレージデバイスをさらに含み得、その各々は、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、他の磁気媒体、ＣＤ−ＲＯＭ、他の光媒体、ランダムアクセスメモリ（ＲＡＭ）、プログラマブル読取り専用メモリ（ＰＲＯＭ）、消去可能ＲＯＭ（ＥＰＲＯＭ）、ＦＬＡＳＨ−ＥＰＲＯＭ、他のメモリチップまたはカートリッジ、および／あるいはプロセッサまたはコンピュータがそれから読み取るように適応された他の媒体を含むグループから選択される。１つまたは複数のストレージデバイスは、コンピュータネットワーク（図示せず）を使用してコンピュータシステム７００に結合された１つまたは複数のコンピューティングデバイスおよび／またはコンピュータプログラム（たとえば、クライアント）にとって利用可能にされ得る記憶された情報を含み得る。コンピュータネットワークは、ＬＡＮ、ＷＡＮ、イントラネット、インターネット、クラウド、ならびに／あるいはシステム中のコンピューティングデバイスおよび／またはコンピュータプログラムを相互接続することが可能であるそれらのネットワークの任意の組合せを含む任意のタイプのネットワークであり得る。
【００７０】
[0075]コンピュータシステム７００は、コンピュータシステム７００の様々な構成要素間で情報データ、信号、および情報を通信するためのバス７０２または他の通信機構を含む。構成要素は、キーパッド／キーボードからキーを選択すること、あるいは１つまたは複数のボタンまたはリンクなどを選択することなど、ユーザアクションを処理するための入出力（Ｉ／Ｏ）構成要素７０４を含み、バス７０２に対応する信号を送る。Ｉ／Ｏ構成要素７０４はまた、ディスプレイ７１１などの出力構成要素と、（キーボード、キーパッド、マウスなどの）カーソル制御７１３などの入力制御とを含み得る。オーディオ信号を情報信号に変換することによってユーザが情報を入力するために音声を使用することを可能にするために、オーディオＩ／Ｏ構成要素７０５も含まれ得る。オーディオＩ／Ｏ構成要素７０５は、ユーザがオーディオを聞くことを可能にし得る。
【００７１】
[0076]トランシーバまたはネットワークインターフェース７０６が、ネットワークへの通信リンク７１８を介してコンピュータシステム７００と他のデバイスとの間で信号を送信および受信する。一実施形態では、送信はワイヤレスであるが、他の伝送媒体および方法も好適であり得る。さらに、ディスプレイ７１１は、通信リンク７１８を介して制御ユニット７０１に結合され得る。
【００７２】
[0077]マイクロコントローラ、デジタル信号プロセッサ（ＤＳＰ）、または他の処理構成要素であり得るＣＰＵ７７０は、コンピュータシステム７００のディスプレイ７１１上での表示、または通信リンク７１８を介した他のデバイスへの送信などのために、これらの様々な信号を処理する。ＣＰＵ７７０はまた、他のデバイスへの、クッキーまたはＩＰアドレスなどの情報の送信を制御し得る。コンピュータシステム７００の構成要素はまた、システムメモリ構成要素７１４（たとえば、ＲＡＭ）、静的記憶構成要素７１６（たとえば、ＲＯＭ）、および／またはコンピュータ可読媒体７１７を含む。コンピュータシステム７００は、システムメモリ構成要素７１４中に含まれている命令の１つまたは複数のシーケンスを実行することによって、ＣＰＵ７７０および他の構成要素によって特定の動作を実行する。実行のためにＣＰＵ７７０に命令を与えることに参加する任意の媒体を指すことがあるコンピュータ可読媒体７１７において、論理が符号化され得る。そのような媒体は、限定はしないが、不揮発性媒体、揮発性媒体、および伝送媒体を含む、多くの形態をとり得る。様々な実装形態では、不揮発性媒体は、光または磁気ディスク、あるいはソリッドステートドライブを含み、揮発性媒体は、システムメモリ構成要素７１４などのダイナミックメモリを含み、伝送媒体は、バス７０２を含むワイヤを含む、同軸ケーブル、銅線、および光ファイバーを含む。一実施形態では、論理は、非一時的コンピュータ可読媒体中で符号化される。コンピュータ可読媒体７１７は、ＣＰＵ７７０によって使用されるか、またはＣＰＵ７７０に関する命令を含んでいるか、記憶するか、通信するか、伝搬するか、またはトランスポートすることができる任意の装置であり得る。コンピュータ可読媒体７１７は、電子的、磁気的、光学式、電磁的、赤外線式、または半導体式のデバイスまたは伝搬媒体、あるいは他のメモリチップまたはカートリッジ、あるいはコンピュータがそれから読み取るように適応された他の媒体であり得る。一例では、伝送媒体は、無線波、光、および赤外線データ通信中に生成されるものなど、音響波または光波の形態をとり得る。
【００７３】
[0078]本開示の様々な実施形態では、本開示を実施するための命令シーケンス（たとえば、方法６００）の実行はコンピュータシステム７００によって実行され得る。本開示の様々な他の実施形態では、通信リンク７１８によって（たとえば、ＬＡＮ、ＷＬＡＮ、ＰＴＳＮ、ならびに／または電気通信、モバイル、およびセルラー電話ネットワークを含む様々な他のワイヤードまたはワイヤレスネットワークなどの）ネットワークに結合された複数のコンピュータシステム７００が、互いと協調して本開示を実施するための命令シーケンスを実行し得る。
【００７４】
[0079]適用可能な場合に、本開示によって与えられる様々な実施形態は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアとの組合せを使用して実装され得る。また適用可能な場合に、本明細書に記載する様々なハードウェア構成要素および／またはソフトウェア構成要素は、本開示の趣旨から逸脱することなく、ソフトウェア、ハードウェア、および／またはその両方を含む複合構成要素に組み合わせられ得る。適用可能な場合に、本明細書に記載する様々なハードウェア構成要素および／またはソフトウェア構成要素は、本開示の趣旨から逸脱することなく、ソフトウェア、ハードウェア、またはその両方を含むサブ構成要素に分離され得る。さらに、適用可能な場合に、ソフトウェア構成要素はハードウェア構成要素として実装され得、その逆も同様であることが企図される。
【００７５】
[0080]本開示によるアプリケーションソフトウェアは、１つまたは複数のコンピュータ可読媒体に記憶され得る。また、本明細書で識別されるアプリケーションソフトウェアは、１つまたは複数の汎用または特定目的コンピュータおよび／またはコンピュータシステムを使用して実装され、ネットワーク化されおよび／またはそれ以外であり得ることが企図される。適用可能な場合に、本明細書で説明する様々なブロックの順序付けは、本明細書で説明する特徴を提供するために、変更され、複合ブロックに組み合わせられ、および／またはサブブロックに分離され得る。
【００７６】
[0081]上記の開示は、本開示を、厳密な形態、または開示した特定の使用分野に限定するものではない。したがって、本開示に対する様々な代替実施形態および／または変更は、本明細書で明示的に説明されるのか暗示されるのかにかかわらず、本開示に照らして可能であることが企図される。本開示の範囲から逸脱することなく、形態および詳細において変更が行われ得る。したがって、本開示は特許請求の範囲のみによって限定される。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
ウェブページをレンダリングする方法であって、
ロケーションによって参照される第１のウェブドキュメントを処理することに基づいて第１のシリアル化最終ドキュメントオブジェクトモジュール（ＤＯＭ）を生成することと、前記第１のシリアル化最終ＤＯＭが第１のインライン化動的コンテンツを含む、
前記ロケーションによって参照される第２のウェブドキュメントを処理することに基づいて第２のシリアル化最終ＤＯＭを生成することと、前記第２のシリアル化最終ＤＯＭが第２のインライン化動的コンテンツを含む、
前記第１のシリアル化最終ＤＯＭと前記第２のシリアル化最終ＤＯＭとの間の差分に基づいて共通シリアル化最終ＤＯＭを生成することと、前記共通シリアル化最終ＤＯＭが、前記第１のシリアル化最終ＤＯＭと前記第２のシリアル化最終ＤＯＭとの中に含まれる静的な動的コンテンツを含み、前記差分が真の動的コンテンツである、
前記共通シリアル化最終ＤＯＭをデバイスのディスプレイにレンダリングすることと
を備える、方法。
［Ｃ２］
前記共通シリアル化最終ＤＯＭを生成することが、前記第１のシリアル化最終ＤＯＭと前記第２のシリアル化最終ＤＯＭとの間の１つまたは複数の差分を識別することと、前記第１のシリアル化最終ＤＯＭから前記１つまたは複数の差分を削除することとを含む、Ｃ１に記載の方法。
［Ｃ３］
前記第１のウェブドキュメントをパースすることと、前記第１のウェブドキュメントがマークアップ言語でのものであり、要素のセットとルールのセットとを含む、
要素の前記セットのうちの１つまたは複数の要素にルールの前記セットを適用することと、
前記パースすることと前記適用することとに従って最終ＤＯＭを生成することと、前記最終ＤＯＭが、ルールの前記セットを適用することに基づいて生成された第１の動的コンテンツを含む、
前記第１のシリアル化最終ＤＯＭを生成するために前記最終ＤＯＭをシリアル化することと
をさらに備える、Ｃ１に記載の方法。
［Ｃ４］
前記第１のシリアル化最終ＤＯＭを生成することが、前記第１の最終ＤＯＭ中の１つまたは複数の非インラインルールをインラインルールに移動することを含む、Ｃ３に記載の方法。
［Ｃ５］
ルールがクライアント側スクリプトを含む、Ｃ４に記載の方法。
［Ｃ６］
ルールが、前記第１のウェブドキュメント中の１つまたは複数の要素に適用されるフォーマッティングルールである、Ｃ４に記載の方法。
［Ｃ７］
前記第１のシリアル化最終ＤＯＭと前記第２のシリアル化最終ＤＯＭとが前記最終ＤＯＭの異なるバージョンである、Ｃ３に記載の方法。
［Ｃ８］
前記第１のシリアル化最終ＤＯＭをファイルにシリアル化することと、
前記ファイルをキャッシュすることと
をさらに備える、Ｃ１に記載の方法。
［Ｃ９］
前記共通シリアル化最終ＤＯＭをレンダリングすることが、前記共通シリアル化最終ＤＯＭをフォアグラウンドにおいてレンダリングすることを含み、前記方法は、
キャッシュから前記共通シリアル化最終ＤＯＭを取り出すことと、
前記ロケーションによって参照される第３のウェブドキュメントについての現在の要求を受信することと、
バックグラウンドプロセス中に、前記現在の要求のために現在のＤＯＭを構成し、前記現在のＤＯＭをレンダリングすることと、
前記現在のＤＯＭがレンダリングされた後に、前記レンダリングされた現在のＤＯＭを、前記レンダリングされた共通シリアル化最終ＤＯＭと交換することと
をさらに備える、Ｃ１に記載の方法。
［Ｃ１０］
前記ロケーションによって参照される第３のウェブドキュメントを処理することに基づいて第３のシリアル化最終ＤＯＭを生成することと、前記第３のシリアル化最終ＤＯＭが第３のインライン化動的コンテンツを含む、
前記第２のシリアル化最終ＤＯＭと前記第３のシリアル化最終ＤＯＭとの間の第２の差分に基づいて第２の共通シリアル化最終ＤＯＭを生成することと、前記第２の共通シリアル化最終ＤＯＭは、前記第２のシリアル化最終ＤＯＭと前記第３のシリアル化最終ＤＯＭとの中に含まれる静的な動的コンテンツを含み、真の動的コンテンツが不在であり、前記第２の差分が真の動的コンテンツである、
前記第２の共通シリアル化最終ＤＯＭを前記デバイスの前記ディスプレイにレンダリングすることと
をさらに備える、Ｃ１に記載の方法。
［Ｃ１１］
前記ロケーションがユニフォームリソースロケータ（ＵＲＬ）である、Ｃ１に記載の方法。
［Ｃ１２］
ウェブページをレンダリングするためのシステムであって、
ロケーションによって参照される第１のウェブドキュメントを処理することに基づいて第１のシリアル化最終ドキュメントオブジェクトモジュール（ＤＯＭ）を生成し、前記ロケーションによって参照される第２のウェブドキュメントを処理することに基づいて第２のシリアル化最終ＤＯＭを生成するクライアントブラウザを備え、ここにおいて、前記第１のシリアル化最終ＤＯＭが第１のインライン化動的コンテンツを含み、前記第２のシリアル化最終ＤＯＭが第２のインライン化動的コンテンツを含む、
ここにおいて、前記クライアントブラウザが、前記第１のシリアル化最終ＤＯＭと前記第２のシリアル化最終ＤＯＭとの間の差分に基づいて共通シリアル化最終ＤＯＭを生成し、ここにおいて、前記共通シリアル化最終ＤＯＭが、前記第１のシリアル化最終ＤＯＭと前記第２のシリアル化最終ＤＯＭとの中に含まれる静的な動的コンテンツを含み、前記差分が真の動的コンテンツである、
ここにおいて、前記クライアントブラウザが、前記共通シリアル化最終ＤＯＭをデバイスのディスプレイにレンダリングする、システム。
［Ｃ１３］
前記クライアントブラウザが、前記第１のシリアル化最終ＤＯＭと前記第２のシリアル化最終ＤＯＭとの間の１つまたは複数の差分を識別し、前記第１のシリアル化最終ＤＯＭから前記１つまたは複数の差分を削除する、Ｃ１２に記載のシステム。
［Ｃ１４］
前記クライアントブラウザが前記第１のウェブドキュメントをパースし、前記第１のウェブドキュメントがマークアップ言語でのものであり、要素のセットとルールのセットとを含み、ここにおいて、前記クライアントブラウザが、要素の前記セットのうちの１つまたは複数の要素にルールの前記セットを適用し、前記パースすることと前記適用することとに従って最終ＤＯＭを生成し、ここにおいて、前記最終ＤＯＭが、ルールの前記セットを適用することに基づいて生成される第１の動的コンテンツを含む、Ｃ１２に記載のシステム。
［Ｃ１５］
前記クライアントブラウザが、前記第１の最終ＤＯＭから１つまたは複数のルールを削除し、前記１つまたは複数の削除されたルールを前記第１の最終ＤＯＭにインラインで組み込む、Ｃ１４に記載のシステム。
［Ｃ１６］
ルールがクライアント側スクリプトを含む、Ｃ１５に記載のシステム。
［Ｃ１７］
前記クライアント側スクリプトがＪＡＶＡＳＣＲＩＰＴ（登録商標）プログラミング言語でのものである、Ｃ１５に記載のシステム。
［Ｃ１８］
前記第１のシリアル化最終ＤＯＭと前記第２のシリアル化最終ＤＯＭとが最終ＤＯＭの異なるバージョンである、Ｃ１２に記載のシステム。
［Ｃ１９］
ロケーションによって参照される第１のウェブドキュメントを処理することに基づいて第１のシリアル化最終ドキュメントオブジェクトモジュール（ＤＯＭ）を生成することと、前記第１のシリアル化最終ＤＯＭが第１のインライン化動的コンテンツを含む、
前記ロケーションによって参照される第２のウェブドキュメントを処理することに基づいて第２のシリアル化最終ＤＯＭを生成することと、前記第２のシリアル化最終ＤＯＭが第２のインライン化動的コンテンツを含む、
前記第１のシリアル化最終ＤＯＭと前記第２のシリアル化最終ＤＯＭとの間の差分に基づいて共通シリアル化最終ドキュメントオブジェクトモジュール（ＤＯＭ）を生成することと、前記共通シリアル化最終ＤＯＭが、前記第１のシリアル化最終ＤＯＭと前記第２のシリアル化最終ＤＯＭとの中に含まれる静的な動的コンテンツを含み、前記差分が真の動的コンテンツである、
前記共通シリアル化最終ＤＯＭをデバイスのディスプレイにレンダリングすることと
を備える、動作を実行するためのコンピュータ実行可能命令を記憶したコンピュータ可読媒体。
［Ｃ２０］
ウェブページをレンダリングするためのシステムであって、
ロケーションによって参照される第１のウェブドキュメントを処理することに基づいて第１のシリアル化最終ドキュメントオブジェクトモジュール（ＤＯＭ）を生成するための手段と、前記第１のシリアル化最終ＤＯＭが第１のインライン化動的コンテンツを含む、
前記ロケーションによって参照される第２のウェブドキュメントを処理することに基づいて第２のシリアル化最終ＤＯＭを生成するための手段と、前記第２のシリアル化最終ＤＯＭが第２のインライン化動的コンテンツを含む、
前記第１のシリアル化最終ＤＯＭと前記第２のシリアル化最終ＤＯＭとの間の差分に基づいて共通シリアル化最終ＤＯＭを生成するための手段と、前記共通シリアル化最終ＤＯＭが、前記第１のシリアル化最終ＤＯＭと前記第２のシリアル化最終ＤＯＭとの中に含まれる静的な動的コンテンツを含み、前記差分が真の動的コンテンツである、
前記共通シリアル化最終ＤＯＭをデバイスのディスプレイにレンダリングするための手段と
を備える、システム。
【図１】
0006416374.tif 000002
【図２】
0006416374.tif 000003
【図３】
0006416374.tif 000004
【図４】
0006416374.tif 000005
【図５】
0006416374.tif 000006
【図６】
0006416374.tif 000007
【図７】
0006416374.tif 000008