(57)【特許請求の範囲】
【請求項１】
コンピュータデバイス上でページをレンダリングするための方法であって、
前記コンピュータデバイスにおいて、前記ページの要求されたインスタンスについての要求を受信するステップと、
前記ページの前記要求されたインスタンスがメモリに記憶された前記ページのためのドキュメントオブジェクトモデル(DOM)に対応することを判断するステップであって、前記メモリに記憶された前記DOMが、前記ページの記憶されたインスタンスに対応し、前記ページの前記記憶されたインスタンスと前記要求されたインスタンスの両方について同じである静的部分を含む、判断するステップと、
前記ページの前記要求されたインスタンスが前記メモリに記憶された前記DOMに対応することの判断に応じて、前記ページの前記要求されたインスタンスに固有な動的部分を識別するステップと、
前記DOMの前記静的部分と前記ページの前記要求されたインスタンスに固有な前記動的部分との間の関係を定義するために、前記ページの前記記憶されたインスタンスおよび前記要求されたインスタンスに対応する前記DOM内の前記メモリの前記ページの前記要求されたインスタンスに固有な前記動的部分を記憶するステップと
を含む方法。
【請求項２】
前記DOMの前記静的部分と、前記ページの前記要求されたインスタンスに固有な前記DOMの前記動的部分との間の前記定義された関係に従って、前記ページの前記要求されたインスタンスをレンダリングするステップをさらに含む、請求項1に記載の方法。
【請求項３】
前記レンダリングするステップが、前記DOMの前記静的部分を再使用するステップと、
前記ページの前記要求されたインスタンスに固有な前記DOMの前記動的部分を処理するステップと
をさらに含む、請求項2に記載の方法。
【請求項４】
ローカルキャッシュへの未加工コンテンツを受信するステップと、
前記受信された未加工コンテンツの少なくとも一部分が派生処理をトリガすることの判断に応じて、前記受信された未加工コンテンツの少なくとも一部分から派生コンテンツを生成するステップと、
前記派生コンテンツを生成するために使用される前記受信された未加工コンテンツの前記少なくとも一部分に前記派生コンテンツを関連付けるステップと、
前記派生コンテンツを前記ローカルキャッシュに記憶するステップと
をさらに含む、請求項1に記載の方法。
【請求項５】
前記未加工コンテンツとともに処理命令を受信するステップと、
前記受信された未加工コンテンツの前記少なくとも一部分が前記派生処理をトリガすべきかどうかを判断するために前記処理命令を適用するステップと
をさらに含み、
前記派生コンテンツを生成するステップは、前記受信された未加工コンテンツの前記少なくとも一部分を処理するために前記処理命令を使用するステップをさらに含む、請求項4に記載の方法。
【請求項６】
ローカルキャッシュへのセマンティック不明確コンテンツを受信するステップと、
前記記憶されたセマンティック不明確コンテンツの部分が、定義されたフォーミュレーションを通して選択的に検索されることを可能にする既知の構造に従って、前記受信されたセマンティック不明確コンテンツの少なくとも一部分を構造化キャッシュに記憶するステップと
をさらに含む、請求項1に記載の方法。
【請求項７】
前記受信された要求が、前記ページの前記要求されたインスタンスのロケーションを定義するための第1の部分と、前記ページの前記要求されたインスタンスを検索するためにデータを定義するための第2の部分とを含む、請求項1に記載の方法。
【請求項８】
前記DOMが、前記ページの少なくとも前記記憶されたインスタンスと、前記ページの前記要求されたインスタンスと、前記ページの前記要求されたインスタンスに固有な前記動的部分と、前記ページの前記記憶されたインスタンスおよび前記要求されたインスタンスの両方について同じである前記静的部分との間の関係を表す階層を定義する、請求項1に記載の方法。
【請求項９】
前記ページの前記要求されたインスタンスについての前記要求を受信するより前に前記DOMの前記ページの前記記憶されたインスタンスおよび前記要求されたインスタンスの両方について同じである前記静的部分を事前導出するステップと記憶するステップとをさらに含む、請求項1に記載の方法。
【請求項１０】
前記事前導出するステップが、
前記DOMを作成するために前記ページの前記要求されたインスタンスからコンテンツをパースするステップと、
前記ページの前記記憶されたインスタンスおよび前記要求されたインスタンスの両方について同じである前記静的部分を作成するためのルールを前記DOMに適用するステップと
をさらに含む、請求項9に記載の方法。
【請求項１１】
前記ページの前記要求されたインスタンスについての前記要求を受信するより前に前記ページの前記要求されたインスタンスからコンテンツをプリフェッチするステップをさらに含む、請求項1に記載の方法。
【請求項１２】
前記プリフェッチするステップは、前記ページの前記要求されたインスタンスと１つまたは複数の隣接するページとの間の関係を判断するために、および前記ページの前記要求されたインスタンスからプリフェッチすべきコンテンツを判断するために、１つまたは複数のアルゴリズムを使用することを含む、請求項11に記載の方法。
【請求項１３】
コンピュータデバイス上でページをレンダリングするように構成された少なくとも1つのプロセッサであって、
前記コンピュータデバイスにおいて、前記ページの要求されたインスタンスについての要求を受信するための第1のモジュールと、
前記ページの前記要求されたインスタンスがメモリに記憶された前記ページのためのドキュメントオブジェクトモデル(DOM)に対応することを判断するための第2のモジュールであって、前記メモリに記憶された前記DOMが、前記ページの記憶されたインスタンスに対応し、前記ページの前記記憶されたインスタンスと前記要求されたインスタンスの両方について同じである静的部分を含む、第2のモジュールと、
前記ページの前記要求されたインスタンスが前記メモリに記憶された前記DOMに対応することの判断に応じて、前記ページの前記要求されたインスタンスに固有な動的部分を識別するための第3のモジュールと、
前記DOMの前記静的部分と前記ページの前記要求されたインスタンスに固有な前記動的部分との間の関係を定義するために、前記ページの前記記憶されたインスタンスおよび前記要求されたインスタンスに対応する前記DOM内の前記メモリの前記ページの前記要求されたインスタンスに固有な前記動的部分を記憶するための第4のモジュールと
を含むプロセッサ。
【請求項１４】
コンピュータデバイス上でページをレンダリングするためのコンピュータ実行可能な命令を含むコンピュータ読取可能な記憶媒体であって、前記コンピュータデバイス上で前記コンピュータ実行可能な命令を実行することにより、前記コンピュータデバイスは、
前記ページの要求されたインスタンスについての要求を受信することと、
前記ページの前記要求されたインスタンスがメモリに記憶された前記ページのためのドキュメントオブジェクトモデル(DOM)に対応することを判断することであって、メモリに記憶された前記DOMが、前記ページの記憶されたインスタンスに対応し、前記ページの前記記憶されたインスタンスと前記要求されたインスタンスの両方について同じである静的部分を含む、判断することと、
前記ページの前記要求されたインスタンスが前記メモリに記憶された前記DOMに対応することの判断に応じて、前記ページの前記要求されたインスタンスに固有な動的部分を識別することと、
前記DOMの前記静的部分と前記ページの前記要求されたインスタンスに固有な前記動的部分との間の関係を定義するために、前記ページの前記記憶されたインスタンスおよび前記要求されたインスタンスに対応する前記DOM内の前記メモリの前記ページの前記要求されたインスタンスに固有な前記動的部分を記憶することと
を行うコンピュータ読取可能な記憶媒体。
【請求項１５】
ページの要求されたインスタンスについての要求を受信するための手段と、
前記ページの前記要求されたインスタンスがメモリに記憶された前記ページのためのドキュメントオブジェクトモデル(DOM)に対応することを判断するための手段であって、メモリに記憶された前記DOMが、前記ページの記憶されたインスタンスに対応し、前記ページの前記記憶されたインスタンスと前記要求されたインスタンスの両方について同じである静的部分を含む、判断するための手段と、
前記ページの前記要求されたインスタンスが前記メモリに記憶された前記DOMに対応することの判断に応じて、前記ページの前記要求されたインスタンスに固有な動的部分を識別するための手段と、
前記DOMの前記静的部分と前記ページの前記要求されたインスタンスに固有な前記動的部分との間の関係を定義するために、前記ページの前記記憶されたインスタンスおよび前記要求されたインスタンスに対応する前記DOM内の前記メモリの前記ページの前記要求されたインスタンスに固有な前記動的部分を記憶するための手段と
を含む装置。
【請求項１６】
コンピュータデバイス上でページをレンダリングするための装置であって、
前記ページの要求されたインスタンスについての要求を受信するように構成されたポータル構成要素と、
前記ページの前記要求されたインスタンスがメモリに記憶された前記ページのためのドキュメントオブジェクトモデル(DOM)に対応することを判断することであって、メモリに記憶された前記DOMが、前記ページの記憶されたインスタンスに対応し、前記ページの前記記憶されたインスタンスと前記要求されたインスタンスの両方について同じである静的部分を含む、判断することと、
前記ページの前記要求されたインスタンスが前記メモリに記憶された前記DOMに対応することの判断に応じて、前記ページの前記要求されたインスタンスに固有な動的部分を識別することと、
前記DOMの前記静的部分と前記ページの前記要求されたインスタンスに固有な前記動的部分との間の関係を定義するために、前記ページの前記記憶されたインスタンスおよび前記要求されたインスタンスに対応する前記DOM内の前記メモリの前記ページの前記要求されたインスタンスに固有な前記動的部分を記憶することと
を行うように構成されたウェブ構成要素と
を含む装置。
【請求項１７】
前記DOMの前記静的部分と、前記ページの前記要求されたインスタンスに固有な前記DOMの前記動的部分との間の前記定義された関係に従って、前記ページの前記要求されたインスタンスをレンダリングするように構成されたレンダリング構成要素をさらに含む、請求項16に記載の装置。
【請求項１８】
前記レンダリング構成要素が、前記DOMの前記静的部分を再使用することと、前記ページの前記要求されたインスタンスに固有な前記DOMの前記動的部分を処理することとを行うようにさらに構成された、請求項17に記載の装置。
【請求項１９】
前記ポータル構成要素を通して受信された未加工コンテンツを記憶するように構成されたローカルキャッシュと、
前記受信された未加工コンテンツの少なくとも一部分が派生処理をトリガすることの判断に応じて、前記受信された未加工コンテンツの前記少なくとも一部分から派生コンテンツを生成し、
前記派生コンテンツを生成するために使用される前記受信された未加工コンテンツの前記少なくとも一部分に前記派生コンテンツを関連付け、
前記ローカルキャッシュに前記派生コンテンツを記憶する
ように構成されたコンテンツハンドラと、
をさらに含む、請求項16に記載の装置。
【請求項２０】
前記未加工コンテンツとともに処理命令を受信することと、前記受信された未加工コンテンツの前記少なくとも一部分が前記派生処理をトリガすべきかどうかを判断するために前記処理命令を適用することとを行うように構成されたコンテンツハンドラ構成要素をさらに含み、
前記コンテンツハンドラは、前記受信された未加工コンテンツの前記少なくとも一部分を処理して前記派生コンテンツを生成するために前記処理命令を使用するようにさらに構成される請求項19に記載の装置。
【請求項２１】
前記ポータル構成要素を通して受信されたセマンティック不明確コンテンツを記憶するように構成されたローカルキャッシュと、
前記記憶されたセマンティック不明確コンテンツの部分が、定義されたフォーミュレーションを通して選択的に検索されることを可能にする既知の構造に従って、前記受信されたセマンティック不明確コンテンツの少なくとも一部分を構造化キャッシュに記憶するように構成されたコンテンツハンドラと
をさらに含む、請求項16に記載の装置。
【請求項２２】
前記受信された要求が、前記ページの前記要求されたインスタンスのロケーションを定義するための第1の部分と、前記ページの前記要求されたインスタンスを検索するためにデータを定義するための第2の部分とを含む、請求項16に記載の装置。
【請求項２３】
前記DOMが、前記ページの少なくとも前記記憶されたインスタンスと、前記ページの前記要求されたインスタンスと、前記ページの前記要求されたインスタンスに固有な前記動的部分と、前記ページの前記記憶されたインスタンスおよび前記要求されたインスタンスの両方について同じである前記静的部分との間の関係を表す階層を定義する、請求項16に記載の装置。
【請求項２４】
前記ポータル構成要素が前記ページの前記要求されたインスタンスについての前記要求を受信するより前に前記DOMの前記記憶されたインスタンスおよび前記要求されたインスタンスの両方について同じである前記静的部分を事前導出することと、記憶することとを行うように構成された導出マネージャ構成要素をさらに含む、請求項16に記載の装置。
【請求項２５】
前記導出マネージャ構成要素が、
前記DOMを作成するために前記ページの前記要求されたインスタンスからコンテンツをパースすることと、
前記ページの前記記憶されたインスタンスおよび前記要求されたインスタンスの両方について同じである前記静的部分を作成するためのルールを前記DOMに適用することと
を行うようにさらに構成された、請求項24に記載の装置。
【請求項２６】
前記ポータル構成要素が前記ページの前記要求されたインスタンスについての前記要求を受信するより前に前記ページの前記要求されたインスタンスからコンテンツをプリフェッチするように構成されたフェッチマネージャ構成要素をさらに含む、請求項16に記載の装置。
【請求項２７】
前記フェッチマネージャが、前記ページの前記要求されたインスタンスと１つまたは複数の隣接するページとの間の関係を判断するために、および前記ページの前記要求されたインスタンスからプリフェッチすべき前記コンテンツを判断するために、１つまたは複数のアルゴリズムを使用するようにさらに構成された、請求項26に記載の装置。
【請求項２８】
コンピュータデバイス上でページをレンダリングするための方法であって、
第１のページインスタンスについての要求を前記コンピュータデバイスで受信するステップと、
前記第１のページインスタンスに固有な動的部分を識別するステップと、
前記第１のページインスタンスが、メモリに記憶された共有ドキュメントオブジェクトモデル（ＤＯＭ）に対応するか否かを判断するステップであって、前記共有ＤＯＭが、前記ＤＯＭに記憶された前記第１のページインスタンスと前記第２のページインスタンスとの両方に共通する共有静的部分を含む場合、前記第１のページインスタンスは、前記共有ＤＯＭに対応する、判断するステップと、
前記第１のページインスタンスが前記共有ＤＯＭに対応する場合、前記共有ＤＯＭの前記第１のページインスタンスに固有な前記動的部分を記憶するステップと、
前記第１のページインスタンスが前記共有ＤＯＭに対応しない場合、前記メモリで新規ＤＯＭを作成し、前記第１のページインスタンスに固有な前記動的部分と前記新規ＤＯＭの前記第１のページインスタンスのうち異なるインスタンスに共通する静的部分とを記憶するステップと
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
米国特許法第119条に基づく優先権の主張
本特許出願は、本出願の譲受人に譲渡され、参照により本明細書に明確に組み込まれる、2009年10月6日に出願された「Apparatus  and  Methods  of  Rendering  a  Page」と題する仮出願第61/248,909号、および本出願の譲受人に譲渡され、参照により本明細書に明確に組み込まれる、2009年3月31日に出願された「Method  and  Apparatus  for  Facilitating  Efficient  Local  Caching」と題する仮出願第61/165,238号の優先権を主張する。
【０００２】
以下の説明は、一般にコンピューティングデバイス通信に関し、より詳細には、ページをレンダリングする装置および方法に関する。
【背景技術】
【０００３】
コンピューティングデバイス上のウェブページなどのページのレンダリングは、ページのドキュメントオブジェクトモデル(DOM)ツリーの影響を受ける。DOMツリーは、それぞれのDOMノードのプロパティおよび/または属性とそのスタイル属性とを含む、親子関係の1つまたは複数のノードを定義する。ページが開始されると、その.htmlファイルがキャッシュから読み込まれ、パースされ、DOMツリーが構築され、次いで埋め込まれるか、または外部カスケーディングスタイルシート(css)が適用される。これらの動作は、ページがロードされるたびに行われ、かなりの時間量を要し、それにより、満足とは言えないユーザエクスペリエンスをもたらす。
【０００４】
その上、モバイルコンピューティングデバイス、たとえばモバイルフォン、携帯情報端末(PDA)、または非モバイルコンピューティングデバイスと比較して相対的に制限された処理機能、メモリ、および/または通信スループットを有する他の相対的に小さいポータブルデバイスの場合など、リソース制約付き環境では、この時間量が悪化する。したがって、モバイルコンピューティングデバイスの場合、ユーザエクスペリエンスはなお一層悪くなる。
【０００５】
したがって、ページのレンダリングの改善が望まれる。
【０００６】
以下で、1つまたは複数の態様の基本的理解を与えるために、そのような態様の簡略化された概要を提示する。この概要は、すべての企図された態様の包括的な概観ではなく、すべての態様の主要または重要な要素を識別するものでも、いずれかまたはすべての態様の範囲を定めるものでもない。その唯一の目的は、後で提示するより詳細な説明の導入として、1つまたは複数の態様のいくつかの概念を簡略化された形で提示することである。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
一態様は、コンピュータデバイス上でページをレンダリングするための方法に関する。本方法は、コンピュータデバイスにおいて、ページの要求されたインスタンスについての要求を受信するステップを含み得る。さらに、本方法は、ページの要求されたインスタンスが、メモリに記憶されたページのためのドキュメントオブジェクトモデル(DOM)に対応するかどうかを判断するステップを含み得る。メモリに記憶されたDOMは、ページの記憶されたインスタンスに対応し、ページの記憶されたインスタンスと要求されたインスタンスの両方について同じである静的部分を含む。さらに、ページの要求されたインスタンスがメモリに記憶されたDOMに対応する場合、本方法はまた、要求されたインスタンスに対応するDOMの動的部分を検索するステップを含み得る。動的部分は、ページの要求されたインスタンスに固有である。その上、本方法は、DOMの静的部分との関係で、ページの要求されたインスタンスに対応するDOMの動的部分を記憶するステップを含み得る。
【０００８】
別の態様は、コンピュータデバイス上でページをレンダリングするように構成された少なくとも1つのプロセッサに関する。プロセッサは、コンピュータデバイスにおいて、ページの要求されたインスタンスについての要求を受信するための第1のモジュールを含み得る。プロセッサはまた、ページの要求されたインスタンスが、メモリに記憶されたページのためのドキュメントオブジェクトモデル(DOM)に対応するかどうかを判断するための第2のモジュールを含み得る。メモリに記憶されたDOMは、ページの記憶されたインスタンスに対応し、ページの記憶されたインスタンスと要求されたインスタンスの両方について同じである静的部分を含む。さらに、ページの要求されたインスタンスがメモリに記憶されたDOMに対応する場合、プロセッサは、要求されたインスタンスに対応するDOMの動的部分を検索するための第3のモジュールを含み得る。動的部分は、ページの要求されたインスタンスに固有である。プロセッサはまた、DOMの静的部分との関係で、ページの要求されたインスタンスに対応するDOMの動的部分を記憶するための第4のモジュールを含み得る。
【０００９】
さらに別の態様は、コンピュータデバイス上でページをレンダリングするためのコンピュータプログラム製品に関する。コンピュータプログラム製品は、コンピュータデバイスにおいて、ページの要求されたインスタンスについての要求をコンピュータに受信させるための少なくとも1つの命令を含むコンピュータ可読媒体を含み得る。コンピュータ可読媒体はまた、ページの要求されたインスタンスが、メモリに記憶されたページのためのドキュメントオブジェクトモデル(DOM)に対応するかどうかをコンピュータに判断させるための少なくとも1つの命令を含み得る。メモリに記憶されたDOMは、ページの記憶されたインスタンスに対応し、ページの記憶されたインスタンスと要求されたインスタンスの両方について同じである静的部分を含む。コンピュータ可読媒体はさらに、ページの要求されたインスタンスがメモリに記憶されたDOMに対応する場合、要求されたインスタンスに対応するDOMの動的部分をコンピュータに検索させるための少なくとも1つの命令を含み得る。動的部分は、ページの要求されたインスタンスに固有である。その上、コンピュータ可読媒体はまた、DOMの静的部分との関係で、ページの要求されたインスタンスに対応するDOMの動的部分をコンピュータに記憶させるための少なくとも1つの命令を含み得る。
【００１０】
別の態様は装置に関する。本装置は、コンピュータデバイスにおいて、ページの要求されたインスタンスについての要求を受信するための手段を含み得る。さらに、本装置は、ページの要求されたインスタンスが、メモリに記憶されたページのためのドキュメントオブジェクトモデル(DOM)に対応するかどうかを判断するための手段を含み得る。メモリに記憶されたDOMは、ページの記憶されたインスタンスに対応し、ページの記憶されたインスタンスと要求されたインスタンスの両方について同じである静的部分を含む。ページの要求されたインスタンスがメモリに記憶されたDOMに対応する場合、本装置はまた、要求されたインスタンスに対応するDOMの動的部分を検索するための手段を含み得る。動的部分は、ページの要求されたインスタンスに固有である。本装置はさらに、DOMの静的部分との関係で、ページの要求されたインスタンスに対応するDOMの動的部分を記憶するための手段を含む。
【００１１】
さらに別の態様は、コンピュータデバイス上でページをレンダリングするための装置に関する。本装置は、ページの要求されたインスタンスについての要求を受信するように構成されたポータル構成要素を含み得る。本装置はまた、ページの要求されたインスタンスが、メモリに記憶されたページのためのドキュメントオブジェクトモデル(DOM)に対応するかどうかを判断するように構成されたウェブ構成要素を含み得る。メモリに記憶されたDOMは、ページの記憶されたインスタンスに対応し、ページの記憶されたインスタンスと要求されたインスタンスの両方について同じである静的部分を含む。さらに、ページの要求されたインスタンスがメモリに記憶されたDOMに対応する場合、本装置は、要求されたインスタンスに対応するDOMの動的部分を検索するように構成されたウェブ構成要素を含み得る。動的部分は、ページの要求されたインスタンスに固有である。本装置はさらに、DOMの静的部分との関係で、ページの要求されたインスタンスに対応するDOMの動的部分を記憶するように構成されたウェブ構成要素を含み得る。
【００１２】
説明する態様は、コンピュータデバイス上でページをレンダリングするための方法、装置またはコンピュータプログラム製品であって、コンピュータデバイスにおいて、ページの要求されたインスタンスについての要求を受信することと、ページの要求されたインスタンスがメモリに記憶されたページのためのドキュメントオブジェクトモデル(DOM)に対応するかどうかを判断することであって、メモリに記憶されたDOMが、ページの記憶されたインスタンスに対応し、ページの記憶されたインスタンスと要求されたインスタンスの両方について同じである静的部分を含む、判断することと、ページの要求されたインスタンスがメモリに記憶されたDOMに対応する場合、要求されたインスタンスに対応するDOMの動的部分を検索することであって、動的部分が、ページの要求されたインスタンスに固有である、検索することと、DOMの静的部分との関係で、ページの要求されたインスタンスに対応するDOMの動的部分を記憶することと、場合によっては、DOMの静的部分と、ページの要求されたインスタンスに対応するDOMの動的部分とに従ってページの要求されたインスタンスをレンダリングすることとを行うためのアクション、手段または命令を含む、方法、装置またはコンピュータプログラム製品に関する。
【００１３】
上記および関連する目的を達成するために、1つまたは複数の態様は、以下で十分に説明し、特に特許請求の範囲で指摘する特徴を含む。以下の説明および添付の図面に、1つまたは複数の態様のうちのいくつかの例示的な特徴を詳細に記載する。ただし、これらの特徴は、様々な態様の原理が採用され得る様々な方法のほんのいくつかを示すものであり、この説明は、すべてのそのような態様およびそれらの均等物を含むものとする。
【００１４】
添付の図面とともに以下に説明する開示する態様は、開示する態様を限定するためではなく、開示する態様を例示するために与えられ、同様の表示は同様の要素を示す。
【図面の簡単な説明】
【００１５】
【図１】ページをレンダリングするためのシステムの一態様の概略図である。
【図２】共有DOMの一態様の概略図である。
【図３】図1のコンピュータデバイスの一態様の概略図である。
【図４】ページをレンダリングする方法の一態様のフローチャートである。
【図５】ページの第1のインスタンスをレンダリングする一態様のフローチャートである。
【図６】ページの第2のインスタンスをレンダリングする一態様のフローチャートである。
【図７】一態様による、効率的なローカルキャッシングを可能にするための例示的な方法である。
【図８】一態様による、キャッシュにおけるストレージの前に、処理命令によるコンテンツ修正を可能にするための例示的な方法である。
【図９】一態様による、キャッシュにおける構造化ストレージを可能にするための例示的な方法である。
【図１０】一態様による、例示的なメインページの概略図である。
【図１１】一態様による、例示的なカタログページの概略図である。
【図１２】一態様による、アイテム詳細ページの一例の概略図である。
【図１３】一態様による、アイテム詳細ページの別の例の概略図である。
【図１４】ページをレンダリングするための装置の一態様の概略図である。
【発明を実施するための形態】
【００１６】
次に、図面を参照しながら様々な態様について説明する。以下の記述では、説明の目的で、1つまたは複数の態様の完全な理解を与えるために多数の具体的な詳細を記載する。ただし、そのような態様は、これらの具体的な詳細なしに実施され得ることは明らかであろう。
【００１７】
説明する態様は、ウェブリソースとデータアイテムとを有するウェブページなどのページをフェッチし、レンダリングすることに関する。さらに、説明する態様は、ウェブページ間で移行する仮想効果を与え、たとえば、ユーザがウェブページ間を前方および後方に移動するためのリンクを与える。ウェブページは、ページを定義する構成要素、相対構造、およびそれぞれの構成要素のビヘイビアを定義する、対応するドキュメントオブジェクトモデル(DOM)に従ってレンダリングされる。同じページの異なるインスタンスは、DOMのいくつかの共通の部分を共有し得るが、ページの1つのインスタンスを次のインスタンスに関して区別する他の一意の部分を有する。
【００１８】
1つまたは複数の態様によれば、ページをレンダリングする装置および方法は、ページの2つ以上のインスタンスによって使用され得る共有DOMを作成するように動作可能なウェブエンジンまたは他の構成要素を与える。共有DOMは、ページの異なるインスタンスに共通である静的DOM部分と、ページの1つまたは複数のインスタンスのそれぞれに固有である1つまたは複数の動的DOM部分とを含む。したがって、説明する態様は、前に処理された、同じページの異なるインスタンスに基づき得る、記憶またはキャッシュされたDOMに対応する、ページの新しいインスタンスをレンダリングする際に、静的DOM部分を再使用し、それにより、ページのインスタンスごとにまったく新しいDOMを作成する必要を回避することによって、ページレンダリングの効率を改善する。
【００１９】
たとえば、これらの態様について、モバイルフォンによって実行されるモバイルショッピングアプリケーションなどの使用事例に関して説明する。ただし、この例示的な使用事例は例示のためのものにすぎず、多くの他の使用事例が存在することを理解されたい。モバイルショッピングアプリケーションの例では、モバイルショッピングアプリケーションに対応するウェブページは、カタログリストを有するメインページ、アイテムリストおよび/または他のカタログリストを有する1つまたは複数のカタログページ、ならびに、他のアイテム詳細ページ、および/または価格設定ページや購買ページなどの追加の詳細ページにもリンクし得る、1つまたは複数のアイテム詳細ページなど、異なるタイプのページのツリーまたは階層を含み得る。第1のゲームのアイテム詳細ページおよび第2のゲームのアイテム詳細ページなど、同じページの異なるインスタンスは、同様の構造および場合によってはいくつかの同様のデータを共有し得るが、それらはまた、それぞれのゲームの名前など、それぞれ一意のデータを有し得る。したがって、一般に、各アイテム詳細ページは、異なる対応するDOMを有する。しかしながら、本態様では、アイテム詳細ページは、代わりに、ページの異なるインスタンス間の共通のDOM要素に対応する静的DOM部分と、一意のデータアイテムをページのそれぞれのインスタンスに関連付ける1つまたは複数の動的DOM部分とを含む、共有DOMを有する。たとえば、この場合、静的DOM部分は、第1のゲームアイテム詳細ページおよび第2のゲームアイテム詳細ページの同じレイアウトを含むことができ、第1のゲーム名や第2のゲーム名などの動的データアイテムは動的DOM部分によって表される。
【００２０】
言い換えれば、一態様では、ページ(たとえば、「アイテム詳細」ページ)の一意のインスタンスがコンピュータデバイス上にこれまでフェッチまたはキャッシュされておらず、ページのそのインスタンスが要求されたとき、説明する態様は、(たとえば、ハイパーテキストマークアップ言語(html)または拡張可能html(xhtml)、カスケーディングスタイルシート(css)、およびjava（登録商標）script(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が定義することを可能にする。
【００２１】
したがって、一態様では、DOMの初期または静的状態または部分の再使用により、ページ移行時間が短縮される。1つまたは複数の態様では、状態またはDOM部分の再使用は、DOMの静的および動的状態または部分に対応する、個別の、または代替的に、統合されたデータ構造を維持することによって達成され得る。
【００２２】
さらに、1つまたは複数の態様では、1つまたは複数の利点は、プロパティのテーブルのみが複製されるので、メモリオーバーヘッドがないかまたは低いことと、HTMLのパーシングおよびCSSルールの適用が1回しか行われないので、ページのローディングが高速であることと、同じページの異なるインスタンスのために異なるDOMを作成する必要がないので、他の実装形態に比較してコードがよりクリーンであり、より複雑でないことと、静的DOM部分は変化しないと見なし、レンダリングは、動的DOM部分を更新することに集中することができるので、DOMツリーの余分のウォークスルーがないことと、動的プロパティが、ページロード時に要求に応じて作成され、ページのインスタンスをナビゲートして戻るときにDOMの既存のウォークスルーで除去されることとを含み得る。
【００２３】
場合によっては、いくつかの態様では、DOMおよび対応するページコンテンツはキャッシュされ得、キャッシュは派生キャッシュまたは構造化キャッシュを含み得る。派生キャッシュは、受信コンテンツから導出されたコンテンツを記憶し得る。たとえば、一態様では、限定はしないが、xhtml、カスケーディングスタイルシートまたはjava（登録商標）scriptなどの未加工コンテンツを受信すると、コンピュータデバイスは、派生コンテンツを生成するために未加工コンテンツをさらに処理し得る。たとえば、一態様では、派生コンテンツはDOMの静的部分を含み得ること、たとえば、DOMの静的部分は、受信されたxhtmlおよびcssから作成および/または導出され得ることを諒解されたい。派生コンテンツを生成するために消耗されるリソースは比較的大きいので、派生コンテンツを、たとえば、派生キャッシュ中に記憶することが判断され得る。一態様では、派生コンテンツのこのキャッシングは、コンテンツが頻繁に使用される場合など、この事前に準備された派生コンテンツの使用によって、キャッシュされたコンテンツの後続の使用を効率的に可能にするのを支援し得る。
【００２４】
派生コンテンツの別の例は、コンピュータデバイスが、キャッシュから検索されたときに実行されるべきプログラムをフェッチすることを含み得る。コンピュータデバイスがキャッシュからプログラムを検索するたびに、フェッチされたプログラムをコンパイルするのではなく、コンピュータデバイスはプログラムをコンパイルし得る。コンパイルされたプログラムまたは派生コンテンツは、後で使用できるように派生キャッシュに記憶され得る。さらに、派生コンテンツは、受信されたソースに関連し得る。
【００２５】
別の態様では、コンピュータデバイスキャッシュは構造化キャッシュをさらに含み得る。構造化キャッシュは、プログラムの検索などが、キャッシュされたコンテンツの、検索のために有用な部分を選択的に選定し得るような方法でコンテンツを記憶することを可能にする。たとえば、本装置および方法がなければ、キャッシュされたコンテンツはセマンティック不明確コンテンツのように見えることがあり、それによって、キャッシュされたコンテンツの一部分の選択的検索が妨げられる。一態様では、構造化キャッシュに記憶されたコンテンツアイテム全体を検索する必要なしに、コンテンツアイテムの選択された既知の部分を検索することを可能にするような方法で、構造化キャッシュを編成することができる。
【００２６】
たとえば、Java（登録商標）スクリプトオブジェクト表記法(JSON)コンテンツなど、よく知られている構造をもつコンテンツが構造化キャッシュに記憶されていると仮定する。さらに、プログラムなどが、製造業者、名称などに関連するコンテンツなど、JSONコンテンツの小部分のみを使用し得ると仮定する。構造化キャッシュは、コンテンツの、プログラムに有用な部分のみの選択的除去を可能にし、それによって、必要とされ得た中間処理を低減する。
【００２７】
別の例では、コンテンツプロバイダは、コンピュータデバイスに送信されたコンテンツとともに、オリジンサーバによって生成されたエントリポイントを導入し得る。したがって、オリジンサーバによって生成されたエントリポイントをもつコンテンツが構造化キャッシュに記憶されると、エントリポイントによって定義された部分の後続の除去が可能にされ得る。
【００２８】
場合によっては、いくつかの態様では、説明する装置および方法は、ページの要求を受信する前に、そのページをフェッチし、処理するために実行され得るプリフェッチ動作をさらに含み得る。
【００２９】
場合によっては、いくつかの態様では、説明する装置および方法は、ウェブページの要求を受信する前に、そのページをDOMにパースし、対応するDOMをキャッシュするために実行され得る事前導出動作をさらに含み得る。
【００３０】
場合によっては、いくつかの態様では、説明する装置および方法は、プリフェッチ動作と事前導出動作の両方をさらに含み得る。
【００３１】
プリフェッチ動作および/または事前導出動作は、ページのインスタンスをレンダリングする速度をさらに増加させることができ、それによって1つのページから別のページに移行するときのユーザエクスペリエンスが改善される。
【００３２】
したがって、本態様は、DOMの静的部分を再使用することによってページの異なるインスタンスを効率的にレンダリングすることができ、それによって、処理リソースまたは通信リソース、あるいは両方が節約される。
【００３３】
本出願で使用する「構成要素」、「モジュール」、「システム」などの用語は、限定はしないが、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアなど、コンピュータ関連のエンティティを含むものとする。たとえば、構成要素は、プロセッサ上で実行されるプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、および/またはコンピュータであり得るが、これらに限定されない。例として、コンピューティングデバイス上で実行されるアプリケーションと、そのコンピューティングデバイスの両方が構成要素であり得る。1つまたは複数の構成要素がプロセスおよび/または実行スレッド内に常駐することができ、1つの構成要素を1つのコンピュータ上に配置し、および/または2つ以上のコンピュータ間に分散し得る。さらに、これらの構成要素は、様々なデータ構造を記憶している様々なコンピュータ可読媒体から実行することができる。これらの構成要素は、ローカルシステム、分散システム中の別の構成要素と対話する、および/または信号を介して他のシステムとインターネットなどのネットワーク上で対話する1つの構成要素からのデータなど、1つまたは複数のデータパケットを有する信号などによってローカルプロセスおよび/またはリモートプロセスを介して通信することができる。
【００３４】
さらに、本明細書では、ワイヤード端末またはワイヤレス端末とすることができる端末に関する様々な態様について説明する。端末は、システム、デバイス、加入者ユニット、加入者局、移動局、モバイル、モバイルデバイス、リモート局、リモート端末、アクセス端末、ユーザ端末、端末、通信デバイス、ユーザエージェント、ユーザデバイス、またはユーザ機器(UE)と呼ばれることもある。ワイヤレス端末は、セルラー電話、衛星電話、コードレス電話、セッション開始プロトコル(SIP)電話、ワイヤレスローカルループ(WLL)局、携帯情報端末(PDA)、ワイヤレス接続機能を有するハンドヘルドデバイス、コンピューティングデバイス、またはワイヤレスモデムに接続された他の処理デバイスであり得る。さらに、本明細書では基地局に関する様々な態様について説明する。基地局は、ワイヤレス端末と通信するために利用でき、アクセスポイント、ノードB、または何らかの他の用語で呼ばれることもある。
【００３５】
さらに、「例示的」という単語は、本明細書では、例、事例、または例示の働きをすることを意味するために使用する。「例示的」として本明細書で説明するいかなる態様または設計も、必ずしも他の態様または設計よりも好ましいまたは有利なものと解釈すべきではない。むしろ、例示的という単語の使用は、概念を具体的な形で提示するものである。さらに、「または」という用語は、排他的な「または」ではなく、包括的な「または」を意味するものとする。すなわち、別段の規定がない限り、または文脈から明白でない限り、「XはAまたはBを使用する」という句は、自然な包括的置換のいずれかを意味するものとする。すなわち、「XはAまたはBを使用する」という句は、XがAを使用する場合、XがBを使用する場合、またはXがAとBの両方を使用する場合のいずれによっても満たされる。さらに、本出願および添付の特許請求の範囲で使用する冠詞「a」および「an」は、別段の規定がない限り、または単数形を示すことが文脈から明白でない限り、概して「1つまたは複数」を意味するものと解釈すべきである。
【００３６】
本明細書で説明する技法は、CDMA、TDMA、FDMA、OFDMA、SC-FDMAおよび他のシステムなど、様々なワイヤレス通信システムに使用され得る。「システム」および「ネットワーク」という用語は、しばしば互換的に使用される。CDMAシステムは、Universal  Terrestrial  Radio  Access(UTRA)、cdma2000などの無線技術を実装することができる。UTRAは、Wideband-CDMA(W-CDMA)および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(WiFi)、IEEE802.16(WiMAX)、IEEE802.20、Flash-OFDM(登録商標)などの無線技術を実装することができる。UTRAおよびE-UTRAは、Universal  Mobile  Telecommunication  System(UMTS)の一部である。3GPP  Long  Term  Evolution(LTE)は、E-UTRAを使用するUMTSのリリースであり、これは、ダウンリンク上ではOFDMAを採用し、アップリンク上ではSC-FDMAを採用する。UTRA、E-UTRA、UMTS、LTEおよびGSMは、「3rd  Generation  Partnership  Project」(3GPP)という名称の組織からの文書に記載されている。さらに、cdma2000およびUMBは、「3rd  Generation  Partnership  Project  2」(3GPP2)と称する組織からの文書に記載されている。さらに、そのようなワイヤレス通信システムは、不対無資格スペクトル、802.xxワイヤレスLAN、BLUETOOTHおよび任意の他の短距離または長距離ワイヤレス通信技法をしばしば使用するピアツーピア(たとえば、モバイルツーモバイル)アドホックネットワークシステムをさらに含むことができる。
【００３７】
様々な態様または特徴は、いくつかのデバイス、構成要素、モジュールなどを含むことができるシステムに関して提示される。様々なシステムは、追加のデバイス、構成要素、モジュールなどを含んでもよく、および/または各図に関連して論じるデバイス、構成要素、モジュールなどのすべてを含まなくてもよいことを理解および諒解されたい。これらの手法の組合せを使用することもできる。
【００３８】
図1を参照すると、一態様では、ウェブページなどのページをレンダリングするための装置および方法は、ウェブページなどのページ13の1つまたは複数のインスタンスの、ディスプレイ15上での提示を可能にするために、ウェブエンジン14と対話するポータル構成要素12を有するコンピュータデバイス10を含む。たとえば、表示するページ13は、通信ネットワーク17を介してウェブサーバ16およびデータサーバ18から取得され得る。個別の構成要素または統合された構成要素であり得るウェブサーバ16およびデータサーバ18は、第1のページインスタンス28および第2のページインスタンス30をそれぞれ定義するウェブリソース20および22ならびにデータアイテム24および26をそれぞれ記憶する。たとえば、ウェブリソース20および22は、ページの静的部分を構築するために必要とされるすべてのもの、たとえば、データを充填され得る空のページテンプレートを含み得るが、データアイテム24および26は、ページを充填するために使用されるコンテンツ、たとえばページの1つまたは複数の動的部分を含み得る。したがって、ウェブリソース20および22のすべてまたはいくつかの部分は、第1のページインスタンス28と第2のページインスタンス30に共通であるが、データアイテム24および26のすべてまたはいくつかの部分は、それぞれのページインスタンスに固有である。
【００３９】
より詳細には、ポータル構成要素12は、ページの要求されたインスタンス34を識別するユーザ入力またはポータル構成要素12の開始などに基づいて、受信された要求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部分との間の関係を定義し、さらに、ページの2つ以上のインスタンスによって共有される1つまたは複数の静的DOM部分に対応する。したがって、DOM38は、ページの記憶されたインスタンス44とページの要求されたインスタンス34の両方について同じである静的DOM部分を含むので、DOM38は共有DOMと呼ばれることがある。
【００４０】
代替的に、ページの要求されたインスタンス44が記憶されたDOMに一致しないかまたは関係しないと一致判断器36が判断した場合、一致判断器36は、そのページのための新しいDOM39を作成し、記憶するように動作する。次いで、共有DOM38と同様の構造を有し得る新しいDOM39は、ページのインスタンスのための後続の要求との一致を判断するために、一致判断器36によって後で参照され得る。
【００４１】
これらの態様では、ウェブエンジン14は、すでに記憶されているDOMに対応するページの新しいインスタンスのためにDOM構造全体を再構成する必要がないので、共有DOM38は、ページの要求されたインスタンス34のより高速のレンダリングを可能にし得る。代わりに、ウェブエンジン14は、静的DOM部分42を再使用することができ、ページの要求されたインスタンス34に対応する1つまたは複数の動的DOM部分48に関係する処理を実行するだけでよい。
【００４２】
さらに、コンピュータデバイス10は、スクリプト機能を実行するように動作可能なスクリプトエンジン50を含み得る。たとえば、ウェブエンジン14は、ページに対応するスクリプトをロードするためにスクリプトエンジン50と対話し、スクリプトエンジン50は、対応するスクリプト機能を登録することを実行する。ウェブエンジン14から受信したオンロードイベントに応答して、スクリプトエンジン50は、さらにページスクリプトを実行し、ウェブページのインスタンスのための対応する動的データのフェッチを開始するために、送信呼を生成する。さらに、動的データを受信した後、スクリプトエンジン50は、たとえばDOMアプリケーションプログラムインターフェース(API)を介してデータを適用し、データを対応するDOMに書き込むように動作可能である。したがって、ページのそれぞれのインスタンスのための書き込まれた動的データに基づいて、ウェブエンジン14は、それぞれのページインスタンスに関連する1つまたは複数の動的DOM部分を作成し、記憶する。
【００４３】
さらに、コンピュータデバイス10は、ウェブエンジン14と対話するレンダリングエンジン52を含む。たとえば、ウェブエンジン14からの要求に応答して、レンダリングエンジン52は、ページのそれぞれのインスタンスのための、1つまたは複数の静的DOM部分に対応する、および/または1つまたは複数の動的DOM部分に対応する、それぞれのページの1つまたは複数の部分をペイントするように動作可能である。さらに、レンダリングエンジン52は、ページのペイントされた部分を提示し、それによってページのそれぞれのインスタンスを提示するために、ディスプレイ15と対話する。
【００４４】
したがって、共有静的部分を有するDOMを与えることによって、説明する態様は、ページの各新しいインスタンスに対応するウェブリソースをフェッチする際に通信リソースを節約し得るか、または、説明する態様は、静的DOM部分を再使用することによって、DOMの部分を作成する際に処理リソースを節約し得るか、あるいはその両方である。
【００４５】
図2を参照すると、一態様では、共有DOM38は、ノード62、64、66、68、70および72など、複数のノードによって定義されたテンプレート構造60を表すものとしてさらに説明されており、それらのノードは、第1のページインスタンス28、第2のページインスタンス30および第3のページインスタンス74など、ページの異なるインスタンスをさらに表している。各ページインスタンス、たとえば、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を含む。
【００４６】
共有DOM38は、異なるページインスタンスを識別し、構築するための単純で効率的な機構を与える、ノード、ページデータ、およびページインスタンス間の関係を定義する。たとえば、共有DOM38は、共有ノード62、64、66、68および70を含む、それぞれのページインスタンス28、30および74のためのノードのすべて、およびそれらのそれぞれの相互関係、ならびに、ノード72など、インスタンスに固有のノードを識別する。さらに、共有DOM38は、各ノードに対応する静的DOM部分122、124、126、128および130、たとえば、共通部分と、それぞれインスタンス28、30および74に対応する、ノード62のための動的データ82、92および102、それぞれインスタンス28、30および74に対応する、ノード64のための動的データ84、94および104、それぞれインスタンス28、30および74に対応する、ノード66のための動的データ86、96および106、それぞれインスタンス28、30および74に対応する、ノード68のための動的データ88、98および108、およびそれぞれインスタンス28、30および74に対応する、ノード70のための動的データ90、100および110などの各ノードに対応する動的DOM部分または動的ページデータとを含む。さらに、共有DOM38は、ノード72のための第3のページインスタンス74に対応する動的データ112など、一意のノードのための動的DOM部分を含む。
【００４７】
図3を参照すると、一態様では、モバイル電話またはセルラー電話など、コンピュータデバイス10は、本明細書で説明する構成要素および機能のうちの1つまたは複数に関連する処理機能を実行するためのプロセッサ150を含む。プロセッサ150は、プロセッサまたはマルチコアプロセッサの単一または複数のセットを含むことができる。さらに、プロセッサ150は、統合処理システムおよび/または分散処理システムとして実装され得る。
【００４８】
コンピュータデバイス10は、プロセッサ150によって実行されるアプリケーションのローカルバージョンを記憶するため、および/またはプロセッサ150によって現在実行されていないかまたは利用されないデータ、命令、および/またはアプリケーションを長期間記憶するためなどの、メモリ152をさらに含み得る。一態様では、メモリ152は派生キャッシュ155をさらに含むことができる。キャッシュされることを意図されたコンテンツを受信すると、コンピュータデバイス10は、導出されたコンテンツを生成し、派生コンテンツ157を派生キャッシュ155中に記憶するために、受信コンテンツをさらに処理し得る。一態様では、この処理は、しばしば使用される派生コンテンツ157の事前準備を通して、キャッシュされたコンテンツの後続の使用を効率的に可能にするのを支援し得る。別の態様では、メモリ152は構造化キャッシュ159を含み得る。構造化キャッシュ159は、検索のためにコンテンツの選択された既知の部分を選定することを通して、検索が選択的に行われ得るような方法でコンテンツを記憶することを可能にし得る。一態様では、構造化キャッシュ159に記憶されたコンテンツアイテム全体を検索する必要なしに、コンテンツアイテムの選択された既知の部分を検索することを可能にするような方法で、構造化キャッシュ159は編成される。メモリ152は、さらに(たとえばパフォーマンスベース、容量ベースなどの)チャネルの推定および/または利用に関連するプロトコルおよび/またはアルゴリズムを記憶することができる。一態様では、メモリ152は未加工コンテンツストレージ151をさらに含むことができる。未加工コンテンツストレージ151は、受信された未加工コンテンツの記憶を可能にし得る。
【００４９】
本明細書で説明するデータストア(たとえばメモリ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)、およびダイレクトランバスRAM(DRRAM)など、多くの形態が利用可能である。本システムおよび方法のメモリ152は、これらおよび他の適切なタイプのメモリを、これらに限定されることなく、含み得る。
【００５０】
さらに、コンピュータデバイス10は、本明細書で説明するように、ハードウェア、ソフトウェア、およびサービスを利用して、1つまたは複数のエンティティとの通信を確立し、維持することを行う通信構成要素154を含み得る。通信構成要素154は、コンピュータデバイス10上の構成要素間、ならびにコンピュータデバイス10と、通信ネットワーク上に位置するデバイス、および/またはコンピュータデバイス10に直列またはローカルに接続されたデバイスなどの外部デバイスとの間の通信を伝えることができる。たとえば、通信構成要素154は、1つまたは複数のバスを含むことができ、外部デバイスとインターフェースするように動作可能なインターフェース、1つまたは複数の送信機または送信チェーン構成要素および1つまたは複数の受信機または受信チェーン構成要素をさらに含むことができる。たとえば、そのような送信機および受信機により、1つまたは複数の技術またはプロトコルに従ったワイヤードまたはワイヤレス通信が可能になり得る。
【００５１】
コンピュータデバイス10は、さらに、コンピュータデバイス10のユーザから入力158を受けるように動作可能であり、ユーザへの提示のための出力160を生成するようにさらに動作可能なユーザインターフェース構成要素156を含む。ユーザインターフェース構成要素156は、限定はしないが、キーボード、テンキー、マウス、タッチセンシティブディスプレイ、ナビゲーションキー、ファンクションキー、マイクロフォン、音声認識構成要素、ユーザから入力を受けることが可能な他の機構、またはそれらの任意の組合せを含む、1つまたは複数の入力デバイスを含むことができる。さらに、ユーザインターフェース構成要素156は、限定はしないが、ディスプレイ、スピーカ、触覚フィードバック機構、プリンタ、出力をユーザに提示することが可能な他の機構、またはそれらの任意の組合せを含む、1つまたは複数の出力デバイスを含むことができる。
【００５２】
さらに、上記のように、コンピュータデバイス10は、ウェブブラウザ、ウィジェットまたはモバイルウィジェット、あるいはウェブアプリケーションのうちの1つまたは任意の組合せであり得るポータル構成要素12を含み得る。ポータル構成要素12は、ウェブページのレンダリングを可能にするために、コンピュータデバイス10のユーザならびにコンピュータデバイス10の他の構成要素とインターフェースするように動作可能である。
【００５３】
ウェブエンジン14は、上記で説明したように、DOMの一致の判断、ならびにDOMの生成および記憶を処理する。場合によっては、いくつかの態様では、ウェブエンジン14は、フェッチ動作のタイミングおよびパフォーマンスを管理するために、フェッチマネージャ162を含み得る。たとえば、フェッチマネージャ162は、参照ページからちょうどクリックされたリンクを有するページのためのコンテンツをプリフェッチすることを可能し得、参照ページは、プリフェッチを実行するためのURLを含む。一態様では、たとえば、フェッチマネージャ162は、参照ページのjava（登録商標）scriptにおいてプリフェッチ発見呼を実行し得る。別の態様では、たとえば、フェッチマネージャ162は、ページ上にフェッチするURLにタグ付けまたは順序付けし得るので、これらのタグまたはURLは、それぞれのページの要求を受信する前に、ページレンダリング中に処理され得る。たとえば、フェッチマネージャ162は、何をプリフェッチすべきか、およびいつプリフェッチすべきかを判断するために、ページ間の関係、たとえば、リスト中の隣接するページ、階層中の隣接するページなどを判断するアルゴリズムまたは機能を含み得る。他の態様では、記載の装置および方法は、現在のページのHTMLヘッダ中に既知のURLのマニフェストを含むことができ、マニフェストは、プリフェッチするためにフェッチマネージャ162によって分析される。別の態様では、記載の装置および方法は、参照ページのHTMLヘッダ中に各到達可能ページのURLの構造化マニフェストを含み得、構造化マニフェストは、各到達可能ページのプリフェッチを実行するためにフェッチマネージャ162によって分析される。この態様のさらなる派生では、記載の装置および方法は、ローカルな「次のページ」マニフェストをページメタデータから分離し、これをGRSへのgetPageManifest()呼として挿入する。これにより、サーバは、ページのxhtmlページを更新する必要なしに、プリフェッチ順序を調整することが可能になる。これは別のURLであるので、expiryiおよびifmodified-sinceによって、この「キャッシングメタデータ」リソースのキャッシングを制御することができる。別の態様では、記載の装置および方法は、より広いプリフェ
ッチポリシー呼を用いてこのメタデータを検索するステップを含み得る。そのようなポリシー更新は、テンプレートセット全体のためのすべてのプリフェッチ順序付けを含み得る。プリフェッチ順序付けは、最初にブートストラップマニフェストとともにキーイングされ、フェッチされ得る。
【００５４】
場合によっては、いくつかの態様では、ウェブエンジン14は、ページのそれぞれのインスタンスの要求より前に、DOMまたはDOMの一部分を事前導出するための導出マネージャ164を含み得る。たとえば、レンダリング遅延の大部分は、DOMにパースされた、レンダリング可能なウェブドキュメントに関するものである。導出マネージャ164は、DOMへのウェブページの導出を管理し、そのページが必要とされるより前にDOMをキャッシュする際にレイヤを与えるアルゴリズムまたは機能を含む。導出マネージャ164により、そのような導出がスマートな方法で行われることが可能になり、おそらく、マニフェストからの指示によって最初にダウンロードされたときではなく、ウェブエンジン14が比較的使用されず、それぞれのページが必要とされる確率が高いときに、導出およびキャッシングが行われ得る。たとえば、導出マネージャ164のアルゴリズムまたは機能は、何を事前導出すべきか、および1つまたは複数のページをいつ事前導出すべきかを判断するために、ページ間の関係、たとえば、リスト中の隣接するページ、階層中の隣接するページなどを判断し得る。
【００５５】
フェッチマネージャ162と導出マネージャ164とは、セッション中のページのファーストランのパフォーマンスを改善するために、同じコンピュータデバイス10中で結合され得ることに留意されたい。
【００５６】
コンピュータデバイス10は、キャッシングの前のコンテンツの処理を支援するためのコンテンツハンドラ166をさらに含むことができる。一態様では、コンテンツハンドラ166により、受信された未加工コンテンツ151から派生コンテンツ157を生成すべきかどうかをコンピュータデバイス102が判断することが可能になる。さらに、コンテンツハンドラ166は、通信ネットワークから処理命令168を受信し得る。そのような態様では、通信ネットワークは、コンピュータデバイス102に記憶すべきコンテンツとともに、処理命令168を与え得る。一態様では、処理命令168により、コンピュータデバイス102において、処理命令168がない場合よりも効率的であり得る方法で、未加工コンテンツ151に対して変換などを実行するために、コンピュータデバイス102にパスする、通信ネットワークなどによる、ある程度のサーバ側制御が可能になり得る。一態様では、処理命令168により、効率的な後続の検索が可能になるように、派生コンテンツ157を受信された未加工コンテンツ151に関連付けることが可能になり得る。たとえば、処理命令168は、イメージとともに送信され得、イメージピクセルを再マッピングするための命令を与え得る。したがって、処理命令とともに転送されるコンテンツのサイズは小さくなり得る。また、サイズの小さい未加工コンテンツと処理命令とがコンピュータデバイス102によって受信されると、処理命令168により、よりリッチなイメージまたはより多くのリッチなコンテンツセットにコンテンツを拡張することが可能になる。コンテンツハンドラ166は、受信コンテンツの処理を支援するために、構造参照169をさらに含み得る。構造参照169は、構造化キャッシュ159において構造化ストレージを可能にするために、受信コンテンツを処理し得る。
【００５７】
Java（登録商標）scriptエンジンなどのスクリプトエンジン50は、スクリプト機能の登録、およびページの所与のインスタンスのスクリプトの実行を処理する。レンダリングエンジン52は、ページの所与のインスタンスの全部または一部分を生成またはペイントし、ディスプレイ15上に提示される表示されたページインスタンス13(図1)など、ユーザインターフェース156の構成要素に結果を通信する。
【００５８】
次に図4を参照すると、動作中、一態様では、ページをレンダリングする方法170は、コンピュータデバイスにおいて、ページの要求されたインスタンスについての要求を受信するステップを含む(ブロック172)。
【００５９】
本方法は、ページの要求されたインスタンスが、メモリに記憶されたページのためのドキュメントオブジェクトモデル(DOM)に対応するかどうかを判断するステップをさらに含む。メモリに記憶されたDOMは、ページの記憶されたインスタンスに対応し、ページの記憶されたインスタンスと要求されたインスタンスの両方について同じである静的部分を含む(ブロック174)。
【００６０】
さらに、ページの要求されたインスタンスがメモリに記憶されたDOMに対応する場合、本方法は、要求されたインスタンスに対応するDOMの動的部分を参照するステップを含む。動的部分は、ページの要求されたインスタンスに固有である(ブロック176)。
【００６１】
本方法はまた、DOMの静的部分との関係で、ページの要求されたインスタンスに対応するDOMの動的部分を記憶するステップを含む(ブロック178)。場合によっては、本方法は、DOMの静的部分と、ページの要求されたインスタンスに対応するDOMの動的部分とに従って、ページの要求されたインスタンスをレンダリングするステップをさらに含む(ブロック180)。
【００６２】
図5および図6を参照すると、一態様では、ページのそれぞれの第1のインスタンスおよび第2のインスタンスをレンダリングする方法が、ユーザ入力またはポータルアプリケーションの開始などに基づいて、ページの第1のインスタンスを要求するステップを含む(202、204、302、304)。本方法は、ページのインスタンスがメモリまたはキャッシュに記憶されたDOMに対応するかどうかをウェブエンジンが判断するステップをさらに含む(206、306)。207において、ページのインスタンスがメモリまたはキャッシュに記憶されたDOM、たとえば、事前導出されたDOMに対応する場合、本方法はペイントプロセスに進む(218)。ただし、ページのインスタンスがメモリまたはキャッシュに記憶されたDOMに対応しない場合、対応するGETおよび応答を、それぞれウェブサーバに送信し、およびウェブサーバから受信する(208、210)。応答は、たとえば、xhtml、css、およびjava（登録商標）scriptを含む。
【００６３】
いくつかの態様では、211において、受信コンテンツの前処理が行われ得、たとえば、派生コンテンツを生成するために受信コンテンツを導出する。一態様では、ウェブサーバから取得された未加工コンテンツには、処理命令が付随し得る。ウェブサーバから未加工コンテンツを受信すると、追加の処理が、受信された未加工コンテンツをキャッシュするより前に行われるか、またはキャッシュすると同時に行われるかを、コンテンツハンドラが判断し得る。一態様では、処理命令は、少なくとも、受信された未加工コンテンツをさらに処理すべきかどうかを判断するステップを支援する。別の態様では、受信された未加工コンテンツは、たとえば、構造参照、サーバ生成のエントリポイントなどによって定義され得る、未加工コンテンツに関連付けられた既知の構造によって決定される、構造化キャッシュに記憶され得る。受信された未加工コンテンツの少なくとも一部分が処理され得るとコンテンツハンドラが判断すると、コンテンツハンドラは、派生コンテンツを生成するために受信された未加工コンテンツの選択された部分を処理する。派生コンテンツは派生キャッシュに記憶され得る。一態様では、派生コンテンツは、さらに受信された未加工コンテンツに関連付けられ、それに応じて記憶される。たとえば、派生コンテンツは、ページのそれぞれの第1のインスタンスおよび第2のインスタンスをレンダリングする際に後で使用するためのコンパイルされたjava（登録商標）scriptおよび/またはコンパイルされたcssを含み得る。以下で説明するように、図7〜図9に、コンテンツを前処理するための様々な方法を示す。
【００６４】
次いで、応答データがキャッシュに記憶され(212)、静的DOM部分が作成され、記憶される(214)。静的DOM部分を作成および記憶するステップは、応答からコンテンツを導出するステップと、コンテンツをウェブエンジンによって処理されることが可能な形態に変換するステップとを含み得る。たとえば、応答からコンテンツを導出するステップは、応答、たとえば、xhtmlコードをパースするステップと、パースされた情報からDOMを作成するステップとを含み得る。さらに、静的DOMの生成を助けるためのルールが構築され、DOMに適用され得る。ルールは、他のタイプのルールのうち、たとえば、CSSルールを含み得る。静的DOMは、後で使用するためにメモリまたはキャッシュに記憶され得ることを諒解されたい。一態様では、静的DOMの全部または一部分が前処理され(211)、したがって、静的DOM部分は派生コンテンツを含み得る。代替的に、第2のインスタンスでは、静的DOM部分が発見され、使用される(316)。どちらの場合も、1つまたは複数の静的DOM部分をペイントし、表示するためにペイントプロセスが開始される。より詳細には、ウェブエンジンは、ペイントプロセスを開始し(218、318)、静的部分をペイントするためにレンダリングエンジンを開始する(220、320)。レンダリングエンジンは、ペイントされた静的部分をディスプレイに転送して(222、322)、1つまたは複数の静的DOM部分を表示する(224、324)。このペイントプロセスのタイミングは変動し得ることに留意されたい。さらに、導出されたcssコンテンツ(211)は、ペイントプロセス中に静的構造およびテキストを作成するために使用され得る(220、320)。
【００６５】
さらに、応答または記憶された静的DOM部分を取得した後、スクリプトロード動作が開始され(226、326)、ここで、スクリプトエンジンは、スクリプト機能(228、328)を登録し、オンロードイベントを受信し(230、330)、次いで、ページスクリプトを処理する(232、332)。導出されたjava（登録商標）script(211)は、スクリプト機能中に使用され得る(228、232、328、332)。次いで、XHR送信イベント(234、334)がウェブエンジンに送信され、ウェブエンジンは、データがキャッシュにすでに記憶されているかどうかを確認する(236、336)。記憶されている場合、237および337において、記憶されたデータが利用され、スクリプトエンジンにパスされ得る(244、344)。記憶されていない場合、データフェッチおよび応答がそれぞれデータサーバから送信および受信される(238および240、338および340)。これは、XHR呼(238)およびXHR結果(240)とすることができる。いくつかの態様では、211において上記で説明したように、241および341において、受信コンテンツの前処理が行われ得る。以下で説明するように、図7〜図9に、コンテンツを前処理するための様々な方法を示す。
【００６６】
応答データはキャッシュに記憶され(242、342)、結果はスクリプトエンジンにパスされ(244、344)、スクリプトエンジンは、DOM  APIを介してデータを適用し、データをウェブエンジン中のキャッシュに書き込む(246および248、346および348)。次いで、ウェブエンジンは、データの1つまたは複数の動的部分のための所与のインスタンスのための動的DOM部分を作成し、記憶する(250、350)。ペイント動作はリソースを消耗し得るので、ウェブエンジンは、このDOM部分をバッファし得る(252、352)。次いで、ウェブエンジンは、静的部分についての上記の動作と同様のペイント動作を開始し、その結果、ページの所与のインスタンスが作成される。ウェブエンジンは、ペイントプロセスを開始し(254、354)、レンダリングエンジンを開始して、静的部分をペイントする(256、356)。レンダリングエンジンは、ペイントされた静的部分をディスプレイに転送して(258、358)、1つまたは複数の静的DOM部分を表示し(260、360)、その結果、ページの所与のインスタンスが作成される(262、362)。さらに、導出されたcssコンテンツ(241、341)は、ペイントプロセス(256、356)中に静的構造およびテキストを作成するために使用され得ることに留意されたい。
【００６７】
場合によっては、いくつかの態様では、図5および図6の方法は、フェッチマネージャ162(図3)に関して上記で説明したように、1つまたは複数のプリフェッチ動作(264、364)を含み得る。そのようなプリフェッチがいつ望まれるかの判断に基づいて、プリフェッチ動作の図5および図6の動作のシーケンスのタイミングは、図示のアクションに対して変更され得ることに留意されたい。さらに、上記で説明したように、プリフェッチ動作は、追加のGETおよび応答、および/またはXHR呼および結果、ならびに対応する前のおよび後続の処理をさらに含み得ることに留意されたい。
【００６８】
場合によっては、いくつかの態様では、図5および図6の方法は、導出マネージャ164(図3)に関して上記で説明したように、1つまたは複数の事前導出動作(266、366)を含み得る。そのような事前導出がいつ望まれるかの判断に基づいて、事前導出動作の図5および図6の動作のシーケンスのタイミングは、図示のアクションに対して変更され得ることに留意されたい。さらに、上記で説明したように、事前導出動作は、追加のGETおよび応答、および/または追加のXHR呼および結果、ならびに対応する前のおよび後続の処理をさらに含み得ることに留意されたい。
【００６９】
次に図7を参照すると、効率的なローカルキャッシングを可能にするための例示的な方法1000が示されている。参照番号1002において、未加工データを受信する。一態様では、データには処理命令が付随し得る。データはコンピュータデバイスなどによって受信され得、データはサーバ、通信ネットワークなどから発生し得る。たとえば、一態様では、未加工データはcssおよびjava（登録商標）scriptを含み得る。
【００７０】
参照番号1004において、本方法は、受信データがローカル処理のための候補であるかどうかを判断するステップを含む。たとえば、受信データは、さらなる処理を促す処理命令を含み得る。別の態様では、受信データは、cssまたはjava（登録商標）scriptなど、さらなる処理を促す既知のデータタイプとすることができる。さらなる処理が必要とされないと判断された場合、参照番号1006において、受信データがキャッシュされ得る。さらに、または場合によっては、一態様では、データがさらなる処理のための候補であるかどうかにかかわらず、受信データはキャッシュされ得る。対照的に、参照番号1004において、さらなる処理が促されると判断した場合、参照番号1008において、受信コンテンツからローカルに導出されるコンテンツを生成する。一態様では、処理命令は、派生コンテンツを生成する際にコンテンツハンドラをガイドし得る。たとえば、受信された画像を処理して、コンピューティングデバイス上で通常使用される1つまたは複数のサイズを生成し得る。別の例では、受信されたプログラムファイルを処理して、コンピューティングデバイスによって後で使用するために、コンパイルされたプログラムを生成し得る。さらに別の例では、受信されたフォントタイプを処理して、コンピューティングデバイスによって後で使用するために、様々な通常使用される色および/またはサイズバリエーションを生成し得る。参照番号1010において、少なくとも派生コンテンツをキャッシュに記憶する。別の態様では、派生コンテンツと受信コンテンツとが、後続の検索を助けるために記憶され、関連付けられる。一態様では、未加工データおよび1つまたは複数の導出されたコンテンツアイテムのキャッシングが、派生コンテンツアイテムの検索後に処理要件を排除することによって、知覚されるアプリケーションパフォーマンスを改善し得る。さらに別の態様では、処理命令は、派生コンテンツおよび受信コンテンツとともに記憶され、導出された受信コンテンツを関連付けるために使用される。
【００７１】
次に図8を参照すると、一態様による、キャッシュにおけるストレージの前に、処理命令によるコンテンツ修正を可能にするための例示的な方法1100が示されている。一態様では、参照番号1102において、コンピューティングデバイスが、キャッシュに記憶すべきコンテンツの要求、フェッチなどを行い得る。そのような態様では、要求には、ネゴシエーション命令が付随し得る。たとえば、要求は画像についての要求であり得、付随する命令は、好ましい画像の可能なピクセル範囲を与える。概して、参照番号1104において、未加工データを受信する。そのようなデータには、処理命令が付随し得る。一態様では、これらの処理命令は、少なくとも部分的に要求ネゴシエーション命令に応答して生成される。データはコンピュータデバイスなどによって受信され得、データはサーバ、通信ネットワークなどから発生し得る。
【００７２】
次に説明するように、参照番号1106において、付随する処理命令を分析することによって受信データがローカル処理のための候補であるかどうかが判断される。処理命令がさらなる処理を促さない場合、参照番号1108において、受信データをキャッシュする。対照的に、参照番号1106において、処理命令が追加の処理を促す場合、参照番号1110において、コンテンツハンドラに処理命令と受信コンテンツとを与える。参照番号1112において、処理命令をガイドとして使用して、未加工コンテンツから、ローカルに導出されるコンテンツ、たとえば、派生コンテンツを生成する。したがって、サーバなどが、伝送後の未加工コンテンツの処理を可能にし得る。たとえば、処理命令が、受信された画像の階調を平滑化するようにコンテンツハンドラに促すことによって、受信された画像が処理されて、グラニュラリティがより少ない画像を生成し得る。
【００７３】
参照番号1114において、少なくとも派生コンテンツをキャッシュに記憶する。別の態様では、導出された受信コンテンツは、後続の検索を助けるために記憶され、関連付けられる。さらに別の態様では、処理命令は、導出された受信コンテンツとともに記憶され、導出された受信コンテンツを関連付けるために使用される。
【００７４】
次に図9を参照すると、キャッシュにおける構造化ストレージを可能にするための例示的な方法900が示されている。概して、参照番号902において、セマンティック不明確データを受信する。一態様では、データには、選択された部分の構造化検索を可能にするために、サーバ生成エントリポイントが付随し得る。別の態様では、データは既知の構造とすることができる。データはコンピュータデバイスなどによって受信され得、データはサーバ、コンテンツプロバイダなどから発生し得る。
【００７５】
次に説明するように、参照番号904において、受信データが既知の構造に関連付けられ得るかどうかを判断する。たとえば、受信データは、サーバ生成エントリポイントを含むか、または既知の構造とすることができる。データが、さらなる処理を可能にする方法で構造化されていないと判断された場合、参照番号906において、受信データをキャッシュする。対照的に、参照番号904において、さらなる処理が促されると判断された場合、参照番号908において、データ構造を判断する。たとえば、いくつかの媒体タイプは、選択的な後続の検索を可能にする処理を可能にする既知の構造で定義され得る。参照番号910において、受信された構造化コンテンツを、その既知のコンテンツに関して記憶する。
【００７６】
一態様では、参照番号912において、構造化コンテンツの一部分についての要求を受信する。そのような一態様では、参照番号914において、構造化コンテンツの要求された部分を検索する。たとえば、製造業者に関連付けられた情報、またはタイトルなどは、コンテンツアイテム全体の移動なしにキャッシュ中の構造化コンテンツから選択的に検索され得る。
【００７７】
一態様による、モバイルフォンによって実行されるモバイルショッピングアプリケーションの例示的な一例が、図10〜図13に示されている。次に図10を参照すると、一態様では、上記の図1〜図7に関して上記で説明したように、メインページ500、たとえば、ページの第1のインスタンスがユーザによって要求され、モバイルデバイス上に表示され得る。メインページ500は、カタログ中の様々なアイテムに関係する情報をもつカタログリスティング504を含み得る。カタログリスティング504は、情報の中でも、カタログ中のデータのカテゴリー、たとえば、506a〜506n、カタログ中のアイテムについての販売促進情報、カタログ中のアイテムのプレビューおよび/もしくは説明、またはカタログから購入すべきアイテムのリスティングを含み得る。ユーザが異なるカタログリスティングを閲覧することを希望する場合、ユーザは、たとえば、ボタン502を選択することによってショッピングアプリケーション中の異なるカタログリスティングに移動し得る。代替的に、または追加として、ユーザは、たとえば、カタログ中のデータのカテゴリーの1つ、たとえば、「今週の新着」506cを選択し、選択されたカテゴリーのためのカタログページに移動し得る。カタログページの一例、たとえば、ページの第2のインスタンスが図11に示されている。
【００７８】
次に図11を参照すると、一態様では、カタログページ600がユーザによって要求され、モバイルデバイス上に表示され得、たとえば、ユーザはメインページ500(図10)からカタログページ600を選択する。カタログページ600が要求されたとき、モバイルデバイスは、カタログページ600が、メインページ500および/またはショッピングアプリケーション中の他のページに対応する同様の構造を有するかどうかを判断し得る。カタログページ600がメインページ500と同様の構造を有すると判断すると、モバイルデバイスは、メインページ500のDOMからカタログページ600の同様の構造を検索し、再使用し得る。さらに、モバイルデバイスは、カタログページ600がメインページ500と異なる構造を有すると判断し、カタログページ600に固有のアイテムのためのDOMを作成し得る。
【００７９】
カタログページ600は、購入すべきアイテムのリスティング608a〜608nおよび/またはアイテム606のカテゴリーについて説明するタイトル604、たとえば、「今週の新着」を含み得る。カテゴリーは、カテゴリーの中でも、たとえば、ゲーム、音楽、ビデオ、ベストセラー、特集アイテムおよび/または推奨アイテムを含み得る。タイトル604は、メインページ500(図10)上でユーザが選択した選択に対応し得ることを諒解されたい。さらに、購入すべきアイテム608a〜608nは、購入のためのアイテムに関係する情報の中でも、購入のためのアイテムについて説明する名前612a〜612n、アイテムの価格614a〜614n、購入のためのアイテムを例示および/または説明するアイコン610a〜610n、アイテムについての表示されたレーティング616a〜610n(たとえば、購入のためのアイテムの品質および/またはパフォーマンスに関係する星またはデータを要約したテキスト)、ならびにアイテムのサプライヤを含み得る。アイテムの中でも、購入のためのアイテムは、たとえば、ゲーム、音楽、ビデオまたは本を含み得ることを諒解されたい。
【００８０】
たとえば、モバイルデバイスは、タイトル604、購入すべきアイテムのリスティング608a〜608nおよび/またはアイテムのカテゴリー606が、メインページ500中のフィーチャ(たとえば、タイトル504、ボタン502およびリスティング506a〜506n)と同様の構造を有すると判断し、メインページ500DOMから同様の構造を検索し、再使用し得る。さらに、モバイルデバイスは、タイトル名604、たとえば、「今週の新着」、ゲームの名前612a〜612n、ゲームのアイコン608a〜608n、ゲームの価格614a〜614n、および/またはゲームのレーティング616a〜616nが、カタログページ600に固有であると判断し、したがって、カタログページ600に固有のフィーチャのための動的DOMを作成し得る。
【００８１】
したがって、モバイルデバイスは、カタログページ600に固有のカタログページ600の部分のための動的DOMを作成し、メインページ500の静的DOMからの同様の構造および/またはインスタンスを再使用している。したがって、モバイルデバイスはカタログページ600についてDOM構造全体を再構成する必要がないので、カタログページ600のより高速なレンダリングが可能になる。
【００８２】
ユーザが異なるカタログページを閲覧し、メインページ500に戻ることを希望する場合、ユーザは、たとえば、ボタン602を選択することによってショッピングアプリケーション中の異なるカタログページに移動し得る。代替的に、または追加として、ユーザは、たとえば、カタログページ600上に掲示されたカテゴリーおよび/またはアイテムの1つ、たとえば、ゲーム「ゲーム＃5名前」612eを選択し、アイテムページ、たとえば、ページの別の第2のインスタンスに移動し得る。アイテムページの例、たとえば、ページの第2のインスタンスが図12および図13に示されている。
【００８３】
次に図12を参照すると、一態様では、アイテム詳細ページ700がユーザによって要求され、モバイルデバイス上に表示され得、たとえば、ユーザはカタログページ600(図11)からアイテム詳細ページ700を選択する。アイテム詳細ページ700が要求されると、モバイルデバイスは、アイテム詳細ページ700が、カタログページ600、メインページ500および/またはショッピングアプリケーション中の他のページに対応する同様の構造および/またはインスタンスを有するかどうかを判断し得る。図11に関して上記で説明したように、モバイルデバイスは、メインページ500および/またはカタログページ600のDOMからカタログページ600および/またはメインページ500の同様の構造を検索し、再使用し得る。さらに、モバイルデバイスは、カタログページ600および/またはメインページ500の構造またはアイテムに一致しないアイテム詳細ページ700の部分のためのDOMを作成し得る。
【００８４】
たとえば、モバイルデバイスは、アイテム詳細ページ700上のボタン702、ゲーム名706、アイコン704、価格710およびゲームのレーティング708が、カタログページ600とフィーチャが同様の構造を有し得ると判断し、カタログページ600DOMから同様の構造を検索し、再使用し得る。さらに、モバイルデバイスは、カタログページ600および/またはメインページ500の構造またはアイテムに一致しないアイテム詳細ページ700の部分のためのDOM、たとえば、このアイテムのレーティングオプション(rate  this  item  option)720、お勧め関連商品(more  like  these  recommendation)716を作成し得る。したがって、モバイルデバイスは、アイテム詳細ページ700に固有のアイテム詳細ページ700の部分のための動的DOMを作成し、カタログページ600および/またはメインページ500からの同様の構造および/またはインスタンスを再使用している。したがって、モバイルデバイスはアイテム詳細ページ700についてDOM構造全体を再構成する必要がないので、アイテム詳細ページ700のより高速なレンダリングが可能になる。
【００８５】
ユーザが前のページを閲覧することを希望する場合、ユーザは、ボタン702を選択して、ショッピングアプリケーション中の前のページに戻り得る。代替的に、または追加として、ユーザは、たとえば、アイテム詳細ページ700上の別のアイテム、たとえば、ゲーム「Guitar  Hero  III」718を選択し、別のアイテム詳細ページ、たとえば、図13に示すアイテム詳細ページ800に移動し得る。
【００８６】
次に図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部分によって表される。
【００８７】
図14を参照すると、コンテンツプロバイダを介してウェブサーバおよびデータサーバから受信されたウェブページなどのページをレンダリングする装置400が示されている。いくつかの態様では、たとえば、装置400は、モバイルデバイス内に常駐することができる。図示のように、装置400は、プロセッサ、もしくはソフトウェア、またはそれらの組合せ(たとえば、ファームウェア)によって実装される機能を表すことができる機能ブロックを含む。装置400は、ページに対応するウェブリソースおよびデータを受信し、ページのインスタンスをレンダリングすることを可能にする電気構成要素の論理グルーピング402を含む。論理グルーピング402は、コンピュータデバイスなどにおいて、ページ404の要求されたインスタンスについての要求を受信するための手段を含むことができる。さらに、論理グルーピング402は、ページの要求されたインスタンスがメモリ406に記憶されたページのためのドキュメントオブジェクトモデル(DOM)に対応するかどうかを判断するための手段を含むことができ、メモリに記憶されたDOMは、ページの記憶されたインスタンスに対応し、ページの記憶されたインスタンスと要求されたインスタンスの両方について同じである静的部分を含む。また、ページの要求されたインスタンスがメモリ408に記憶されたDOMに対応する場合、論理グルーピング402は、要求されたインスタンスに対応するDOMの動的部分を検索するための手段を含むことができ、動的部分は、ページの要求されたインスタンスに固有である。さらに、論理グルーピング402は、DOM410の静的部分との関係で、ページの要求されたインスタンスに対応するDOMの動的部分を記憶するための手段を含み得る。場合によっては、論理グルーピング402は、DOMの静的部分と、ページ412の要求されたインスタンスに対応するDOMの動的部分とに従って、ページの要求されたインスタンスをレンダリングするための手段を含むことができる。したがって、装置400は、ページをレンダリングする際に、静的DOM部分を効率的に再使用し、ページのそれぞれの1つまたは複数のインスタンスに対応する1つまたは複数の動的DOM部分を定義する関係を有する共有DOMを作成し、記憶することができる。
【００８８】
さらに、装置400は、電気構成要素404、406、408、410および場合によっては412に関連付けられた機能を実行するための命令を保持するメモリ414を含むことができる。メモリ414の外部にあるものとして図示されているが、電気構成要素404、406、408、410および場合によっては412はメモリ414の内部に存在することができることを理解されたい。
【００８９】
本明細書で開示した実施形態に関して説明した様々な例示的な論理、論理ブロック、モジュール、および回路は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)または他のプログラマブル論理デバイス、個別ゲートまたはトランジスタロジック、個別ハードウェア構成要素、あるいは本明細書で説明した機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成として実装され得る。さらに、少なくとも1つのプロセッサは、上述のステップおよび/またはアクションの1つまたは複数を実行するように動作可能な1つまたは複数のモジュールを含み得る。
【００９０】
さらに、本明細書で開示された態様に関して説明した方法またはアルゴリズムのステップおよび/またはアクションは、直接ハードウェアで実施するか、プロセッサによって実行されるソフトウェアモジュールで実施するか、またはその2つの組合せで実施され得る。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態の記憶媒体中に常駐し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるようにプロセッサに結合され得る。代替として、記憶媒体はプロセッサと一体であり得る。さらに、いくつかの態様では、プロセッサおよび記憶媒体はASIC中に常駐し得る。さらに、ASICはユーザ端末中に常駐し得る。代替として、プロセッサおよび記憶媒体は、ユーザ端末中に個別構成要素として常駐し得る。さらに、いくつかの態様では、方法またはアルゴリズムのステップおよび/またはアクションは、コンピュータプログラム製品に組み込まれ得る、機械可読媒体および/またはコンピュータ可読媒体上のコードおよび/または命令の1つまたは任意の組合せ、あるいはそのセットとして常駐し得る。
【００９１】
1つまたは複数の態様では、説明する機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せで実装され得る。ソフトウェアで実装する場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶するか、あるいはコンピュータ可読媒体上で送信され得る。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む、コンピュータ記憶媒体とコンピュータ通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体とすることができる。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは命令またはデータ構造の形態の所望のプログラムコードを搬送または記憶するために使用され、コンピュータによってアクセスされ得る、任意の他の媒体を含むことができる。また、どんな接続でもコンピュータ可読媒体と呼ばれることがある。たとえば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー（登録商標）ディスク(disk)およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、通常、データをレーザで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
【００９２】
上記の開示は、例示的な態様および/または実施形態について論じたが、添付の特許請求の範囲によって定義された記載の態様および/または実施形態の範囲から逸脱することなく、様々な変更および改変を本明細書で行うことができることに留意されたい。さらに、記載の態様および/または実施形態の要素は、単数形で説明または請求されていることがあるが、単数形に限定することが明示的に述べられていない限り、複数形が企図される。さらに、任意の態様および/または実施形態の全部または一部は、別段の規定がない限り、任意の他の態様および/または実施形態の全部または一部とともに利用され得る。
【符号の説明】
【００９３】
10  コンピュータデバイス
12  ポータル構成要素
13  ページ
13  表示されたページインスタンス
14  ウェブエンジン
15  ディスプレイ
16  ウェブサーバ
17  通信ネットワーク
18  データサーバ
20  ウェブリソース
22  ウェブリソース
24  データアイテム
26  データアイテム
28  第1のページインスタンス
30  第2のページインスタンス
32  受信された要求
34  ページの要求されたインスタンス
36  一致判断器
38  ドキュメントオブジェクトモデル(DOM)
39  新しいDOM
40  反復器構成要素
42  静的DOM部分
44  ページの記憶されたインスタンス
48  動的DOM部分
50  スクリプトエンジン
52  レンダリングエンジン
62  ノード
74  第3のページインスタンス
82  ページデータ
130  静的DOM部分
150  プロセッサ
152  メモリ
154  通信構成要素
155  派生キャッシュ
156  ユーザインターフェース構成要素
157  派生コンテンツ
159  構造化キャッシュ
162  フェッチマネージャ
164  導出マネージャ
166  コンテンツハンドラ
168  処理命令
169  構造参照
500  メインページ
504  カタログリスティング
600  カタログページ
602  ボタン
604  タイトル
606  アイテム
700  アイテム詳細ページ
702  ボタン
704  アイコン
706  ゲーム名
708  ゲームのレーティング
710  価格
800  アイテム詳細ページ
806  ゲーム名
808  ゲームのレーティング
810  価格
【図１】
0005357326.tif 000002
【図２】
0005357326.tif 000003
【図３】
0005357326.tif 000004
【図４】
0005357326.tif 000005
【図５】
0005357326.tif 000006
【図６】
0005357326.tif 000007
【図７】
0005357326.tif 000008
【図８】
0005357326.tif 000009
【図９】
0005357326.tif 000010
【図１０】
0005357326.tif 000011
【図１１】
0005357326.tif 000012
【図１２】
0005357326.tif 000013
【図１３】
0005357326.tif 000014
【図１４】
0005357326.tif 000015