(58)【調査した分野】(Int.Cl.,DB名)
生成されたDOMツリーの一部分が前記メモリに記憶されたDOMツリーの1つまたは複数の部分と同形かどうかを決定するステップが、ツリー同形比較アルゴリズムを使用して、前記生成されたDOMツリーを、前記メモリに記憶されたDOMツリー構造と比較するステップを備える、請求項2に記載の方法。
生成されたDOMツリーの一部分が前記メモリに記憶されたDOMツリーの1つまたは複数の部分と同形かどうかを決定するステップが、前記生成されたDOMツリーの前記一部分が前記メモリに記憶されたDOMツリーの1つまたは複数の部分と同一である構造を有するかどうかを決定するステップを備える、請求項2に記載の方法。
生成されたDOMツリーの一部分が前記メモリに記憶されたDOMツリーの1つまたは複数の部分と同形かどうかを決定するステップが、前記生成されたDOMツリーの前記一部分が前記メモリに記憶された前記DOMツリーの1つまたは複数の部分と構造的に類似しているかどうかを決定するステップを備える、請求項2に記載の方法。
前記メモリ内のDOMツリーの計算結果を作成するために使用されるキー値および入力値が前記生成されたDOMツリーのキー値および入力値に等しいかどうかを決定するステップをさらに備え、
前記メモリ内のDOMツリーの計算結果を作成するために使用される前記キー値および入力値が前記生成されたDOMツリーのキー値および入力値に等しいことが決定されたときのみ、前記DOMツリーの同形の部分に関連付けられた以前記憶された計算を前記メモリから取り出すステップが実行される、
請求項2に記載の方法。
前記DOMツリーの同形の部分に関連付けられた以前記憶された計算を前記メモリから取り出すステップが、前記DOMツリーの同形の部分に対応するDOMサブツリー構造に基づいて計算されたハッシュ値によってインデックスが付けられるように前記DOMツリーの前記同形の部分の前記計算の結果を記憶する前記メモリにアクセスするステップを備える、請求項2に記載の方法。
前記生成されたDOMツリーが前記メモリに記憶された前記DOMツリーの前記1つまたは複数の部分のいずれとも同形ではないことが決定されたとき、前記生成されたDOMツリーのHTMLコードの計算を完了するステップと、
前記生成されたDOMツリーでインデックスが付けられた前記HTMLコードの計算の結果を前記メモリに記憶するステップと
をさらに備える、請求項2に記載の方法。
前記HTMLコードの計算の結果を記憶するステップが、対応するHTMLコードの計算結果に関連してDOMツリー要素が記憶されるキー値データ構造で前記生成されたDOMツリーの少なくとも一部分を記憶するステップを備える、請求項8に記載の方法。
以前記憶された計算を前記メモリから取り出す前記ステップが、前記生成されたDOMツリーの前記一部分と同形である前記記憶されたDOMツリーのノードに関連付けられたハッシュキーを評価するステップを備える、請求項10に記載の方法。
前記要求されたウェブページに対応するソフトウェアコードを受信するための手段が、前記要求されたウェブページに対応するHTMLコードを受信するための手段を備え、
ドキュメントオブジェクトモデル(DOM)ツリーを生成するために前記受信されたソフトウェアコードを解析するための手段が、DOMツリーを生成するために前記受信されたHTMLコードを解析するための手段を備える
請求項12に記載のコンピューティングデバイス。
生成されたDOMツリーの一部分が前記メモリに記憶されたDOMツリーの1つまたは複数の部分と同形かどうかを決定するための手段が、ツリー同形比較アルゴリズムを使用して、前記生成されたDOMツリーを、前記メモリに記憶されたDOMツリー構造と比較するための手段を備える、請求項13に記載のコンピューティングデバイス。
生成されたDOMツリーの一部分が前記メモリに記憶されたDOMツリーの1つまたは複数の部分と同形かどうかを決定するための手段が、前記生成されたDOMツリーの前記一部分が前記メモリに記憶されたDOMツリーの1つまたは複数の部分と同一である構造を有するかどうかを決定するための手段を備える、請求項13に記載のコンピューティングデバイス。
生成されたDOMツリーの一部分が前記メモリに記憶されたDOMツリーの1つまたは複数の部分と同形かどうかを決定するための手段が、前記生成されたDOMツリーの前記一部分が前記メモリに記憶された前記DOMツリーの1つまたは複数の部分と構造的に類似しているかどうかを決定するための手段を備える、請求項13に記載のコンピューティングデバイス。
前記メモリ内のDOMツリーの計算結果を作成するために使用されるキー値および入力値が前記生成されたDOMツリーのキー値および入力値に等しいかどうかを決定するための手段をさらに備え、
前記DOMツリーの同形の部分に関連付けられた以前記憶された計算を前記メモリから取り出すための手段が、前記メモリ内のDOMツリーの計算結果を作成するために使用される前記キー値および入力値が前記生成されたDOMツリーのキー値および入力値に等しいことが決定されたときのみ、前記DOMツリーの同形の部分に関連付けられた前記記憶された計算を取り出すための手段を備える、
請求項13に記載のコンピューティングデバイス。
前記DOMツリーの同形の部分に関連付けられた以前記憶された計算を前記メモリから取り出すための手段が、前記DOMツリーの同形の部分に対応するDOMサブツリー構造に基づいて計算されたハッシュ値によってインデックスが付けられるように前記DOMツリーの前記同形の部分の前記計算の結果を記憶する前記メモリにアクセスするための手段を備える、請求項13に記載のコンピューティングデバイス。
前記生成されたDOMツリーが前記メモリに記憶された前記DOMツリーの前記1つまたは複数の部分のいずれとも同形ではないことが決定されたとき、前記生成されたDOMツリーのHTMLコードの計算を完了するための手段と、
前記生成されたDOMツリーでインデックスが付けられた前記HTMLコードの計算の結果を前記メモリに記憶するための手段と
をさらに備える、請求項13に記載のコンピューティングデバイス。
前記HTMLコードの計算の結果を記憶するための手段が、対応するHTMLコードの計算結果に関連してDOMツリー要素が記憶されるキー値データ構造で前記生成されたDOMツリーの少なくとも一部分を記憶するための手段を備える、請求項19に記載のコンピューティングデバイス。
前記生成されたDOMツリーの少なくとも一部分をキー値データ構造で記憶するための手段が、前記生成されたDOMツリーの少なくとも一部分をハッシュマップデータ構造で記憶するための手段を備える、請求項20に記載のコンピューティングデバイス。
以前記憶された計算を前記メモリから取り出すための手段が、前記生成されたDOMツリーの前記一部分と同形である前記記憶されたDOMツリーのノードに関連付けられたハッシュキーを評価するための手段を備える、請求項21に記載のコンピューティングデバイス。
前記プロセッサが、生成されたDOMツリーの一部分が前記メモリに記憶されたDOMツリーの1つまたは複数の部分と同形かどうかを決定するステップが、ツリー同形比較アルゴリズムを使用して、前記生成されたDOMツリーを、前記メモリに記憶されたDOMツリー構造と比較するステップを備えるようなプロセッサ実行可能命令で構成される、請求項24に記載のコンピューティングデバイス。
前記プロセッサが、生成されたDOMツリーの一部分が前記メモリに記憶されたDOMツリーの1つまたは複数の部分と同形かどうかを決定するステップが、前記生成されたDOMツリーの前記一部分が前記メモリに記憶されたDOMツリーの1つまたは複数の部分と同一である構造を有するかどうかを決定するステップを備えるようなプロセッサ実行可能命令で構成される、請求項25に記載のコンピューティングデバイス。
前記プロセッサが、生成されたDOMツリーの一部分が前記メモリに記憶されたDOMツリーの1つまたは複数の部分と同形かどうかを決定するステップが、前記生成されたDOMツリーの前記一部分が前記メモリに記憶された前記DOMツリーの1つまたは複数の部分に構造的に類似しているかどうかを決定するステップを備えるようなプロセッサ実行可能命令で構成される、請求項25に記載のコンピューティングデバイス。
前記プロセッサが、前記メモリ内のDOMツリーの計算結果を作成するために使用されるキー値および入力値が前記生成されたDOMツリーのキー値および入力値に等しいかどうかを決定するステップをさらに備える操作を実行するためのプロセッサ実行可能命令で構成され、
前記プロセッサが、前記メモリ内のDOMツリーの計算結果を作成するために使用される前記キー値および入力値が前記生成されたDOMツリーのキー値および入力値に等しいことが決定されたときのみ、前記DOMツリーの同形の部分に関連付けられた以前記憶された計算を前記メモリから取り出すステップが実行されるようなプロセッサ実行可能命令で構成される、
請求項25に記載のコンピューティングデバイス。
前記プロセッサが、前記DOMツリーの同形の部分に関連付けられた以前記憶された計算を前記メモリから取り出すステップが、前記DOMツリーの同形の部分に対応するDOMサブツリー構造に基づいて計算されたハッシュ値によってインデックスが付けられるように前記DOMツリーの前記同形の部分の前記計算の結果を記憶する前記メモリにアクセスするステップを備えるようなプロセッサ実行可能命令で構成される、請求項25に記載のコンピューティングデバイス。
前記プロセッサが、前記HTMLコードの計算の結果を記憶するステップが対応するHTMLコードの計算結果に関連してDOMツリー要素が記憶されるキー値データ構造で前記生成されたDOMツリーの少なくとも一部分を記憶するステップを備えるようなプロセッサ実行可能命令で構成される、請求項30に記載のコンピューティングデバイス。
前記プロセッサが、前記キー値データ構造がハッシュマップデータ構造を備えるようなプロセッサ実行可能命令で構成される、請求項31に記載のコンピューティングデバイス。
前記プロセッサが、以前記憶された計算を前記メモリから取り出すステップが前記生成されたDOMツリーの前記一部分と同形である前記記憶されたDOMツリーのノードに関連付けられたハッシュキーを評価するステップを備えるようなプロセッサ実行可能命令で構成される、請求項32に記載のコンピューティングデバイス。
前記記憶されたプロセッサ実行可能命令が、コンピューティングデバイスのプロセッサに、生成されたDOMツリーの一部分が前記メモリに記憶されたDOMツリーの1つまたは複数の部分と同形かどうかを決定するステップが、ツリー同形比較アルゴリズムを使用して、前記生成されたDOMツリーを、前記メモリに記憶されたDOMツリー構造と比較するステップを備えるような操作を実行させるように構成される、請求項35に記載のコンピュータ可読記憶媒体。
前記記憶されたプロセッサ実行可能命令が、コンピューティングデバイスのプロセッサに、生成されたDOMツリーの一部分が前記メモリに記憶されたDOMツリーの1つまたは複数の部分と同形かどうかを決定するステップが、前記生成されたDOMツリーの前記一部分が前記メモリに記憶されたDOMツリーの1つまたは複数の部分と同一である構造を有するかどうかを決定するステップを備えるような操作を実行させるように構成される、請求項35に記載のコンピュータ可読記憶媒体。
前記記憶されたプロセッサ実行可能命令が、コンピューティングデバイスのプロセッサに、生成されたDOMツリーの一部分が前記メモリに記憶されたDOMツリーの1つまたは複数の部分と同形かどうかを決定するステップが、前記生成されたDOMツリーの前記一部分が前記メモリに記憶された前記DOMツリーの1つまたは複数の部分に構造的に類似しているかどうかを決定するステップを備えるような操作を実行させるように構成される、請求項35に記載のコンピュータ可読記憶媒体。
前記記憶されたプロセッサ実行可能命令が、コンピューティングデバイスのプロセッサに、前記メモリ内のDOMツリーの計算結果を作成するために使用されるキー値および入力値が前記生成されたDOMツリーのキー値および入力値に等しいかどうかを決定するステップをさらに備える操作を実行させるように構成され、
前記記憶されたプロセッサ実行可能命令が、コンピューティングデバイスのプロセッサに、前記メモリ内のDOMツリーの計算結果を作成するために使用される前記キー値および入力値が前記生成されたDOMツリーのキー値および入力値に等しいことが決定されたときのみ、前記DOMツリーの同形の部分に関連付けられた以前記憶された計算を前記メモリから取り出すステップが実行されるような操作を実行させるように構成される、
請求項35に記載のコンピュータ可読記憶媒体。
前記記憶されたプロセッサ実行可能命令が、コンピューティングデバイスのプロセッサに、前記DOMツリーの同形の部分に関連付けられた以前記憶された計算を前記メモリから取り出すステップが、前記DOMツリーの同形の部分に対応するDOMサブツリー構造に基づいて計算されたハッシュ値によってインデックスが付けられるように前記DOMツリーの前記同形の部分の前記計算の結果を記憶する前記メモリにアクセスするステップを備えるような操作を実行させるように構成される、請求項35に記載のコンピュータ可読記憶媒体。
前記記憶されたプロセッサ実行可能命令が、コンピューティングデバイスのプロセッサに、前記HTMLコードの計算の結果を記憶するステップが対応するHTMLコードの計算結果に関連してDOMツリー要素が記憶されるキー値データ構造で前記生成されたDOMツリーの少なくとも一部分を記憶するステップを備えるような操作を実行させるように構成される、請求項41に記載のコンピュータ可読記憶媒体。
前記記憶されたプロセッサ実行可能命令が、コンピューティングデバイスのプロセッサに、前記キー値データ構造がハッシュマップデータ構造を備えるような操作を実行させるように構成される、請求項42に記載のコンピュータ可読記憶媒体。
前記記憶されたプロセッサ実行可能命令が、コンピューティングデバイスのプロセッサに、以前記憶された計算を前記メモリから取り出すステップが前記生成されたDOMツリーの前記一部分と同形である前記記憶されたDOMツリーのノードに関連付けられたハッシュキーを評価するステップを備えるような操作を実行させるように構成される、請求項43に記載のコンピュータ可読記憶媒体。
【発明を実施するための形態】
【0019】
次に、図面を参照しながら様々な態様について説明する。以下の記述では、説明の目的で、1つまたは複数の態様の完全な理解を与えるために多数の具体的な詳細を記載する。ただし、そのような態様をこれらの具体的な詳細なしに実施できることは明白であり得る。
【0020】
説明する態様は、ウェブリソースおよびデータ項目を有するウェブページなどのページをフェッチし、レンダリングすることに関する。さらに、説明する態様は、たとえば、ユーザがウェブページの間で前方および後方に移動するためのリンクを提供するなど、ウェブページの間で移行する仮想効果を提供する。ウェブページは、構成要素、相対的な構造、およびページを定義するそれぞれの構成要素の挙動を定義する対応するドキュメントオブジェクトモデル(DOM)に従ってレンダリングされる。同じページの異なるインスタンスは、ページのあるインスタンスを次のインスタンスに対して区別する他の固有の部分を有しながら、DOMのいくつかの共通の部分を共有し得る。
【0021】
1つまたは複数の態様によれば、ページをレンダリングする装置および方法は、ページの2つ以上のインスタンスによって使用され得る共有DOMを作成するように動作可能なウェブエンジンまたは他の構成要素を提供する。共有DOMは、ページの異なるインスタンスに共通である静的DOM部分、およびページのそれぞれの1つまたは複数のインスタンスに固有の1つまたは複数の動的DOM部分を含む。したがって、説明する態様は、同じページの以前処理された異なるインスタンスに基づき得る、記憶されたまたはキャッシュされたDOMに対応するページの新しいインスタンスをレンダリングする際に静的DOM部分を再利用することによってページのレンダリングの効率を向上させ、それによって、ページのインスタンスごとに完全に新しいDOMを作成する必要を回避する。
【0022】
たとえば、これらの態様は、携帯電話によって実行されるモバイルショッピングアプリケーションなどの使用事例を参照しながら説明され得る。しかしながら、この例示的な使用事例は説明のためのものにすぎず、多くの他の使用事例が存在することを理解されたい。モバイルショッピングアプリケーションの例では、モバイルショッピングアプリケーションに対応するウェブページは、カタログリストを有するメインページ、商品リストおよび/もしくは他のカタログリストを有する1つまたは複数のカタログページ、ならびに他の商品詳細ページ、および/または価格設定ページまたは購入ページなど追加の詳細ページにリンクすることもできる1つまたは複数の商品詳細ページなど、異なるタイプのページのツリーまたは階層を含み得る。第1のゲームの商品詳細ページ、および第2のゲームの商品詳細ページなど、同じページの異なるインスタンスは、類似の構造、および場合によってはいくつかの類似のデータを共有することができるが、それらは各々、それぞれのゲームの名前など、固有のデータも有し得る。したがって、一般的に、各商品詳細ページは、異なる対応するDOMを有する。しかしながら、本態様では、商品詳細ページは、代わりに、ページの異なるインスタンス間の共通のDOM要素に対応する静的DOM部分、および固有のデータ項目をページのそれぞれのインスタンスと関連付ける1つまたは複数の動的DOM部分を含む共有DOMを有する。たとえば、この場合、静的DOM部分は、第1のゲームの商品詳細ページおよび第2のゲームの商品詳細ページの同じレイアウトを備え得、一方、第1のゲーム名および第2のゲーム名など、動的なデータ項目は、動的DOM部分によって表される。
【0023】
言い換えれば、一態様では、(たとえば、「itemdetail」ページなど)ページの固有のインスタンスがコンピュータデバイスにおいてフェッチまたはキャッシュされたことがなく、ページのそのインスタンスが要求されたとき、説明する態様は、(たとえば、ハイパーテキストマークアップ言語(html)または拡張可能html(xhtml)、カスケーディングシートスタイル(css)、およびjavascript(js)を含む)ページデータをフェッチし、xhtmlおよびcssからドキュメントオブジェクトモデル(DOM)の静的部分を作成することになる挙動を提供する。DOMのこの静的部分は、キャッシュに記憶され、再利用することができる。そのページについて、次いで、jsが実行され、結果として1つまたは複数のデータ要求(たとえば、XMLHttpRequest(XHR))が得られる。最初のjsおよび1つまたは複数の応答の各々の処理によって、ページのそのインスタンスについてのDOMの1つまたは複数の動的部分が作成される。次いで、ページの第2のインスタンスが要求されると、静的DOM部分を再利用することができ、ページの第2のインスタンスに対応する要求の新しいクエリストリングについて、jsが実行され、結果として1つまたは複数の新しいデータ要求が得られ、ページの新しいインスタンスについてのDOMの1つまたは複数の動的部分が作成される。その結果、共有DOMは、少なくとも1つの静的部分および1つまたは複数の動的部分を含み、DOMは、ページの異なるインスタンスをレンダリングする際に使用するために共有DOMを定義することができる。
【0024】
したがって、一態様では、DOMの初期もしくは静的状態または部分の再利用は、ページ移行時間を低減する。1つまたは複数の態様では、状態またはDOMの部分の再利用は、DOMの静的状態および動的状態または部分に対応する別々のまたは代わりに統合されたデータ構造を維持することによって達成され得る。
【0025】
さらに、1つまたは複数の態様では、1つまたは複数の利点には、特性の表が1つのみコピーされるのでメモリオーバーヘッドがない、または少ない、HTMLの解析およびCSSルールの適用が1回行われるだけなのでページのロードが速い、同じページの異なるインスタンスについて、異なるDOMを作成する必要がないので、他の実装に比べてコードがよりクリーンであまり複雑ではない、レンダリングは静的DOM部分が変わらないことを考慮して、動的DOM部分を更新することに集中することができるので、DOMツリーの余分なウォークスルーが行われない、動的な特性がページのロードの要求時に作成され、ページのインスタンスに戻る際、DOMの既存のウォークスルー時に削除されることがあり得る。
【0026】
随意に、いくつかの態様では、DOMおよび対応するページコンテンツがキャッシュされ得、キャッシュは、派生キャッシュまたは構造化キャッシュを含み得る。派生キャッシュは、受信されたコンテンツから導出されたコンテンツを記憶し得る。たとえば、一態様では、限定はしないが、xhtml、カスケーディングシートスタイル、またはjavascript(登録商標)など、未加工コンテンツを受信すると、コンピュータデバイスは、派生コンテンツを生成するために、未加工コンテンツをさらに処理することができる。たとえば、一態様では、派生コンテンツは、DOMの静的部分を含み得、たとえば、DOMの静的部分は、受信されたxhtmlおよびcssから作成され、および/または導出され得ることを諒解されたい。派生コンテンツを生成するために費やされたリソースが比較的高価であるので、たとえば、派生キャッシュに派生コンテンツを記憶することが決定され得る。一態様では、派生コンテンツのこのキャッシングは、コンテンツが頻繁に使用される場合など、このあらかじめ作成された派生コンテンツを使用することによってキャッシュされたコンテンツの次の使用を効率的に容易にするのを支援することができる。
【0027】
派生コンテンツの別の例は、動作されるプログラムがキャッシュから取り出されるときに、コンピュータデバイスがプログラムをフェッチすることを含み得る。コンピュータデバイスがキャッシュからプログラムを取り出すたびにフェッチされたプログラムをコンパイルするのではなく、コンピュータデバイスは、プログラムをコンパイルすることができる。コンパイルされたプログラムまたは派生コンテンツは、後の使用に備えて、派生キャッシュに記憶され得る。さらに、派生コンテンツは、受信されたソースに関連付けられ得る。
【0028】
別の態様では、コンピュータデバイスキャッシュは、構造化キャッシュをさらに含み得る。構造化キャッシュは、プログラムなどを取り出すことが、取出しのためにキャッシュされたコンテンツの有用な部分を選択的に選択することができるような方法で、コンテンツの記憶を可能にする。たとえば、現在の装置および方法がなければ、キャッシュされたコンテンツは、セマンティック不明確コンテンツとして現れ得、それによって、キャッシュされたコンテンツの部分の選択的な取出しが禁止される。一態様では、構造化キャッシュは、コンテンツ項目全体の取出しを必要とせずに、構造化キャッシュに記憶されたコンテンツ項目の選択された既知の部分を取り出すことができるような方法で編成することができる。
【0029】
たとえば、Javascript(登録商標)オブジェクト表記法(JSON)コンテンツなど、周知の構造を有するコンテンツが構造化キャッシュに記憶されると仮定する。さらに、プログラムなどが、製造業者、タイトルなどに関連付けられたコンテンツなど、JSONコンテンツのほんの一部しか使用できないと仮定する。構造化キャッシュは、プログラムにとって有用なコンテンツの部分のみの選択的除去を可能にし、それによって、必要とされ得た任意の中間処理が低減される。
【0030】
別の例では、コンテンツプロバイダは、コンピュータデバイスに送信されるコンテンツとともに、オリジンサーバ生成のエントリポイントを導入し得る。したがって、オリジンサーバ生成のエントリポイントを有するコンテンツが構造化キャッシュに記憶されると、エントリポイントによって定義された部分のその後の除去が容易になり得る。
【0031】
随意に、いくつかの態様では、説明される装置および方法は、そのページの要求の受信の前にページをフェッチし、処理するために実行することができるプリフェッチ操作をさらに含み得る。
【0032】
随意に、いくつかの態様では、説明される装置および方法は、そのページの要求の受信の前にウェブページをDOMに解析し、対応するDOMをキャッシュするために実行することができる事前導出操作をさらに含み得る。
【0033】
随意に、いくつかの態様では、説明される装置および方法は、プリフェッチと事前導出の両方の操作をさらに含み得る。
【0034】
プリフェッチ操作および/または事前導出操作は、ページのインスタンスをレンダリングする際の速度をさらに上げることができ、それによって、あるページから別のページに移行するとき、ユーザエクスペリエンスを向上させる。
【0035】
さらなる態様では、ブラウザによるウェブページのレンダリングを加速するための方法およびデバイスは、レンダリングされたページのドキュメントオブジェクトモデル(DOM)ツリー構造および計算を記憶し、レンダリングされるページのDOMツリーの部分を比較して、DOMツリー構造の部分が一致するかどうかを決定する。レンダリングされるウェブページのDOMツリーがメモリに記憶されたDOMツリーと一致する場合、一致するDOMツリーに関連付けられた計算は、メモリから呼び戻すことができ、ページをレンダリングするために計算を実行する必要がなくなる。レンダリングされるウェブページのDOMツリーと一致するメモリに記憶されたDOMツリーを認識するために、ツリー同形アルゴリズムを使用することができる。上記で説明した、レンダリング計算を再利用することによって、ウェブページをレンダリングするために必要な時間およびリソースがかなり低減され得る。DOMツリー同形に基づいた計算結果の再利用可能な部分を識別することによって、ブラウザは、URLが一致しないときでも、記憶されたウェブページのレンダリング計算を再利用することができ、それによって、ブラウザによって再利用することができるレンダリング計算の量が増加する。
【0036】
したがって、本態様は、DOMの静的部分を再利用することによってページの異なるインスタンスを効率的にレンダリングすることができ、それによって、処理リソースもしくは通信リソースまたは両方ともが節約される。
【0037】
本出願で使用される場合、「構成要素」、「モジュール」、「システム」などの用語は、限定はしないが、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアなど、コンピュータ関連のエンティティを含むものとする。たとえば、構成要素は、プロセッサ上で実行されるプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、および/またはコンピュータであり得るが、これらに限定されない。例として、コンピューティングデバイス上で実行されるアプリケーションと、そのコンピューティングデバイスの両方が、構成要素であり得る。1つまたは複数の構成要素が、プロセスおよび/または実行スレッド内に常駐することができ、1つの構成要素が、1つのコンピュータ上に局在されてよく、かつ/または2つ以上のコンピュータ間に分散されてよい。さらに、これらの構成要素は、様々なデータ構造を記憶している様々なコンピュータ可読媒体から実行することができる。これらの構成要素は、信号によって、ローカルシステム、分散システム内の別の構成要素と対話し、かつ/またはインターネットなどのネットワークを介して他のシステムと対話する1つの構成要素からのデータのような1つまたは複数のデータパケットを有する信号に従うことなどによって、ローカルプロセスおよび/またはリモートプロセスによって通信し得る。
【0038】
さらに、本明細書では、ワイヤード端末またはワイヤレス端末であり得る端末に関する様々な態様について説明する。端末は、システム、デバイス、加入者ユニット、加入者局、移動局、モバイル、モバイルデバイス、遠隔局、遠隔端末、アクセス端末、ユーザ端末、端末、通信デバイス、ユーザエージェント、ユーザデバイス、またはユーザ機器(UE)と呼ばれることもある。ワイヤレス端末は、セルラー電話、衛星電話、コードレス電話、セッション開始プロトコル(SIP)電話、ワイヤレスローカルループ(WLL)局、携帯情報端末(PDA)、ワイヤレス接続機能を有するハンドヘルドデバイス、コンピューティングデバイス、またはワイヤレスモデムに接続された他の処理デバイスであり得る。その上、様々な態様が、基地局に関連して、本明細書で説明される。基地局は、ワイヤレス端末と通信するために使用されてもよく、アクセスポイント、ノードB、またはある他の用語で呼ばれることもあり得る。
【0039】
さらに、「例示的」という単語は、「例、実例、または例示として機能すること」を意味するために本明細書で使用される。「例示的」として本明細書で説明するいかなる態様または設計も、必ずしも他の態様または設計よりも好ましいまたは有利なものと解釈すべきではない。むしろ、例示的という単語の使用は、概念を具体的な形で提示するものである。その上、「または」という用語は、排他的な「または」ではなく、包括的な「または」を意味するものとする。すなわち、別段の規定がない限り、または文脈から明白でない限り、「XはAまたはBを使用する」という語句は、自然な包括的置換のいずれかを意味するものとする。すなわち、「XはAまたはBを使用する」という語句は、以下の例のいずれかによって成立する。XはAを使用する。XはBを使用する。またはXはAとBの両方を使用する。さらに、本出願および添付の特許請求の範囲で使用する冠詞「a」および「an」は、別段の規定がない限り、または単数形を示すことが文脈から明白でない限り、概して「1つまたは複数」を意味するものと解釈すべきである。
【0040】
本明細書で説明する技法は、CDMA、TDMA、FDMA、OFDMA、SC-FDMAおよび他のシステムなど、様々なワイヤレス通信システムに使用され得る。「システム」および「ネットワーク」という用語は、しばしば互換的に使用される。CDMAシステムは、Universal Terrestrial Radio Access(UTRA)、cdma2000などの無線技術を実装することができる。UTRAは、Wideband-CDMA(WCDMA(登録商標))およびCDMAの他の変形形態を含む。さらに、cdma2000は、IS-2000規格、IS-95規格、およびIS-856規格を対象とする。TDMAシステムは、Global System for Mobile Communications(GSM(登録商標))などの無線技術を実装することができる。OFDMAシステムは、Evolved UTRA(E-UTRA)、Ultra Mobile Broadband(UMB)、IEEE802.11(Wi-Fi)、IEEE802.16(WiMAX)、IEEE802.20、Flash-OFDM(登録商標)などの無線技術を実装し得る。UTRAおよびE-UTRAは、Universal Mobile Telecommunication System(UMTS)の一部である。3GPP Long Term Evolution(LTE)は、ダウンリンク上ではOFDMAを採用し、アップリンク上ではSC-FDMAを採用するE-UTRAを使用するUMTSのリリースである。UTRA、E-UTRA、UMTS、LTEおよびGSM(登録商標)は、「3rd Generation Partnership Project」(3GPP)と称する組織からの文書に記載されている。さらに、cdma2000およびUMBは、「3rd Generation Partnership Project 2」(3GPP2)と称する組織からの文書に記載されている。さらに、そのようなワイヤレス通信システムは、不対無認可スペクトル、802.xxワイヤレスLAN、BLUETOOTH(登録商標)および任意の他の短距離または長距離ワイヤレス通信技法をしばしば使用するピアツーピア(たとえば、モバイルツーモバイル)アドホックネットワークシステムをさらに含み得る。
【0041】
いくつかのデバイス、構成要素、モジュールなどを含み得るシステムに関して、様々な態様または特徴が提示される。様々なシステムが、追加のデバイス、構成要素、モジュールなどを含んでもよく、かつ/または各図に関連して論じられるデバイス、構成要素、モジュールなどのすべてを含むとは限らないことを、理解および諒解されたい。これらの手法の組合せも使用され得る。
【0042】
図1を参照すると、一態様では、ウェブページなどのページをレンダリングするための装置および方法は、ディスプレイ15におけるウェブページなどのページ13の1つまたは複数のインスタンスの提示を可能にするために、ウェブエンジン14と対話するポータル構成要素12を有するコンピュータデバイス10を含む。たとえば、表示されたページ13は、ウェブサーバ16およびデータサーバ18から通信ネットワーク17を介して取得され得る。別々の構成要素でもよく、または統合された構成要素でもよいウェブサーバ16およびデータサーバ18は、第1のページインスタンス28および第2のページインスタンス30をそれぞれ定義するウェブリソース20および22ならびにデータ項目24および26をそれぞれ記憶する。たとえば、ウェブリソース20および22は、たとえばデータで満たすことができる空のページテンプレートなど、ページの静的部分を構築するために必要などんなものでも含むことができ、一方、データ項目24および26は、たとえばページの1つまたは複数の動的部分など、ページを満たすために使用される任意のコンテンツを含むことができる。したがって、ウェブリソース20および22のすべてまたは一部の部分は、第1のページインスタンス28と第2のページインスタンス30の両方に共通であり、一方、データ項目24および26のすべてまたは一部の部分は、それぞれのページインスタンスに固有である。
【0043】
より詳細には、ポータル構成要素12は、たとえばユーザ入力、またはポータル構成要素12の開始に基づいて、ページの要求されたインスタンス34を識別する受信された要求32をウェブエンジン14に通信する。たとえば、受信された要求32は、ユニバーサルリソースロケータ(URL)などのウェブリソースを定義する第1の部分、ならびにクエリストリングなど、フェッチする特定のデータを定義する第2の部分を含み得る。ウェブエンジン14は、要求32によって識別されるように、ページの要求されたインスタンス34がページの記憶されたドキュメントオブジェクトモデル(DOM)38に対応するかどうかを決定するために実行する一致決定器36を含む。DOM38は、ページのレンダリングを可能にする、それぞれのDOMノードの特性および/または属性、ならびにそのスタイル属性を含めて、親子関係で1つまたは複数のノードのツリーまたは階層を定義する。ページの要求されたインスタンス34が記憶されたDOM38に対応する場合、反復器構成要素40は、ページの要求されたインスタンス34と、ページの1つまたは複数の記憶されたインスタンス44の両方に共通であるDOM38の1つまたは複数の静的部分42を識別する。随意に、DOM38がページの1つまたは複数の記憶されたインスタンス44の各々に固有の1つまたは複数の動的部分46をさらに含むことができることに留意されたい。たとえば、ページの記憶されたインスタンス44は、第1のページインスタンス28に対応し得、一方、ページの要求されたインスタンス34は、第2のページインスタンス30に対応し得る。さらに、要求32に基づいて、反復器構成要素40は、ページの要求されたインスタンス34に固有の1つまたは複数の動的部分48を識別し、作成し、記憶する。したがって、DOM38は、ページの異なるインスタンスと、各ページインスタンスに固有の、およびさらに、ページの複数のインスタンスによって共有される1つまたは複数の静的DOM部分に対応する1つまたは複数のそれぞれの対応する動的DOM部分との間の関係を定義する。したがって、DOM38は、ページの記憶されたインスタンス44とページの要求されたインスタンス34の両方について同じである静的DOM部分を含むので、共有DOMと呼ばれ得る。
【0044】
代わりに、ページの要求されたインスタンス34が記憶されたDOMに一致しない、または任意の記憶されたDOMに関係しないことを一致決定器36が決定した場合、一致決定器36は、そのページのための新しいDOM39を作成し、記憶するように動作する。次いで、共有DOM38と類似の構造を有し得る新しいDOM39は、ページのインスタンスのその後の要求との一致を決定するために、一致決定器36によって後で参照され得る。
【0045】
これらの態様では、ウェブエンジン14はすでに記憶されているDOMに対応するページの新しいインスタンスについてのDOM構造全体を再構築する必要はないので、共有DOM38は、ページの要求されたインスタンス34のより速いレンダリングを可能にし得る。代わりに、ウェブエンジン14は、静的DOM部分42を再利用することができ、ページの要求されたインスタンス34に対応する1つまたは複数の動的DOM部分48に関係する処理を実行するだけでよい。
【0046】
さらに、コンピュータデバイス10は、スクリプト機能を実行するように動作可能なスクリプトエンジン50を含むことができる。たとえば、ウェブエンジン14は、スクリプトエンジン50と対話して、ページに対応するスクリプトをロードし、スクリプトエンジン50がそれを実行して、対応するスクリプト機能を登録する。ウェブエンジン14から受信されたロードイベントに応答して、スクリプトエンジン50は、ページスクリプトをさらに実行し、ウェブページのインスタンスについての対応する動的なデータのフェッチを開始するために、送信呼を生成する。さらに、動的なデータを受信した後、スクリプトエンジン50は、たとえばDOMアプリケーションプログラムインターフェース(API)を介して、データを適用し、対応するDOMにデータに書き込むように動作可能である。したがって、ページのそれぞれのインスタンスについての書き込まれた動的なデータに基づいて、ウェブエンジン14は、1つまたは複数の動的DOM部分を作成し、それぞれのページインスタンスとの関連で記憶する。
【0047】
さらに、コンピュータデバイス10は、ウェブエンジン14と対話するレンダリングエンジン52を含む。たとえば、ウェブエンジン14からの要求に応答して、レンダリングエンジン52は、ページのそれぞれのインスタンスについての1つまたは複数の静的DOM部分に対応する、および/または1つまたは複数の動的DOM部分に対応するそれぞれのページの1つまたは複数の部分をペイントするように動作可能である。さらに、レンダリングエンジン52は、ページのペイントされた部分を提示するためにディスプレイ15と対話し、それによって、ページのそれぞれのインスタンスを提示する。
【0048】
したがって、共有の静的部分を有するDOMを提供することによって、説明する態様は、ページの各新しいインスタンスに対応するウェブリソースをフェッチする際の通信リソースを節約することができ、または、説明する態様は、静的DOM部分を再利用することによってDOMの部分を作成する際の処理リソースを節約することができ、またはその両方が可能である。
【0049】
図2を参照すると、一態様では、共有DOM38は、ノード62、64、66、68、70、および72など複数のノードによって定義され、第1のページインスタンス28、第2のページインスタンス30、および第3のページインスタンス74など、ページの異なるインスタンスをさらに表す、テンプレート構造60を表すものとしてさらに説明され得る。各ページインスタンス、たとえば28、30および74は、ノード62、64、66、68および70など、1つまたは複数の共通ノードを共有する。しかしながら、各ページインスタンスの各ノードにそれぞれ関連付けられたページデータは異なり得る。たとえば、ページデータ82、84、86、88および90は、第1のページインスタンス28のノード62、64、66、68および70にそれぞれ対応し、一方、ページデータ92、94、96、98および100は、第2のページインスタンス30のノード62、64、66、68および70にそれぞれ対応し、一方、ページデータ102、104、106、108および110は、第3のページインスタンス74のノード62、64、66、68および70にそれぞれ対応する。さらに、いくつかのページインスタンスが他のページインスタンスよりも多いまたはより少ないノードを有し得ることに留意されたい。たとえば、
図2で、第3のページインスタンス74は、それぞれのページデータ112を有する追加のノード72を含み、これは、任意の他のページインスタンスには見つからない。
【0050】
共有DOM38は、異なるページインスタンスを識別し、構築するための簡単で効率的な機構を提供するノード、ページデータ、およびページインスタンスの間の関係を定義する。たとえば、共有DOM38は、共有ノード62、64、66、68および70を含むそれぞれのページインスタンス28、30および74のすべてのノード、それらのそれぞれの互いの関係、ならびにノード72など任意のインスタンスに固有の任意のノードを識別する。さらに、共有DOM38は、たとえば各ノードに対応する共通部分など、静的DOM部分122、124、126、128および130、ならびにノード62についてのインスタンス28、30および74にそれぞれ対応する動的データ82、92および102、ノード64についてのインスタンス28、30および74にそれぞれ対応する動的データ84、94および104、ノード66についてのインスタンス28、30および74にそれぞれ対応する動的データ86、96および106、ノード68についてのインスタンス28、30および74にそれぞれ対応する動的データ88、98および108、ならびにノード70についてのインスタンス28、30および74にそれぞれ対応する動的データ90、100および110など、各ノードに対応する動的DOM部分または動的ページデータを含む。さらに、共有DOM38は、ノード72についての第3のページインスタンス74に対応する動的データ112など、固有のノードの動的DOM部分を含む。
【0051】
図3を参照すると、一態様では、モバイルまたはセルラー電話などのコンピュータデバイス10は、本明細書で説明する構成要素および機能のうちの1つまたは複数に関連付けられた処理機能を実行するためのプロセッサ150を含み得る。プロセッサ150は、単一の組もしくは複数の組のプロセッサまたはマルチコアプロセッサを含み得る。その上、プロセッサ150は、統合処理システムおよび/または分散処理システムとして実装されてもよい。
【0052】
コンピュータデバイス10は、たとえばプロセッサ150によって実行されているローカルバージョンのアプリケーションを記憶するため、ならびに/または、プロセッサ150によって現在実行または利用されていないデータ、命令、および/もしくはアプリケーションの長期記憶のためのメモリ152をさらに含み得る。一態様では、メモリ152は、派生キャッシュ155をさらに備え得る。キャッシュの対象とするコンテンツを受信すると、コンピュータデバイス10は、導出されたコンテンツを生成し、派生コンテンツ157を派生キャッシュ155に記憶するために、受信されたコンテンツをさらに処理することができる。一態様では、この処理は、しばしば使用される派生コンテンツ157の前準備によってキャッシュされたコンテンツの次の使用を効率的に容易にすることを支援することができる。別の態様では、メモリ152は、構造化キャッシュ159を含み得る。構造化キャッシュ159は、取り出すためにコンテンツの選択された既知の部分を選択することによって、取出しが選択的に行われ得ることができるような方式で、コンテンツの記憶を可能にすることができる。一態様では、構造化キャッシュ159は、コンテンツ項目全体の取出しを必要とせずに、構造化キャッシュ159に記憶されたコンテンツ項目の選択された既知の部分を取り出すことができるような方法で編成される。メモリ152は、(たとえば、性能ベース、容量ベースなど)チャネルを推定し、および/または使用することに関連付けられたプロトコルおよび/またはアルゴリズムをさらに記憶することができる。一態様では、メモリ152は、未加工コンテンツのストレージ151をさらに備え得る。未加工コンテンツのストレージ151によって、受信された未加工コンテンツの記憶が可能になり得る。
【0053】
本明細書で説明するデータストア(たとえば、メモリ152)は、揮発性メモリもしくは不揮発性メモリのいずれかとすることができる、または揮発性と不揮発性の両方のメモリを含むことができることは諒解されよう。一態様では、第1の層がファイルシステムベースの不揮発性メモリであり、第2の層がヒープ構造の揮発性メモリであるデュアルメモリモデルが使用され得る。そのような態様では、未加工の受信されたコンテンツは、第1の層に記憶され、派生コンテンツは、第2の層に記憶され得る。さらに、そのような態様では、第2の層は、第1の層よりも迅速にアクセスされ得る。限定ではなく例として、不揮発性メモリには、読取り専用メモリ(ROM)、プログラマブルROM(PROM)、電気的プログラマブルROM(EPROM)、電気的消去可能PROM(EEPROM)、またはフラッシュメモリがあり得る。揮発性メモリは、ランダムアクセスメモリ(RAM)を含むことができ、これは外部キャッシュメモリとして働く。限定ではなく例として、RAMは、同期RAM(SRAM)、ダイナミックRAM(DRAM)、同期DRAM(SDRAM)、ダブルデータレートSDRAM(DDR SDRAM)、拡張SDRAM(ESDRAM)、シンクリンクDRAM(SLDRAM)、およびダイレクトRambus RAM(DRRAM)など、多くの形で使用可能である。対象のシステムおよび方法のメモリ152は、それだけに限定されないが、これらおよび任意の他の適切なタイプのメモリを含み得る。
【0054】
さらに、コンピュータデバイス10は、本明細書で説明するように、ハードウェア、ソフトウェア、およびサービスを利用して、1つまたは複数のエンティティとの通信を確立し、維持することを行う通信構成要素154を含み得る。通信構成要素154は、コンピュータデバイス10上の構成要素間の通信、ならびに、コンピュータデバイス10と、通信ネットワーク上に位置するデバイス、および/またはコンピュータデバイス10に直列またはローカルに接続されたデバイスなどの外部デバイスとの間の通信を、伝え得る。たとえば、通信構成要素154は、1つまたは複数のバスを含んでもよく、外部デバイスとのインターフェースをとるように動作可能な1つまたは複数の送信機および送信チェーン構成要素、ならびに1つまたは複数の受信機および受信チェーン構成要素をさらに含んでもよい。たとえば、そのような送信機と受信機は、1つまたは複数の技術またはプロトコルに従ってワイヤードまたはワイヤレス通信を可能にすることができる。
【0055】
コンピュータデバイス10は、さらに、コンピュータデバイス10のユーザから入力158を受信するように動作可能でありユーザへの提示のための出力160を生成するようにさらに動作可能な、ユーザインターフェース構成要素156を含み得る。ユーザインターフェース構成要素156は、限定はしないが、キーボード、ナンバーパッド、マウス、タッチセンシティブディスプレイ、ナビゲーションキー、ファンクションキー、マイクロフォン、音声認識構成要素、ユーザからの入力を受信することが可能な任意の他の機構、またはそれらの任意の組合せを含む1つまたは複数の入力デバイスを含み得る。さらに、ユーザインターフェース構成要素156は、限定はしないが、ディスプレイ、スピーカー、触覚フィードバック機構、プリンタ、ユーザに出力を提示することが可能な任意の他の機構、またはそれらの任意の組合せを含む1つまたは複数の出力デバイスを含み得る。
【0056】
さらに、上記のように、コンピュータデバイス10は、ウェブブラウザ、ウィジェットもしくはモバイルウィジェット、またはウェブアプリケーションのうちの1つまたは任意の組合せとすることができるポータル構成要素12を含むことができる。ポータル構成要素12は、ウェブページのレンダリングを可能にするために、コンピュータデバイス10のユーザ、ならびにコンピュータデバイス10の他の構成要素とインターフェースするように動作可能である。
【0057】
ウェブエンジン14は、上記で説明したように、DOMについての一致の決定、およびDOMの作成および記憶を管理する。随意に、いくつかの態様では、ウェブエンジン14は、フェッチ操作のタイミングおよび性能を管理するためにフェッチマネージャ162を含み得る。たとえば、フェッチマネージャ162は、照会しているページからちょうどクリックされたリンクを有するページのコンテンツのプリフェッチを可能にすることができ、照会しているページは、プリフェッチを実行するためのURLを含む。一態様では、たとえば、フェッチマネージャ162は、照会しているページのjavascript(登録商標)でプリフェッチ発見呼を実行することができる。別の態様では、たとえば、フェッチマネージャ162は、ページ上でフェッチすべきURLにタグ付けする、または順序付けることができ、したがって、これらのタグまたはURLは、それぞれのページの要求を受信する前にページレンダリングにおいて処理することができる。たとえば、フェッチマネージャ162は、プリフェッチすべきもの、およびプリフェッチすべきときを決定するために、たとえば、リスト内の隣接するページ、階層における隣接するページなど、ページ間の関係を決定するためのアルゴリズムまたは機能を含むことができる。他の態様では、説明する装置および方法は、既知のURLのマニフェストを現在のページのHTMLヘッドに含み得、これは、プリフェッチのためにフェッチマネージャ162によって解析される。別の態様では、説明する装置および方法は、到達可能なページごとにURLの構造化マニフェストを照会しているページのHTMLヘッドに含み得、これは、到達可能なページごとにプリフェッチを実行するために、フェッチマネージャ162によって解析される。本態様のさらなる導出では、説明する装置および方法は、ページメタデータからローカルの「次ページ」のマニフェストを分離することができ、GRSに対するgetPageManifest()の呼としてこれを中に挿入する。これによって、サーバは、ページのxhtmlページを更新する必要なしに、プリフェッチ順を調整することができる。これは別のURLであるので、expiryおよびifmodified-sinceは、この「キャッシュメタデータ」リソースのキャッシングを制御することができる。別
の態様では、説明する装置および方法は、より広いプリフェッチポリシー呼でこのメタデータを取り出すステップを含み得る。そのようなポリシー更新は、テンプレートセット全体のすべてのプリフェッチ順序付けを含み得る。プリフェッチ順序付けは、鍵が付けられ、ブートストラップマニフェストで最初にフェッチされ得る。
【0058】
随意に、いくつかの態様では、ウェブエンジン14は、ページのそれぞれのインスタンスの要求の前にDOMまたはDOMの部分を事前導出するための導出マネージャ164を含み得る。たとえば、レンダリング遅延の大部分は、ウェブドキュメントをDOMに解析させ、レンダリングの用意をさせることに関係する。導出マネージャ164は、DOMへのウェブページの導出を管理し、そのページが必要となるときの前にDOMをキャッシュする際に層を提供するアルゴリズムまたは機能を含む。導出マネージャ164は、スマートな方法でそのような導出が行われることを可能にし、おそらく、マニフェストからの指示を介して最初にダウンロードされるときでなく、代わりに、ウェブエンジン14が相対的に未使用であり、それぞれのページが必要である確率が高いとき、導出およびキャッシングが行われ得る。たとえば、導出マネージャ164のアルゴリズムまたは機能は、事前導出すべきもの、および1つまたは複数のページを事前導出すべきときを決定するために、たとえば、リスト内の隣接するページ、階層における隣接するページなど、ページ間の関係を決定することができる。
【0059】
フェッチマネージャ162および導出マネージャ164は、セッションにおいてページの最初の実行での性能を向上させるために、同じコンピュータデバイス10に組み込まれ得ることに留意されたい。
【0060】
コンピュータデバイス10は、キャッシュの前にコンテンツの処理を支援するために、コンテンツハンドラ166をさらに備え得る。一態様では、コンテンツハンドラ166によって、コンピュータデバイス102は、受信された未加工コンテンツ151から派生コンテンツ157を生成すべきかどうかを決定することができる。さらに、コンテンツハンドラ166は、通信ネットワークから処理命令168を受信することができる。そのような態様では、通信ネットワークは、コンピュータデバイス102で記憶されるコンテンツとともに、処理命令168を提供することができる。一態様では、処理命令168は、処理命令168なしの場合よりも効率的であり得る方法で、コンピュータデバイス102で、未加工コンテンツ151に変換などを実行するために、たとえば通信ネットワークによる、コンピュータデバイス102に渡すいくつかのサーバ側制御を可能にすることができる。一態様では、処理命令168は、効率的な次の取出しを可能にするように、派生コンテンツ157を受信された未加工コンテンツ151と関連付けることを容易にすることができる。たとえば、処理命令168は、画像とともに送信することができ、画像画素を再マッピングするための命令を提供することができる。したがって、処理命令によって転送されるコンテンツのサイズは、小さくてもよい。そして、小型の未加工コンテンツおよび処理命令がコンピュータデバイス102によっていったん受信されると、処理命令168は、コンテンツをよりリッチな画像またはよりリッチなコンテンツの組に拡張するのを容易にする。コンテンツハンドラ166は、受信されたコンテンツの処理を支援するために、構造参照169をさらに含むことができる。構造参照169は、構造キャッシュ159への構造化ストレージを容易にするために、受信されたコンテンツを処理することができる。
【0061】
javascript(登録商標)エンジンなどのスクリプトエンジン50は、スクリプト機能の登録、およびページの所与のインスタンスのスクリプトの実行を管理する。レンダリングエンジン52は、ページの所与のインスタンスのすべてまたは部分を生成またはペイントし、ディスプレイ15(
図1)に提示される表示されたページインスタンス13など、ユーザインターフェース156の構成要素に結果を通信する。
【0062】
次に
図4を参照すると、動作時、一態様では、ページをレンダリングする方法170は、コンピュータデバイスで、ページの要求されたインスタンスの要求を受信するステップを含む(ブロック172)。
【0063】
方法は、さらに、ページの要求されたインスタンスがメモリに記憶されたページのドキュメントオブジェクトモデル(DOM)に対応するかどうかを決定するステップを含む。メモリに記憶されたDOMは、ページの記憶されたインスタンスに対応し、ページの記憶されたインスタンスと要求されたインスタンスの両方について同じである静的部分を備える(ブロック174)。
【0064】
さらに、方法は、ページの要求されたインスタンスがメモリに記憶されたDOMに対応する場合、要求されたインスタンスに対応するDOMの動的部分を参照するステップを含む。動的部分は、ページの要求されたインスタンスに固有である(ブロック176)。
【0065】
方法は、ページの要求されたインスタンスに対応するDOMの動的部分を、DOMの静的部分との関係で記憶するステップも含む(ブロック178)。随意に、方法は、ページの要求されたインスタンスに対応するDOMの静的部分およびDOMの動的部分に従って、ページの要求されたインスタンスをレンダリングするステップをさらに含む(ブロック180)。
【0066】
図5および
図6を参照すると、一態様では、ページのそれぞれの第1および第2のインスタンスをレンダリングする方法は、たとえばユーザ入力またはポータルアプリケーションの開始に基づいて、ページの第1のインスタンスを要求するステップ(202、204、302、304)を含む。方法は、ページのインスタンスがメモリまたはキャッシュに記憶されたDOMに対応するかどうかを、ウェブエンジンが決定するステップ(206、306)をさらに含む。207で、ページのインスタンスがメモリまたはキャッシュ、たとえば事前導出されたDOMに記憶されたDOMに対応する場合、方法は、ペイントプロセスに進む(218)。しかしながら、ページのインスタンスがメモリまたはキャッシュに記憶されたDOMに対応しない場合、対応するGETおよび応答は、それぞれウェブサーバに送信されて、そこから受信される(208、210)。応答は、たとえば、xhtml、cssおよびjavascript(登録商標)を含む。
【0067】
いくつかの態様では、211で、たとえば、派生コンテンツを生成するために受信されたコンテンツを導出するなど、受信されたコンテンツの前処理が実行され得る。一態様では、ウェブサーバから取得された未加工コンテンツは、処理命令によって達成され得る。ウェブサーバからの未加工コンテンツを受信すると、コンテンツハンドラは、受信された未加工コンテンツをキャッシュする前、またはそれと同時に追加の処理が実行され得るかどうかを決定することができる。一態様では、処理命令は、少なくとも受信された未加工コンテンツをさらに処理すべきかどうかを決定することを支援する。別の態様では、受信された未加工コンテンツは、構造参照、サーバ生成のエントリポイントなどによって定義され得るなど、未加工コンテンツに関連付けられた既知の構造によって決定されるように構造化キャッシュに記憶することができる。受信された未加工コンテンツの少なくとも一部が処理され得ることを、コンテンツハンドラがひとたび決定すると、コンテンツハンドラは、派生コンテンツを生成するために、受信された未加工コンテンツの選択された部分を処理する。派生コンテンツは、派生キャッシュに記憶され得る。一態様では、派生コンテンツは、さらに、受信された未加工コンテンツに関連付けられ、それに応じて記憶される。たとえば、派生コンテンツは、ページのそれぞれの第1および第2のインスタンスをレンダリングする際に後で使用するための、コンパイルされたjavascript(登録商標)、および/またはコンパイルされたcssを含み得る。以下で説明するように、
図7〜
図9は、コンテンツを前処理するための様々な方法を示す。
【0068】
次いで、応答データがキャッシュに記憶され(212)、静的DOM部分が作成され、記憶される(214)。静的DOM部分を作成し、記憶するステップは、応答からコンテンツを導出し、ウェブエンジンによって処理することができる形にコンテンツを変換するステップを含み得る。たとえば、応答からコンテンツを導出するステップは、たとえばxhtmlコードなど、応答を解析し、解析された情報からDOMを作成するステップを含み得る。さらに、静的DOMの作成を支援するために、ルールが構築され、DOMに適用され得る。ルールは、たとえば、タイプのルールの中でも、CSSルールを含み得る。静的DOMは、後で使用するために、メモリまたはキャッシュに記憶され得ることを諒解されたい。一態様では、静的DOMの全部または一部は、前処理され(211)、したがって、静的DOM部分は、派生コンテンツを含み得る。代わりに、第2のインスタンスでは、静的DOM部分が見つかり、使用される(316)。どちらの場合も、1つまたは複数の静的DOM部分をペイントし、表示するために、ペイントプロセスが開始される。より詳細には、ウェブエンジンは、ペイントプロセスを開始し(218、318)、静的部分をペイントするために、レンダリングエンジンを開始する(220、320)。レンダリングエンジンは、1つまたは複数の静的DOM部分を表示するために(224、324)、ディスプレイにペイントされた静的部分を転送する(222、322)。このペインティングプロセスのタイミングが変わり得ることに留意されたい。さらに、ペインティングプロセスの間(220、320)、静的構造およびテキストを作成するために、導出されたcssコンテンツ(211)が使用され得る。
【0069】
さらに、応答または記憶された静的DOM部分を取得した後、ロードスクリプト操作が開始され(226、326)、この場合、スクリプトエンジンは、スクリプト機能を登録し(228、328)、オンロードイベントを受信し(230、330)、次いでページスクリプトを実行する(232、332)。スクリプト機能の間(228、232、328、332)、導出されたjavascript(211)が使用され得る。次いで、XHR送信イベント(234、334)がウェブエンジンに送信され、ウェブエンジンは、データがキャッシュにすでに記憶されているかどうかを確かめる(236、336)。そうである場合、237および337で、記憶されたデータは利用され、スクリプトエンジンに渡され得る(244、344)。そうでない場合、データのフェッチおよび応答は、それぞれデータサーバとの間で送受信される(238および240、338および340)。これは、XHR呼(238)、およびXHR結果(240)であり得る。いくつかの態様では、241および341で、211で上記で説明したように、受信されたコンテンツの前処理が実行され得る。以下で説明するように、
図7〜
図9は、コンテンツを前処理するための様々な方法を示す。
【0070】
応答データはキャッシュに記憶され(242、342)、結果はスクリプトエンジンに渡され(244、344)、スクリプトエンジンは、DOM APIを介してデータを適用し、ウェブエンジンのキャッシュにデータを書き込む(246および248、346および348)。次いで、ウェブエンジンは、データの1つまたは複数の動的部分の所与のインスタンスについての動的DOM部分を作成し、記憶する(250、350)。ペインティング操作は高価なリソースであり得るので、ウェブエンジンは、このDOM部分をバッファすることができる(252、352)。次いで、ウェブエンジンは、静的部分についての上記の操作と同様に、ペイント操作を開始し、それによって、ページの所与のインスタンスが作成される。ウェブエンジンは、ペイントプロセスを開始し(254、354)、静的部分をペイントするために、レンダリングエンジンを開始する(256、356)。レンダリングエンジンは、1つまたは複数の静的DOM部分を表示する(260、360)ために、ペイントされた静的部分をディスプレイに転送し(258、358)、それによって、ページの所与のインスタンスが作成される(262、362)。さらに、ペインティングプロセスの間(256、356)、静的構造およびテキストを作成するために、導出されたcssコンテンツ(241、341)が使用され得ることに留意されたい。
【0071】
随意に、いくつかの態様では、
図5および
図6の方法は、フェッチマネージャ162(
図3)を参照して上記で説明したように、1つまたは複数のプリフェッチ操作(264、364)を含み得る。そのようなプリフェッチングがいつ望まれるかという決定に基づいて、プリフェッチ操作の
図5および
図6の操作のシーケンスにおけるタイミングが、示されたアクションに対して変更され得ることに留意されたい。さらに、プリフェッチ操作が追加のGETおよび応答、ならびに/または、XHR呼および結果、ならびに、上記で説明したように、対応する前および後の処理をさらに含み得ることに留意されたい。
【0072】
随意に、ある態様では、
図5および
図6の方法は、導出マネージャ164(
図3)を参照して上記で説明したように、1つまたは複数の事前導出操作(266、366)を含み得る。そのような事前導出がいつ望まれるかという決定に基づいて、事前導出操作の
図5および
図6の操作のシーケンスにおけるタイミングが、示されたアクションに対して変更され得ることに留意されたい。さらに、事前導出操作が追加のGETおよび応答、ならびに/または、追加のXHR呼および結果、ならびに、上記で説明したように、対応する前および後の処理をさらに含み得ることに留意されたい。
【0073】
次に
図7を参照すると、効率的なローカルキャッシュを容易にするための例示的な方法1000が示される。参照番号1002で、生データが受信される。一態様では、データは、処理命令が付随し得る。データは、コンピュータデバイスなどによって受信され得、データは、サーバ、通信ネットワークなどから始まり得る。たとえば、一態様で、生データは、cssおよびjavascript(登録商標)を含み得る。
【0074】
参照番号1004で、方法は、受信されたデータがローカル処理の候補であるかどうかを決定するステップを含む。たとえば、受信されたデータは、さらなる処理を促す処理命令を含み得る。別の態様では、受信されたデータは、cssまたはjavascript(登録商標)など、さらなる処理を促す既知のデータタイプのものでもよい。さらなる処理が必要とされないことが決定された場合、参照番号1006で、受信されたデータがキャッシュされ得る。さらに、または随意に、一態様では、データがさらなる処理の候補であるかどうかにかかわりなく、受信されたデータがキャッシュされ得る。対照的に、参照番号1004で、さらなる処理が促されることが決定された場合、参照番号1008で、ローカルに導出されたコンテンツが受信されたコンテンツから生成される。一態様では、処理命令は、派生コンテンツを生成する際のコンテンツハンドラを案内することができる。たとえば、受信された画像は、コンピューティングデバイスおいて一般的に使用される1つまたは複数のサイズを生成するために処理され得る。別の例では、受信されたプログラムファイルは、コンピューティングデバイスによって後で使用するために、コンパイルされたプログラムを生成するために処理され得る。さらに別の例では、受信されたフォントタイプは、コンピューティングデバイスによって後で使用するために、様々な一般的に使用される色および/またはサイズの変形を生成するために処理され得る。参照番号1010で、少なくとも派生コンテンツがキャッシュに記憶される。別の態様では、派生コンテンツおよび受信されたコンテンツは、その後の取出しを支援するために、記憶され、関連付けられる。一態様では、生データおよび1つまたは複数の導出されたコンテンツ項目のキャッシングは、派生コンテンツ項目についての取出しの後、処理要求を排除することによって、知覚されたアプリケーション性能を向上させることができる。さらに別の態様では、処理命令は、派生コンテンツおよび受信されたコンテンツとともに記憶され、導出され、受信されたコンテンツを関連付けるために使用される。
【0075】
次に
図8を参照すると、一態様によるキャッシュへの記憶の前の処理命令によるコンテンツの変更を容易にするための例示的な方法1100が示される。一態様では、参照番号1102で、コンピューティングデバイスは、キャッシュに記憶されるコンテンツの要求、フェッチなどを行うことができる。そのような態様では、要求は、交渉命令が付随し得る。たとえば、要求は、画像についてであり得、付随する命令が、好ましい画像の可能な画素範囲を提供する。一般に、参照番号1104で、生データが受信される。そのようなデータは、処理命令が伴い得る。一態様では、これらの処理命令は、要求交渉命令に少なくとも部分的に応答して生成される。データは、コンピュータデバイスなどによって受信され得、データは、サーバ、通信ネットワークなどから始まり得る。
【0076】
次に説明するように、参照番号1106で、受信されたデータが付随する処理命令を解析することによってローカル処理の候補であるかどうかが決定される。処理命令がさらなる処理を促さない場合、参照番号1108で、受信されたデータがキャッシュされ得る。対照的に、参照番号1106で、処理命令が追加の処理を促す場合、参照番号1110で、コンテンツハンドラに処理命令および受信されたコンテンツが提供され得る。参照番号1112で、ローカルに導出されたコンテンツ、たとえば派生コンテンツは、ガイドとして処理命令を使用して、未加工コンテンツから生成される。したがって、サーバなどは、送信後の未加工コンテンツの処理を容易にすることができる。たとえば、受信された画像は、処理命令で受信された画像のグラデーションを平滑化するようコンテンツハンドラを促すことによって、低い粒度で画像を生成するために処理され得る。
【0077】
参照番号1114で、少なくとも派生コンテンツがキャッシュに記憶される。別の態様では、導出され、受信されたコンテンツは、その後の取出しを支援するために、記憶され、関連付けられる。さらに別の態様では、処理命令は、導出され、受信されたコンテンツとともに記憶され、導出され、受信されたコンテンツを関連付けるために使用される。
【0078】
次に
図9を参照すると、キャッシュへの構造化ストレージを容易にするための例示的な方法900が示される。一般に、参照番号902で、セマンティック不明確データが受信される。一態様では、データは、選択された部分の構造化取出しを可能にするために、サーバ生成のエントリポイントが付随し得る。別の態様では、データは、既知の構造のものであり得る。データは、コンピュータデバイスなどによって受信され得、データは、サーバ、コンテンツプロバイダなどから始まり得る。
【0079】
次に説明するように、参照番号904で、受信されたデータが既知の構造に関連付けられ得るかどうかが決定される。たとえば、受信されたデータは、サーバ生成のエントリポイントを含むことができ、または既知の構造のものとすることができる。データがさらなる処理を可能にする方法で構築されないことが決定された場合、参照番号906で、受信されたデータがキャッシュされ得る。対照的に、参照番号904で、さらなる処理が促されることが決定された場合、参照番号908で、データ構造が決定され得る。たとえば、いくつかのメディアタイプは、選択的な次の取出しを容易にするための処理を可能にする既知の構造で定義され得る。参照番号910で、受信された構造化コンテンツは、その既知のコンテンツを参照して記憶される。
【0080】
一態様では、参照番号912で、構造化コンテンツの一部分の要求が受信され得る。そのような態様では、参照番号914で、構造化コンテンツの要求された部分が取り出され得る。たとえば、製造業者、タイトルなどに関連付けられた情報は、コンテンツ項目全体の除去なしに、キャッシュの構造化コンテンツから選択的に取り出され得る。
【0081】
一態様による携帯電話によって実行されるモバイルショッピングアプリケーションの1つの例示的な例が、
図10〜
図13に示されている。次に
図10を参照すると、一態様で、たとえばページの第1のインスタンスなど、メインページ500は、上の
図1〜
図7に関して上記で説明したように、ユーザによって要求され、モバイルデバイスに表示され得る。メインページ500は、情報がカタログの様々な商品に関連するカタログリスト504を含み得る。カタログリスト504は、情報の中でも、たとえば506a〜506nなど、カタログ内のデータのカテゴリのリスト、カタログ内の商品の販売促進情報、カタログ内の商品のプレビューおよび/または記述、またはカタログから購入するための商品を含み得る。ユーザが異なるカタログリストを閲覧したい場合、ユーザは、たとえば、選択ボタン502によってショッピングアプリケーションにおける異なるカタログリストに移動することができる。代替的に、または追加として、ユーザは、たとえば、「今週の新着」506cなど、カタログにおけるデータのカテゴリのうちの1つを選択し、選択されたカテゴリのカタログページに移動することができる。ページの第2のインスタンスなど、カタログページの例が
図11に示される。
【0082】
次に
図11を参照すると、一態様では、カタログページ600は、ユーザによって要求され、モバイルデバイスに表示され得、たとえば、ユーザは、メインページ500(
図10)からカタログページ600を選択する。カタログページ600が要求されると、モバイルデバイスは、カタログページ600がショッピングアプリケーションにおけるメインページ500および/または他のページに対応する類似の構造を有するかどうかを決定することができる。カタログページ600がメインページ500と類似の構造を有することが決定されると、モバイルデバイスは、メインページ500のDOMから、カタログページ600の類似の構造を取り出し、再利用することができる。さらに、モバイルデバイスは、カタログページ600がメインページ500とは異なる構造を有することを決定することができ、カタログページ600に固有の商品のDOMを作成することができる。
【0083】
カタログページ600は、たとえば「今週の新着」などのタイトル604、購入する商品のリストの記述608a〜608n、および/または商品のカテゴリ606を含み得る。カテゴリは、カテゴリの中でも、たとえば、ゲーム、音楽、ビデオ、ベストセラー、呼び物の商品、および/または推奨される商品を含み得る。タイトル604が、ユーザがメインページ500(
図10)で選択する選択物に対応し得ることを諒解されたい。さらに、購入する商品608a〜608nは、購入のための商品に関する情報の中でも、購入のための商品を記述する名前612a〜612n、商品の価格614a〜614n、購入のための商品を示す、および/または記述するアイコン610a〜610n、商品についての表示された評価616a〜610n(たとえば、購入のための商品の品質および/または性能に関するデータを要約する星またはテキスト)、および商品のサプライヤーを含み得る。項目の中でも、購入のための商品が、たとえば、ゲーム、音楽、ビデオまたは本を含み得ることを諒解されたい。
【0084】
たとえば、モバイルデバイスは、タイトル604、購入する商品のリスト608a〜608n、および/または商品のカテゴリ606がメインページ500における特徴と類似の構造を有し(たとえば、タイトル504、ボタン502、およびリスト506a〜506n)、メインページ500のDOMから類似の構造を取り出し、再利用することができることを決定することができる。さらに、モバイルデバイスは、タイトル604の名前、たとえば「今週の新着」、ゲームの名前612a〜612n、ゲームのアイコン608a〜608n、ゲームの価格614a〜614n、および/またはゲームの評価616a〜616nがカタログページ600に固有であることを決定することができ、したがって、カタログページ600に固有の特徴について動的DOMを作成することができる。
【0085】
したがって、モバイルデバイスは、カタログページ600に固有のカタログページ600の部分についての動的DOMを作成しており、メインページ500の静的DOMからの類似の構造および/またはインスタンスを再利用している。したがって、モバイルデバイスは、カタログページ600の全DOM構造を再構築する必要はないので、カタログページ600のより速いレンダリングが可能になる。
【0086】
ユーザが異なるカタログページを閲覧したい、またはメインページ500に戻りたい場合、ユーザは、たとえば、ボタン602を選択することによってショッピングアプリケーションにおける異なるカタログページに移動することができる。代替的に、または追加として、ユーザは、たとえば、カタログページ600に列挙されるカテゴリおよび/または商品のうちの1つ、たとえばゲーム「ゲーム#5の名前」612eなどを選択し、商品ページ、たとえば、ページの別の第2のインスタンスに移動することができる。ページの第2のインスタンスなど、商品ページの例が
図12および
図13に示される。
【0087】
次に
図12を参照すると、一態様では、商品詳細ページ700は、ユーザによって要求され、モバイルデバイスに表示され得、たとえば、ユーザは、カタログページ600(
図11)から商品詳細ページ700を選択する。商品詳細ページ700が要求されると、モバイルデバイスは、商品詳細ページ700がショッピングアプリケーションにおけるカタログページ600、メインページ500および/または他のページに対応する類似の構造および/またはインスタンスを有するかどうかを決定することができる。
図11に関して上記で説明したように、モバイルデバイスは、メインページ500および/またはカタログページ600のDOMから、カタログページ600および/またはメインページ500の類似の構造を取り出し、再利用することができる。さらに、モバイルデバイスは、カタログページ600および/またはメインページ500の構造または商品と一致しない商品詳細ページ700の部分についてのDOMを作成することができる。
【0088】
たとえば、モバイルデバイスは、商品詳細ページ700上のボタン702、ゲーム名706、アイコン704、価格710およびゲームの評価708がカタログページ600としての特徴と類似の構造を有し得、カタログページ600のDOMから類似の構造を取り出し、再利用することができることを決定することができる。さらに、モバイルデバイスは、たとえば、この商品を評価する720、お勧めの類似の商品716など、カタログページ600および/またはメインページ500における構造または商品と一致しない商品詳細ページ700の部分のDOMを作成することができる。したがって、モバイルデバイスは、商品詳細ページ700に固有の商品詳細ページ700の部分についての動的DOMを作成しており、カタログページ600および/またはメインページ500からの類似の構造および/またはインスタンスを再利用している。したがって、モバイルデバイスは、商品詳細ページ700の全DOM構造を再構築する必要はないので、商品詳細ページ700のより速いレンダリングが可能になる。
【0089】
ユーザは、前のページを閲覧したい場合、ショッピングアプリケーションにおける前のページに戻るようにボタン702を選択することができる。代替的に、または追加として、ユーザは、たとえば、ゲーム「Guitar Hero III」718など、商品詳細ページ700上の別の商品を選択し、別の商品詳細ページ、たとえば、
図13に示される商品詳細ページ800などに移動することができる。
【0090】
次に
図13を参照すると、一態様による商品詳細ページ800の別の例が示されている。
図12に関して上記で説明したように、モバイルデバイスは、商品詳細ページ800がショッピングアプリケーションにおける商品詳細ページ700、カタログページ600、メインページ500および/または他のページに対応する類似の構造および/またはインスタンスを有するかどうかを決定することができる。モバイルデバイスは、商品詳細ページ700、メインページ500および/またはカタログページ600のDOMから、商品詳細ページ700、カタログページ600および/またはメインページ500の類似の構造を取り出し、再利用することができる。さらに、モバイルデバイスは、商品詳細ページ700、カタログページ600および/またはメインページ500における構造または商品と一致しない商品詳細ページ800の部分についての動的DOMを作成することができる。たとえば、この場合、静的DOM部分は、商品詳細ページ700と同じレイアウトを備え、一方、ゲーム名806、ゲームの評価808、およびゲームの価格810など、動的なデータ項目は動的DOM部分によって表される。
【0091】
図14を参照すると、コンテンツプロバイダを介してウェブサーバおよびデータサーバから受信されたウェブページなどのページをレンダリングする装置400が示される。いくつかの態様では、たとえば、装置400は、モバイルデバイス内に存在することができる。図示のように、装置400は、プロセッサもしくはソフトウェア、またはその組合せ(たとえばファームウェア)によって実施される機能を表すことができる機能ブロックを含む。装置400は、ページに対応するウェブリソースおよびデータを受信し、ページのインスタンスをレンダリングするのを容易にする電気的構成要素の論理グルーピング402を含む。論理グルーピング402は、たとえばコンピュータデバイスで、ページの要求されたインスタンスの要求を受信するための手段404を含むことができる。さらに、論理グルーピング402は、ページの要求されたインスタンスがメモリに記憶されたページのドキュメントオブジェクトモデル(DOM)に対応するかどうかを決定するための手段406を含むことができ、メモリに記憶されたDOMが、ページの記憶されたインスタンスに対応し、ページの記憶されたインスタンスと要求されたインスタンスの両方について同じである静的部分を備える。また、論理グルーピング402は、ページの要求されたインスタンスがメモリに記憶されたDOMに対応する場合、要求されたインスタンスに対応するDOMの動的部分を取り出すための手段408を含むことができ、動的部分が、ページの要求されたインスタンスに固有である。さらに、論理グルーピング402は、ページの要求されたインスタンスに対応するDOMの動的部分を、DOMの静的部分との関係で記憶するための手段410を含むことができる。随意に、論理グルーピング402は、ページの要求されたインスタンスに対応するDOMの静的部分およびDOMの動的部分に従って、ページの要求されたインスタンスをレンダリングするための手段412を含むことができる。したがって、装置400は、ページをレンダリングする際に静的DOM部分を効率的に再利用し、ページのそれぞれの1つまたは複数のインスタンスに対応する1つまたは複数の動的DOM部分を定義する関係を有する共有DOMを作成し、記憶することができる。
【0092】
さらに、装置400は、電気的構成要素404、406、408、410、および随意に412に関連付けられた機能を実行するための命令を保持するメモリ414を含むことができる。電気的構成要素404、406、408、410、および随意に412は、メモリ414の外部にあるものとして示されているが、メモリ414内に存在し得ることを理解されたい。
【0093】
上述のキャッシュおよび処理技術に加えて、さらなる態様は、HTMLコードに加えてHTML計算の再使用を介してブラウザの性能を向上させるためのシステム、方法、およびデバイスを提供し、HTML計算は、対応するDOMツリー構造にリンクされるまたはインデックスが付けられる。ウェブページをロードする際、ブラウザは、通常、2つの高レベルのタスク、すなわち、インターネットを介してHTMLコードをフェッチする(本明細書では「ネットワーク要素」)タスク、およびHTML計算を実行して、HTMLコードのコンテンツを処理する(本明細書では「計算要素」)タスクを実行する。特定のURLから受信されたHTMLコードをローカルメモリにキャッシュすることによって、従来のブラウザは、ウェブページレンダリングプロセスを向上させ、それによって、HTMLをダウンロードするための時間を節約し、ネットワーク要素を向上させる。HTMLコードをキャッシュすることによって、ブラウザは、対応するHTMLコードがキャッシュされるユニフォームリソースロケータ(URL)またはユニフォームリソース識別子(URI)にアクセスするよう求める要求を受信するとすぐに、ページのレンダリングを開始することができる。したがって、従来のブラウザは、HTMLがインターネットを介して受信されたかのように、要求されたURL/URIが記憶されたHTMLコードへのリンクを有するURL/URI構成要素と一致することを決定するとすぐに、ページのレンダリングを開始できるように、HTMLコードを記憶する。しかしながら、そのようなブラウザは、計算要素に対処することができず、同じページがレンダリングされるたびに計算が再実行されることを必要とする。その結果、従来のブラウザは、ネットワーキング要素が性能ボトルネックである程度まで、レンダリング時間を向上させるだけである。
【0094】
データ伝送速度がローカル処理速度よりも遅い場合、HTMLコードをフェッチすることは、性能ボトルネックである。これは通常、多くのデータが限られた帯域幅を有するネットワークを介してフェッチされることを必要とするとき、発生する。しかしながら、近年、ネットワーク帯域幅は、劇的に向上した。これは、3.5Gおよび4Gのモバイルネットワークがますます対応可能になっており、14.4Mbpsを上回る帯域幅を提供することによって立証される。また、URLについてHTMLコードがひとたびキャッシュされると、従来のブラウザは、ページをより高速にレンダリングすることができず、これは、ユーザには、より高速なネットワークにアップグレードすることは、ウェブページのレンダリング時間をあまり向上させないように見え得る。ウェブページは、ますますより複雑になっている。現代のウェブページは、受信されたウェブページのコンテンツを解析し、フォーマット化し、レンダリングするために、かなりの量の計算が必要となる。したがって、ウェブページをレンダリングする際のボトルネックは、ネットワーク要素から計算要素にシフトしている。
【0095】
様々な態様は、1ページの一部分のために計算された計算を、URLおよび/またはURIに基づいてではなく、構造的類似性に基づいて、後続のページの1つまたは複数の部分のレンダリングに効率的に再使用することができるように、DOMツリー構造に対するHTMLレンダリングの計算の効率的なマッピングおよび関連付けを提供する。
【0096】
ウェブブラウザは、ディスプレイに入る要素のすべてを計算し、定義するために、HTMLコードを処理することによって、表示のためのページを生成する。ウェブページ要素のスタイル、フォーマット、およびレイアウトの要求を計算するために必要とする時間は、しばしばかなりかかる。たとえば、レイアウト計算とスタイルフォーマッティングの組合せは、通常、ローカルウェブページ処理の全計算時間の半分以上を占める。さらに、スタイル特性を計算し、それらをDOM要素に適用するプロセスは、通常、ウェブページが要求され、および/またはレンダリングされるたびに実行されなければならない、再帰的でおよび時間のかかるプロセスである。様々な態様は、第1のページのために計算される計算を記憶し、第1および第2のページのウェブページのURL間の任意の関連付けを必要とすることなく、同じまたは類似のDOMツリー構造(すなわち、同形の)を有する第2のページをレンダリングするために記憶された計算を再利用することによって、これらの冗長な、時間のかかるプロセスをなくす。
【0097】
図1および
図2に関して上記で説明した態様は、(URLおよび/またはURIを共有する)同じページの異なるインスタンスが同じDOMツリーの静的部分を共有することができるように、DOMツリーを記憶する。それらの態様では、ページ(たとえば、「itemdetail」ページ)の固有のインスタンスが要求されると、ページデータ(たとえば、ハイパーテキストマークアップ言語(html)、カスケーディングシートスタイル(css)およびjavascript(js))がフェッチされ、DOMツリーの静的部分を作成するために使用され得る。これらの静的部分は、再利用できるように、キャッシュに記憶され得る。すなわち、記憶されたページの第2のインスタンスが要求されると、第1のインスタンスの静的DOM部分が再利用され、1つまたは複数の動的部分が第2のインスタンスのために特に作成される。その結果、これらの態様は、DOMの部分が同じページの異なるインスタンスをレンダリングするために再利用され得るように、DOMを定義することができる。
図15〜
図20に関して以下で説明する態様は、URLまたはURIが異なるときでも、HTMLの計算の再利用を可能にする機能を拡張する。
【0098】
ウェブページをレンダリングする際に、ブラウザは、まず、(ネットワークを介して受信される、またはメモリから呼び戻される)HTMLコードを解析して、DOMツリーを生成する。従来のブラウザ、ならびに様々な実施形態のブラウザは、DOMツリーがメモリ内の任意のDOMツリー構造と一致しないとき、次いで、DOMツリーを処理して、レンダリングされるページの特徴および特性を定義するために必要とされる計算を実行する。これらの計算は、たとえば、ページに表示されるべきサブ要素ごとに、コンピューティングの寸法およびスタイルを含むことができる。任意の所与のウェブページに必要とされ得る多くの既知の計算がある。これらの計算は、レイアウトの計算、スタイルの識別、CSS照合の実行、ならびに、プロセッサおよび/または処理集約的計算を必要とする他の操作を含み得る。様々な態様では、これらの計算は、DOMツリーの対応する部分とともに、メモリに記憶される。次いで、ページがレンダリングされるたびに、生成されたDOMツリーは、計算が実行される前に、任意の一致があるかどうかを決定するために、キャッシュされたDOMツリーと比較される。一致しているDOMツリー構造がメモリにおいて識別された場合、対応するHTML計算結果は、メモリにおいて呼び戻され、再利用され、記憶されたツリーに一致しないページのDOMツリーのそれらの部分のみが、ページをレンダリングするために必要なHTML計算を完了するために処理される。ブラウザは、周知のツリー同形アルゴリズムを使用して、記憶されたDOMツリー部分と要求されたページのDOMツリーとの間の構造的類似性を識別することができる。したがって、この再利用可能性の決定は、URLおよび/またはURIとは無関係になる。
【0099】
さらに以下で説明する態様は、得られた計算をメモリにDOMツリーで記憶し、アクセスされたウェブページをレンダリングするために再利用され得る記憶された計算の部分を識別するためにDOMツリー構造に基づいて認識することによって、ブラウザ性能をさらに向上させ、それによってブラウザによる再使用のために利用可能なHTMLレンダリング計算の量が増加する。これを達成するために、DOMツリーの静的および動的な部分をキャッシュすることに加えて、実際の計算は、メモリに記憶される。様々な態様では、キャッシュされた計算がそれらのDOMツリー(すなわち、計算を達成する際に実行されたDOMツリー)にインデックスを付けられるように、得られた計算をキャッシュすることができる。一態様では、結果は、キー値の対(すなわち、タグおよび値)の形でメモリに記憶される。キーまたはタグはツリー構造要素を識別し、一方、値は、要素のHTML計算の結果である。計算をDOMツリーにインデックス付けすることによって、キャッシュされた計算は、最初にキャッシュされたページまたはレンダリングされるページに関連付けられたURLまたはURIとは無関係に、構造的に類似するDOMツリー部分を有する任意のページをレンダリングするとき、再利用され得る。DOMツリーにインデックスが付けられた計算を記憶することによって、任意の特殊なタグ、URLおよび/もしくはURIに関する情報、または任意の他の追加識別機構を必要とせずに、記憶されたDOMツリーの構造を迅速に解析することもできる。
【0100】
様々な態様は、再利用することができるキャッシュされた計算を認識するために、レンダリングされているページのDOMツリーおよびメモリに記憶されたDOMツリー部分の同形の部分(すなわち、類似のツリー構造を共有する部分)を認識し、識別するために、様々な周知のツリー同形アルゴリズムを使用する。たとえば、ブラウザは、たとえばAlogtime、Aho、Hopcroft、Ullman、および一致するDOMツリー部分を識別するためのツリー同形についての、その内容全体が本明細書に組み込まれる「The Design and Analysis of Computer Algorithms」、Addison-Wesley、1974に記載されている他の同形アルゴリズムなど、周知のアルゴリズムを使用することができる。
【0101】
現在のDOMツリーの部分が記憶されたDOMツリーまたは記憶されたDOMツリーの部分と一致することをブラウザが認識すると、識別された部分に対応するキャッシュされた計算結果を、メモリから迅速かつ効率的に呼び戻すことができる。これは、キー値および入力値の形態で計算結果を記憶することによって達成され得る。これらの態様では、キャッシュされた計算結果を作成するために使用されるキー値および入力値は、記憶された計算結果の1つまたは複数の部分を再利用することができるように、値が同じであるかどうかを決定するために、レンダリングされる現在のページのキー値および入力値と比較され得る。記憶された計算の1つまたは複数の部分が再利用可能であると決定された場合、記憶された計算値がメモリから呼び戻され、ブラウザによって使用される。ページのすべての再利用可能なHTML計算がメモリおよびブラウザによって実行されたすべての他の計算から呼び戻されると、取り出され、実行された計算結果は、ページを表示するために使用され得る。この機能を従来のHTMLキャッシュ機能と結合することによって、ブラウザは、新しく要求されたHTMLページをダウンロードしたり計算したりすることなく、ページを非常に迅速に表示することができる。
【0102】
図15は、要求されたウェブページのブラウザ解析HTMLコードによって生成されるDOMツリー1500のサンプル部分を示す。
図15に示すように、HTMLコードを解析するとき、ブラウザは、ヘッディングごとにDOM要素および/またはノードを作成することができる。図示の例では、HTMLコードは、ヘッダセクション(たとえば、<HEAD>…</HEAD>)、および本文セクション(たとえば、<BODY>…</BODY>)を含む。本文セクションは、DOMツリー1500におけるDivノードおよびSpanノードによって示すように、少なくとも1つのDivセクション、および少なくとも1つのSpanセクションを含む。DivノードおよびSpanノードの各々は、Divセクションのパラグラフセクションによって示すように、サブセクションを含むこともできる。ページをレンダリングするための計算を達成するプロセスにおいて、DOMツリー要素(たとえば本文、Div、パラグラフなど)は、様々なページ構成要素の特性および特徴を計算するためにトラバースされ得る。たとえば、要求されたページのレイアウトを計算するために、DOMツリーは、一般的には実行時および環境要因(たとえば、ウィンドウサイズ)に依存しており、前もって決定することができない各要素の高さ、幅、および位置(たとえば、h=50、w=50、x=500、y=10)の絶対値を抽出するためにトラバースされ得る。様々な態様では、これらの計算された位置値は、次いで、同じまたは類似の計算を含む将来のページをレンダリングする際の再利用のためのDOMツリーにリンクされてメモリに記憶され得る。
【0103】
図16は、計算値がDOMツリー1500の要素ごとに記憶され得ることを示す。図示の例では、各要素の高さ、幅、水平位置(X)および垂直位置(Y)を表す絶対位置値は、ハッシュ表、ハッシュマップ、リンクリスト、バイナリツリー、関連するアレイとしてメモリ1610に記憶され得る。様々な態様では、記憶された情報のキー値対がDOMツリーの対応するノードにマッピングするように、情報は、ハッシュ表および/またはハッシュマップとしてメモリ1610に記憶され得る。たとえば、キー要素がDOMツリー要素を識別し、対応値要素(たとえば、DOM要素の絶対位置値)を探し出す(たとえば、ハッシュマップのハッシュ関数を介して)ように、キー値対は記憶され得る。様々な態様では、ハッシュ表および/またはハッシュマップは、値(たとえば、絶対位置)を識別するために必要な命令の数がDOMツリーにおける要素の数とは無関係であるように、十分に寸法決定され得る。様々な態様では、ハッシュ表および/またはハッシュマップは、DOMツリーおよびそれらの関連する特性を単一の統一されたデータ構造で記憶するために使用され得る。当技術分野で知られている他のデータ構造またはデータ構造の組合せが使用されてもよい。
【0104】
図17は、ブラウザの最初の実行または未確認のDOM構造を有する特定のウェブページの第1の抽出時にDOMツリーを作成し、処理し、記憶するための態様方法1700を示す。方法1700では、ブラウザは、ブロック1702で、所望のウェブページに対応するリモートまたはローカルサーバから、HTMLコードを受信することができる。ブラウザは、ブロック1704で、受信されたHTMLを解析し、DOMツリーを作成することができる。ブロック1706で、ブラウザは、すべての必要な計算を完了するために、DOMツリーを処理することができる。ブロック1708では、ブラウザは、メモリに計算結果をキャッシュし、DOMツリーおよび/または処理されたHTMLコードを構成することができ、ブロック1710で、ディスプレイに出力する。ブロック1712で、ブラウザは、ブラウザが動作しているコンピューティングデバイスの電子ディスプレイに、すべての関連する画像およびファイルとともに、構成され、処理されたHTMLコードを表示することができる。
【0105】
図18は、ブラウザの次の実行時にDOMツリーの部分を作成し、処理し、記憶し、および/または取り出すための態様方法1800を示す。方法1800のブロック1802で、ブラウザは、サーバからHTMLコードを受信し、および/またはキャッシュメモリからHTMLコードを呼び戻すことができる。ブロック1804で、ブラウザは、HTMLコードを解析し、受信されたHTMLコードのDOMツリーの少なくとも一部分を作成することができる。決定ブロック1806で、ブラウザは、DOMツリー構造が同形かどうかを決定することによって、DOMツリーの生成された部分がメモリに記憶された1つまたは複数のDOMツリーの任意の部分と一致するかどうかを決定することができる。様々な態様では、ブラウザは、1つまたは複数の記憶されたDOMツリーのインデックスを評価することによって、この決定を行うことができる。様々な態様では、ブラウザは、DOMツリーの生成された部分に関連付けられたハッシュキーを、メモリに記憶されたDOMツリーの1つまたは複数の部分のハッシュキーと照合し得る。様々な態様では、ブラウザは、生成されたDOMツリーの一部分がメモリに記憶されたDOMツリーの部分のいずれかと一致するかどうかを決定するために、1つまたは複数の同形のアルゴリズムを実行し、またはその実行を開始することができる。同形アルゴリズムの実行は、決定ブロック1806で、生成されたDOMツリーの一部分がメモリに記憶されたDOMツリーの部分と構造的に同一である、および/または構造的に類似しているかどうかを決定することができる。
【0106】
図18に戻ると、DOMツリーの生成された部分がメモリに記憶されたDOMツリーのうちの任意の構造と一致しないことが決定された場合(すなわち、決定ブロック1806=「No」)、ブロック1808で、ブラウザは、DOMツリーの生成された部分を処理し、関連の計算を実行することができる(たとえば、要素の絶対位置、スタイルを計算する、CSS照合を実行するなど)。ブロック1810で、ブラウザは、計算結果をキャッシュすることができ、結果は、DOMツリーの実行された部分にインデックスが付けられる。
【0107】
一方、DOMツリーの生成された部分がメモリに記憶されたDOMツリーの部分の任意のものと構造的に同じ、および/または構造的に類似していることが決定された場合(すなわち、決定ブロック1806=「Yes」)、ブロック1812で、ブラウザは、一致するDOMインデックスに対応するキャッシュされた計算結果をメモリから呼び戻すことができる。決定ブロック1814で、ブラウザは、記憶された計算が要求されたHTMLページを生成する際に再利用可能であることを示す、メモリに記憶された一致した部分のキーおよび/または入力データが生成された部分のキーおよび/または入力データと同じであるかどうかを決定することができる。メモリに記憶された一致した部分のキーおよび/または入力データが、生成された部分のキーおよび/または入力データと同じでない場合(すなわち、決定ブロック1814=「No」)、ブラウザは、ブロック1808で、生成されたDOMツリーを処理し、計算を実行することができる。キーおよび/または入力データが一致する場合(すなわち、決定ブロック1814=「Yes」)、ブラウザは、決定ブロック1816で、すべての必要な計算が計算された、またはメモリから呼び戻されたかどうかを決定することができる。すべての計算が完了しているわけではない場合(すなわち、決定ブロック1816=「No」)、ブラウザは、ブロック1804に戻ることによって、DOMツリーの追加の部分を生成するために、HTMLコードの別のセクションを解析することができる。すべての計算が完了している場合(すなわち、決定ブロック1816=「Yes」)、ブラウザは、ブロック1818で、データを検証し、レンダリングするためのページを構成し、ブロック1820で、コンピューティングデバイスの電子ディスプレイ上にページを表示することができる。
【0108】
図19は、ブラウザの次の実行時にDOMツリーの部分を作成し、処理し、記憶し、および/または取り出すための別の態様方法1900を示す。方法1900のブロック1902で、ブラウザは、キャッシュメモリおよび/またはリモートサーバからHTMLコードを受信することができる。ブロック1904で、ブラウザは、受信されたHTMLを解析し、受信されたHTMLに基づいて、DOMツリーの1つまたは複数の部分を生成することができる。ブロック1908で、ブラウザは、生成されたDOMツリーの一部分がメモリに記憶されたDOMツリーの任意の部分と一致する(たとえば、構造的に類似している)かどうかを決定するために、同形アルゴリズムを実施するスレッド/プロセスを実行することによって、生成されたDOMツリー部分を処理し、メモリに記憶されたDOMツリーと比較することができる。構造的に類似のおよび/または同一のDOMツリー部分(たとえば、同形の部分)がキャッシュメモリで見つからない場合、ブラウザは、上述の例示的な構造のうちの1つなどのデータ構造を使用して、DOMツリーにインデックスが付けられる計算をメモリに記憶することができる。構造的に類似のおよび/または同一のDOMツリー部分(たとえば、同形の部分)がメモリで見つかった場合、決定ブロック1910で、ブラウザは、キャッシュメモリから同形の部分を抽出し、および/または取り出すことができ、キーおよび/またはデータ入力値が一致するかどうかを決定することができる。様々な態様では、比較されたDOMツリーの1つまたは複数の部分が同形であると決定されたときはいつでもキーおよび/または入力データが一致するように、DOMツリーは、ハッシュ表および/またはハッシュマップに記憶され得る。これらの態様では、ブロック1908は、ブロック1920によって示すように、決定ブロック1910およびブロック1912と結合され得る。
【0109】
DOMツリーの生成された部分のキーおよび/またはデータ入力値がキャッシュメモリに記憶されたDOMツリーの部分のキーおよび/またはデータ入力値のいずれとも一致しないことが決定された場合(すなわち、決定ステップ1910=「No」)、ブラウザは、
図17に関して方法1700で上記で説明したように、DOMツリーをトラバースし、関連の計算を実行することによって、生成された部分を作成し、処理し、および/または記憶することができる。一方、DOMツリー部分の1つまたは複数が一致するキーおよび/または入力値を有することが決定された場合(すなわち、決定ステップ1910=「Yes」)、ブラウザは、ブロック1912で、一致するキーおよび/または入力値に関連付けられた値をメモリから引き出すことができる。決定ブロック1914で、引き出された値(たとえば、メモリから取り出される記憶された計算)は、1つまたは複数の既知のデータおよび/またはHTML検証方式を使用して検証され得る。検証方式のうちの1つまたは複数が失敗する(すなわち、決定ブロック1914=「No」)場合、DOMツリーをトラバースし、
図17に関して方法1700によって上記で説明したように、関連する計算を実行することによって、ブラウザは、HTML計算の生成された部分を作成し、処理し、記憶することができる。データが有効であることが決定された場合(すなわち、決定ブロック1914=「Yes」)、ブラウザは、ブロック1916でページを構成し、ブロック1918で電子ディスプレイに得られたHTMLウェブページを表示することができる。
【0110】
図20は、態様の任意のものとともに使用するのに適した、モバイルコンピューティングデバイスのシステムブロック図である。代表的なモバイルコンピューティングデバイス2000は、内部メモリ2002と、ディスプレイ2003と、スピーカー2054とに結合された、プロセッサ2001を含み得る。加えて、モバイルコンピューティングデバイス2000は、ワイヤレスデータリンク、ならびに/またはプロセッサ2001に結合されたセルラー電話送受信機2005、およびプロセッサ2001に結合されたモバイルコンピューティングデバイス2024に接続され得る、電磁放射を送信および受信するためのアンテナ2004を含み得る。モバイルコンピューティングデバイス2000は、一般に、ユーザ入力を受信するためのメニュー選択ボタンまたはロッカースイッチ2008をも含む。
【0111】
上記で説明した態様は、
図21に示されるラップトップコンピュータ2100など、様々なコンピューティングデバイス内で実施することもできる。多くのラップトップコンピュータは、コンピュータのポインティングデバイスとして働くタッチパッドタッチ面を含み、およびしたがって、タッチスクリーンディスプレイを備えたモバイルコンピューティングデバイス上で実施されるものと同様のドラッグ、スクロール、およびフリックジェスチャーを受信することができる。ラップトップコンピュータ2100は通常、揮発性メモリ2102と、ディスクドライブ2103のような大容量の不揮発性メモリとに結合されたプロセッサ2101を含む。コンピュータ2100はまた、プロセッサ2101に結合された、フレキシブルディスクドライブ2104およびコンパクトディスク(CD)ドライブ2105も含み得る。コンピュータデバイス2100はまた、USBもしくはFireWire(登録商標)コネクタソケット、または、プロセッサ2101をネットワークに結合するための他のネットワーク接続回路2106のような、データ接続を確立し外部メモリデバイスを受け入れるための、プロセッサ2101に結合されたいくつかのコネクタポートを含み得る。ノートブック構成において、コンピュータハウジングは、プロセッサ2101にすべて結合されるタッチパッド2107、キーボード2108、およびディスプレイ2109を含む。コンピューティングデバイスの他の構成は、周知であるように、(たとえば、USB入力を介して)プロセッサに結合されたコンピュータマウスまたはトラックボールを含み得る。
【0112】
プロセッサ2001、2101は、以下で説明する様々な実施形態の機能を含む、様々な機能を実行するようにソフトウェア命令(アプリケーション)によって構成され得る任意のプログラマブルマイクロプロセッサ、マイクロコンピュータあるいは1つまたは複数の多重プロセッサチップであり得る。いくつかのモバイル受信機デバイスでは、1つのプロセッサをワイヤレス通信機能専用とし、1つのプロセッサを他のアプリケーションの実行専用とするなど、複数のプロセッサ2101を設けることができる。一般的には、ソフトウェアアプリケーションは、それらがアクセスされ、プロセッサ2001、2101にロードされる前に、内部メモリ2002、2102、2103内に記憶され得る。プロセッサ2001、2101は、アプリケーションソフトウェア命令を記憶するのに十分な内部メモリを含み得る。
【0113】
本明細書で開示する実施形態に関して説明する様々な例示的な論理、論理ブロック、モジュール、および回路は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または、本明細書で説明する機能を実行するように設計されたそれらの任意の組合せによって、実装または実行されてもよい。汎用プロセッサはマイクロプロセッサであってよいが、代替として、汎用プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であってもよい。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つまたは複数のマイクロプロセッサ、または、任意の他のそのような構成として実装され得る。さらに、少なくとも1つのプロセッサは、上述のステップおよび/またはアクションの1つまたは複数を実行するように動作可能な、1つまたは複数のモジュールを含み得る。
【0114】
さらに、本明細書で開示した態様に関して説明した方法またはアルゴリズムのステップおよび/またはアクションは、直接ハードウェアで実施するか、プロセッサによって実行されるソフトウェアモジュールで実施するか、またはその2つの組合せで実施され得る。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態の記憶媒体中に常駐し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込み得るようにプロセッサに結合され得る。代替として、記憶媒体はプロセッサと一体であり得る。さらに、いくつかの態様では、プロセッサおよび記憶媒体はASIC中に常駐し得る。さらに、ASICはユーザ端末中に常駐し得る。代替として、プロセッサおよび記憶媒体は、ユーザ端末中に個別構成要素として常駐し得る。さらに、いくつかの態様では、方法またはアルゴリズムのステップおよび/またはアクションは、コンピュータプログラム製品に組み込まれ得る、機械可読媒体および/またはコンピュータ可読媒体上のコードおよび/または命令の1つまたは任意の組合せ、あるいはそのセットとして常駐し得る。
【0115】
1つまたは複数の態様では、説明する機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。各機能は、ソフトウェアで実装される場合、1つまたは複数の命令またはコードとして非一時的コンピュータ可読媒体上に記憶されるか、または、コンピュータ可読媒体上で送信され得る。非一時的コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の形態のコンピュータ記憶媒体を含む。非一時的記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体であり得る。限定ではなく例として、そのような非一時的コンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または、命令もしくはデータ構造の形式で所望のプログラムコードを搬送もしくは記憶するために使用され得るとともに、コンピュータによってアクセスされ得る任意の他の媒体を含み得る。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フレキシブルディスク(disk)およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、通常、データをレーザで光学的に再生する。上記の組合せも非一時的コンピュータ可読媒体の範囲内に含めるべきである。
【0116】
上記の開示は、例示的な態様および/または実施形態について論じたが、添付の特許請求の範囲によって定義される、説明した態様および/または実施形態の範囲から逸脱することなく、様々な変更および改変を本明細書で行うことができることに留意されたい。さらに、説明した態様および/または実施形態の要素は、単数形で説明または請求されていることがあるが、単数形に限定することが明示的に述べられていない限り、複数形が企図される。さらに、任意の態様および/または実施形態の全部または一部は、別段に記載されていない限り、任意の他の態様および/または実施形態の全部または一部とともに利用され得る。