(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0015】
[0022] 以下の詳細な説明は、スクリプト・ファイルの依存性およびロード時間を管理するための概念および技術を目的とする。本明細書において説明する概念および技術によれば、サーバー・コンピューターが、スクリプト・ファイルに対する参照を有するページまたは他のリソースを格納する。サーバー・コンピューターは、このページを分析して、スクリプト・ファイル依存性の判定および/またはスクリプト・ファイル・ロード・レベルの判定を開始する。サーバー・コンピューターは、そのページにおいて参照されたスクリプト・ファイルを登録し、登録されたスクリプト・ファイルの各々を分析して、スクリプト・ファイル間の依存性を解明し、スクリプト・ファイル依存性および/またはスクリプト・ファイル・ロード・レベルを出力することができる。サーバー・コンピューターによって出力されるデーターは、有向グラフおよび/または表を含むことができる。有向グラフは、ページによって参照されたスクリプト・ファイルまたはページによって参照された他のスクリプト・ファイルの各々に対応するノード含むことができる。ノード間のエッジは、スクリプト・ファイル間の依存性を示すことができる。また、サーバー・コンピューターによって出力されるデーターは、ロード・レベル表も含むことができ、このロード・レベル表は、ページのレンダリング、ロード、または相互作用の間にスクリプト・ファイルがロードされるべきロード・レベルを示す。ロード・レベルは、実現例に特定であることができ、したがって任意の数のロード・レベルを含むことができる。
【0016】
[0023] 実施形態によれば、サーバー・コンピューターは、スクリプト・ファイルを選択し、ノードを有向グラフに追加し、スクリプト・ファイルに対する参照をロード・レベル表に追加し、ページにおいて追加のスクリプト・ファイルが参照されるか否か判定することによって、スクリプト・ファイルを登録する。本プロセスは、分析のための追加のクライアント側スクリプト・ファイルが残らなくなるまで繰り返すことができる。登録されたスクリプト・ファイルを分析して、ファイル間の依存性を解明することができる。サーバー・コンピューターは、各スクリプト・ファイルが1回だけ分析されることを確保するためにノード・カラーリングを採用するアルゴリズムを適用し、分析中におけるレイテンシおよび/またはリソース使用を低減することができる。スクリプト・ファイルを分析して依存性を識別し、サーバー・コンピューターによって出力されるデーターにおける依存性を反映することができる。
【0017】
[0024] 本明細書において説明する主題は、オペレーティング・システムおよびアプリケーション・プログラムのコンピューター・システムにおける実行と合わせて実行するプログラム・モジュールという一般的なコンテキストで紹介するが、他の実現例も他のタイプのプログラム・モジュールと組みあわせて実行できることは当業者には認められよう。一般に、プログラム・モジュールは、ルーチン、プログラム、コンポーネント、データー構造、および他のタイプの構造を含み、特定のタスクを実行するかまたは特定の抽象データー型を実装する。更に、本明細書において説明する主題は、ハンドヘルド・デバイス、マルチプロセッサー・システム、マイクロプロセッサー・ベースまたはプログラマブル消費者用電子機器、ミニコンピューター、メインフレーム・コンピューター等を含む他のコンピューター・システム構成とでも実施できることは、当業者には認められよう。
【0018】
[0025] 以下の詳細な説明では、その一部をなす添付図面を参照する。図面には、一例として具体的な実施形態または例が示される。これより図面を参照すると、同様の参照番号は、様々な図にわたって同様のエレメントを表し、スクリプト・ファイルの依存性およびロード時間を管理するための計算システム、コンピューター読み取り可能記憶媒体、およびコンピューター実装方法の形態を紹介する。
【0019】
[0026] これより
図1を参照し、本明細書において紹介する種々の実施形態に対する一動作環境100の形態について説明する。
図1に示す動作環境100は、通信ネットワーク(「ネットワーク」)104の一部として、またはこれと通信可能に動作するサーバー・コンピューター102を含む。サーバー・コンピューター102は、オペレーティング・システム(
図1には示されない)と、例えば、サーバー・アプリケーション106および/または他のアプリケーション・プログラムというような1つ以上のアプリケーション・プログラムを実行するように構成される。
【0020】
[0027] オペレーティング・システムは、サーバー・コンピューター102の動作を制御するためのコンピューター・プログラムである。サーバー・アプリケーション106は、オペレーティング・システムの上で実行して、スクリプト・ファイルの依存性および/またはスクリプト・ファイルのロード時間を管理するための、本明細書において説明する機能を設けるように構成された実行可能プログラムである。種々の実施形態によれば、サーバー・コンピューター102は、ウェブ・サーバーに関連する機能を設けるように構成され、1つ以上のページ、サイト、アプリケーション、および/または他のリソースを1つ以上のページ(「ページ」)108を介してホストするように構成することができる。したがって、ページ108は、1つ以上のアプリケーション、ウェブ・サイト、ウェブ・ページ、および/または他のリソースに関係することができる。
【0021】
[0028] ページ108は、クライアント・デバイス110のような、サーバー・コンピューター102と通信可能な1つ以上のデバイスまたは他のエンティティに供給することができる。種々の実施形態によれば、クライアント・デバイス110の機能は、デスクトップ、タブレット、またはラップトップ・コンピューター・システムのような、パーソナル・コンピューター(「PC」)によって設けられる。また、クライアント・デバイス110の機能も、限定ではないが、サーバー・コンピューター、ハンドヘルド・コンピューター、ネットブック・コンピューター、埋め込み型コンピューター・システム、パーソナル・ディジタル・アシスタント、移動体電話機、スマート・フォン、または他の計算デバイスを含む、他のタイプの計算システムによって設けることができる。本明細書において開示する概念および技術をについて説明する目的に限って、クライアント・デバイス110をPCと記述する。尚、この実施形態は例示であり、限定であると解釈しては決してならないことは理解されてしかるべきである。
【0022】
[0029] 種々の実施形態によれば、クライアント・デバイス110はオペレーティング・システム112および1つ以上のアプリケーション・プログラム114を実行する。アプリケーション・プログラムは、例えば、文書処理プログラム、ウェブ・ブラウザー等のような種々の機能を設けることができる。本明細書において開示する概念および技術について説明する目的に限って、アプリケーション・プログラム114は、本明細書では、以上で説明したページ108にアクセスし、および/またはページ108を使用するために使用されるウェブ・ブラウザーと記述する。したがって、クライアント・デバイス110は、ページ108のアクセスによって、1つ以上のウェブ・アプリケーションおよび/またはウェブ・サイトに関連する機能を、クライアント・デバイス110のユーザに提供することができる。
【0023】
[0030] 種々の実施形態によれば、クライアント・デバイス110は、1つ以上のクライアント側スクリプト・ファイル(「スクリプト・ファイル」)116を格納するように構成される。スクリプト・ファイル116は、種々のアプリケーション・コンポーネント、アプリケーション・モジュール、拡張、ウェブ・アドイン、他のファイル、および/または他のタイプの実行可能コードを含むことができる。実施形態では、例えば、スクリプト・ファイル116が、例えば、JAVASCRIPT(登録商標)、VBSCRIPT、XMLユーザ・インターフェース・マークアップ言語(「XUL」)、拡張可能スタイルシート言語変換(「XSLT」)、他の言語等のような、種々のスクリプト言語でフォーマットされた実行可能コードを含む。クライアント・デバイス110は、スクリプト・ファイル116をページ108と併せて使用して、クライアント・デバイス110のユーザに、サーバー・コンピューター102に関連する機能を提供することができる。具体的には、クライアント・デバイス110に供給されるページ108は、スクリプト・ファイル116の1つ以上に対する1つ以上の参照を含むことができる。つまり、クライアント・デバイス110によるページ108のレンダリングおよび/または他の実行の間、クライアント・デバイス110によってスクリプト・ファイル116を引き出し、ロードし、および/または実行して、サーバー・コンピューター102に関連する機能を設けることができる。
【0024】
[0031] 種々の実施形態によれば、ページ108は、ページ108内部の種々の位置におけるスクリプト・ファイルを参照することができる。例えば、ページ108が、ウェブ・ページのヘッダ部分におけるスクリプト・ファイル116、ウェブ・ページ本体内部の種々の位置におけるスクリプト・ファイル116、および/またはページ108内部のどこかにおけるスクリプト・ファイル116の内1つを参照することもできる。つまり、クライアント・デバイス110は、ページ108のレンダリングまたは目視の間種々の時点においてスクリプト・ファイル116を引き出し、ロードし、および/または実行することができる。種々の実施形態によれば、クライアント・デバイス110は、スクリプト・ファイル116の1つ以上に対する1つ以上の参照を含むページ108の1つを受信する。更に、ページ108は、スクリプト・ファイル116の1つ以上に対する複数の参照を含むことができる。場合によっては、ページ108の1つにおいて参照された特定のスクリプト・ファイル116が、他のスクリプト・ファイル116に依存することもある。したがって、クライアント・デバイス110は、ページ108内において参照されるスクリプト・ファイル116を引き出し、ロードし、および/または実行することができる。場合によっては、特定のロード順序でスクリプト・ファイル116をロードすることによって、ページ108のレンダリングおよび/またはページ108との相互作用の間、クライアント・デバイス110の性能を向上させることもできる。
【0025】
[0032] 具体的には、特定のページ108における第1スクリプト・ファイル116が第2スクリプト・ファイル116によって依存される場合、これらのスクリプト・ファイル116のロード順序は、ページ108のレンダリングの間信頼性が高いユーザ体験を提供するためには重要な考慮事項となり得る。例えば、第2スクリプト・ファイル116が第1スクリプト・ファイル116のロード前に実行される場合、クライアント・デバイス110は、第2スクリプト・ファイル116の実行中に第1スクリプト・ファイル116をロードすればよい。第1スクリプト・ファイル116のロード中に生ずるレイテンシは、望ましくない可能性がある。加えて、または代わりに、参照されるスクリプト・ファイル116が第2スクリプト・ファイル116の実行の前にロードされない場合、第2スクリプト・ファイル116の実行が失敗するまたは中断されることもあり得る。
【0026】
[0033] したがって、本明細書において開示する概念および技術は、スクリプト・ファイル116または他のクライアント側実行可能コードの依存性を識別し、スクリプト・ファイル116のロード順序を決定することを含む。種々の実施形態によれば、サーバー・アプリケーション106は、ページ108を分析し、ページ108によって参照されるスクリプト・ファイル116を識別し、ページ108内部で参照されるスクリプト・ファイル116に関連する依存性および/またはロード順序を指定するためのデーター118を生成するように構成される。
【0027】
[0034] 種々の実施形態によれば、サーバー・コンピューター102は、サーバー・アプリケーション106の実行によって、有向グラフ(「グラフ」)120および/または、決定された依存性および/またはロード・レベル、ロード時間、および/またはロード順序(「ロード・レベル」)を指定する表またはリスト(「表」)122を生成する。データー118のこれらおよび他の形態を、ページ108と共に、またはページ108に加えて、クライアント・デバイス110に供給することができる。したがって、クライアント・デバイス110は、データー118の分析によって、ページ108のレンダリングおよび/または他の実行中にスクリプト・ファイル116がロードされる順序を決定することができる。データー118によって指定された順序でスクリプト・ファイル116をロードすることによって、クライアント・デバイス110は、ページ108によって参照されるときに単にスクリプト・ファイル116にアクセスし、ロードし、および/または実行する場合に対して、信頼性および/またはレイテンシを向上させて、ページ108に関連する相互作用を提供することができる。
【0028】
[0035] 他の実施形態では、サーバー・コンピューター102は、ページ108への入力のためにスクリプト・タグおよび/または他の参照を生成する。例えば、スクリプト・コンピューター102は、種々のスクリプト・ファイルの依存性およびロード・レベル等を解明することに基づいて、特定のスクリプト・ファイル116をページ・ヘッダにロードすべきことを決定することができる。したがって、サーバー・コンピューター102は、この決定を示す出力を生成するように構成することができる。この例では、サーバー・コンピューター102は、例えば、<script>タグまたは他の参照を生成し、この<script>タグをページ108の<head>に埋め込むことができる。尚、この実施形態は例示であり、限定するように解釈しては決してならないことは理解されてしかるべきである。実施形態では、サーバー・コンピューター102が、ページ108に出力される参照以外には、クライアント・デバイス110に出力を供給する必要がない場合もある。したがって、クライアント・デバイス110は、本明細書において説明するスクリプト・ファイル依存性の決定を知ってもまたは知らなくてもよく、代わりに従前のやり方でページ108を単に実行することができる。しかしながら、実施形態では、スクリプト・ファイル116のロード・レベルおよび依存性が、本明細書において開示するように、サーバー・コンピューター102による最適性能のために、解明されているとよい場合もある。
【0029】
[0036] 本明細書において更に詳しく説明するが、サーバー・コンピューター102は、ページ108を分析し、および/または1つ以上のアルゴリズムをページ108に関連するコードに適用することによって、データー118を生成するように構成される。この分析によって、サーバー・コンピューター102は、分析されたページ108によって参照されるスクリプト・ファイル116を識別し、ある場合には、スクリプト・ファイル116間の依存性を判定し、これらおよび/または他の要因に基づいて、ページ108に含まれるスクリプト・ファイル116のロード順序を決定することができる。サーバー・コンピューター102のこれらおよび他の機能は、1つ以上のスケジュールにしたがって、ページ108に対する変更が行われたまたは検出されたときに、および/または他の時点において、要求に応じて、実行またはアクセスすることができる。サーバー・コンピューター102は、データー118をサーバー・コンピューター102に関連するデーター記憶デバイスに、および/またはサーバー・コンピューター102によってアクセス可能なデーター記憶デバイス(
図1には示されない)に格納することができる。
【0030】
[0037] 種々の実施形態によれば、サーバー・コンピューター102は依存性判定を開始し、ページ108の分析を始める。第1動作の間、サーバー・コンピューター102は、ページ108に対応するコード内部で、ノードまたはスクリプト・ファイル116を識別する。ノードの登録の間、サーバー・コンピューター102は、コードをサーチしてスクリプト・ファイル116に対する参照を求めることができ、スクリプト・ファイル116に対応するノードを、ページ108に関連するグラフ120に追加することができる。また、サーバー・コンピューター102は、スクリプト・ファイル116に対する参照を、ページ108に関連する表122に追加することができる。このように、サーバー・コンピューター102は、特定のページ108によって参照されるスクリプト・ファイル116毎に、グラフ120と、ノードまたは他の表現を含む表122とを生成することができる。
【0031】
[0038] また、サーバー・コンピューター102は、スクリプト・ファイル116間の依存性を解明するように構成することもできる。具体的には、サーバー・コンピューター102は、XMLマニフェスト、リスト、あるいはランタイム中または他の時点に参照することができるスクリプト・ファイルの依存性を示す他のデーターを得て、スクリプト・ファイルの依存性を判定することができる。実施形態では、サーバー・コンピューター102がランタイムまたは他の時点においてスクリプト・ファイル依存性の手作業の記述を可能にする場合もある。実施形態では、サーバー・コンピューター102がページ108内部における各スクリプト・ファイル116の参照を分析し、特定のスクリプト・ファイル116が他のスクリプト・ファイル116に依存するか否か判定することもできる。
【0032】
[0039] 実施形態では、サーバー・コンピューター102が、ページ108において識別された各ノードまたはスクリプト・ファイル116を再帰呼び出しして(recurse)、依存性を解明し、ページ108によって参照されるスクリプト・ファイル116のロード順序を決定し、および/またはXMLマニフェスト、リスト、または先に説明したような他のファイルに基づいて同様のステップを完了する場合もある。ページ108に対応するサーバー側実行可能コードを処理する間および/またはそうでなければ特定のページ108に対してスクリプト・ファイル116を登録する間、サーバー・コンピューター102は、スクリプト・ファイル116に対応するノードを、例えば、前述した表122および/またはグラフ120のような、1つ以上の種々のデーター構造に追加することができる。登録後、サーバー・コンピューター102は、判定されたスクリプト・ファイル116の依存性および/またはロード・レベルを実現するために出力を生成することができる。
【0033】
[0040] 出力の間、以下で更に詳しく説明するが、サーバー・コンピューター102は、データー構造を処理するように構成することができる。例えば、サーバー・コンピューター102は、グラフ120を処理することができる。実施形態では、サーバー・コンピューター102が、ノード・カラーリングを使用してグラフ120を処理する場合がある。実施形態では、サーバー・コンピューター102が、参照を表122に追加することによってスクリプト・ファイル116を登録し、次いでスクリプト・ファイル116に対する参照をグラフ120に追加する場合もある。サーバー・コンピューター102は、グラフ120に追加されたノードに着色し、その依存性を解明し、ノードに関連する子ノードの各々に行く(visit)ことができる。所与のノードの子ノードに行った後、サーバー・コンピューター102はスクリプト・ファイル116に対するしかるべきスクリプト参照をページ出力に出力することができる。
【0034】
[0041] 実施形態では、サーバー・コンピューター102がノード・カラーリングを採用して、ノードの依存性を解明することに関連する分析が、各ノードに関して1回だけ行われることを確保する場合がある。本明細書において使用する場合、「ノード・カラーリング」は、本明細書において説明する分析の間に費やされる時間およびリソースを低減するために、サーバー・コンピューター102によって使用されるプロセスを含むことができる。「ノード・カラーリング」を使用することによって、サーバー・コンピューター102は、特定のスクリプト・ファイル116がページ108、グラフ120、表122、他のデーター構造、および/またはページ108内部で参照される他のスクリプト・ファイル116内部でまたはこれらによって複数回参照されても、特定のスクリプト・ファイル116またはそれに関連するノードは、1回だけ登録することができ、スクリプト・ファイル116に対する依存性を1回だけ解明することができることを確保することができる。
【0035】
[0042] 実現例の中には、例えば、サーバー・コンピューター102が、ページ108内で参照されるスクリプト・ファイル116に関連するグラフ120においてノードを選択し、このノードに以前に行ったことがあるか否か判定する場合がある。このノードに以前に行ったことがある場合、サーバー・コンピューター102はこのノードの分析を終了することができる。このノードに以前に行ったことがない場合、サーバー・コンピューター102はこのノードを行ったものとして「着色」し、このノードに関連する依存性を解明することができる。ページ108内部で識別された各ノード間の依存性を解明した後、サーバー・コンピューター102はデーター118を出力し、および/またはデーター118をデーター記憶デバイスに格納することができる。
【0036】
[0043] サーバー・コンピューター102は、データー118をクライアント・デバイス110に供給することができる。データー118は、ユーザの好み、設定、および/または他の考慮事項にしたがって、ページ108と共に供給すること、および/または別々に種々の時点に供給することができる。クライアント・デバイス110は、データー118を使用して、ページ108に関連するスクリプト・ファイル116のロード順序を決定することができる。したがって、クライアント・デバイス110は、実施形態にしたがって、理論的に最良の順序でスクリプト・ファイル116をロードすることによって、ページ108に関連する機能を最適な性能および/または信頼性で提供することができる順序で、スクリプト・ファイル116をロードすることができる。スクリプト・ファイル116の依存性およびロード時間を管理するこれらおよび他の形態について、特に
図2から
図6を参照して、以下で更に詳しく説明する。
【0037】
[0044]
図1は、1つのサーバー・コンピューター102、1つのネットワーク104,および1つのクライアント・デバイス110を示す。しかしながら、動作環境100の実現例には、複数のサーバー・コンピューター102、複数のネットワーク104、および/または複数のクライアント・デバイス110を含む場合もあることは、理解されてしかるべきである。つまり、図示する実施形態は、例示であるとして理解されてしかるべきであり、限定であると解釈しては決してならない。
【0038】
[0045] これより
図2に移り、スクリプト・ファイルの依存性およびロード時間を管理する方法200の形態について詳しく説明する。尚、本明細書において開示する方法の動作は、必ずしも任意の特定の順序では提示されないこと、そして動作の一部または全部の代わりの順序(1つまたは複数)での実行も可能であり考えられることは、理解されてしかるべきである。これらの動作は、説明および例示を容易にするために、その実際に示す順序(demonstrated order)で提示されたのである。添付した請求項の範囲から逸脱することなく、動作を追加すること、省略すること、および/または同時に実行することもできる。
【0039】
[0046] また、図示の方法は、任意の時点で終了させることができ、その全体を実行する必要がないことも理解されてしかるべきである。これらの方法の一部または全部の動作、および/または実質的に同等の動作は、以下で定められるような、コンピューター記憶媒体上に含まれるコンピューター読み取り可能命令の実行によって遂行することができる。「コンピューター読み取り可能命令」という用語およびその異形は、本明細書および特許請求の範囲において使用される場合、ルーチン、アプリケーション、アプリケーション・モジュール、プログラム・モジュール、プログラム、コンポーネント、データー構造、アルゴリズム等を含むように、ここでは広く使用される。コンピューター読み取り可能命令は、単一プロセッサーまたはマルチプロセッサー・システム、ミニコンピューター、メインフレーム・コンピューター、パーソナル・コンピューター、ハンドヘルド計算デバイス、マイクロプロセッサー・ベースのプログラマブル消費者用電子機器、その組み合わせ等を含む、種々のシステム構成において実現することができる。
【0040】
[0047] つまり、本明細書において説明する論理動作は、(1)計算システム上で実行するコンピューター実装アクト(computer-implemented act)またはプログラム・モジュールのシーケンスとして、および/または(2)計算システム内部において相互接続された機械論理回路または回路モジュールとして実現される。実施態様は、計算システムの性能およびその他の要件に依存する選択事項である。したがって、本明細書において説明する論理動作は、状態、動作、構造的デバイス、アクト、またはモジュールといように、様々に呼ばれる。これらの動作、構造的デバイス、アクト、およびモジュールは、ソフトウェア、ファームウェア、特殊目的ディジタル・ロジック、およびその任意の組みあわせで実現することができる。
【0041】
[0048] 本開示の概念を例示し説明する目的に限って、本明細書において開示する方法は、サーバー・コンピューター102によって実行されるものとして説明する。尚、これらの実施形態は例示であり、限定するように解釈しては決してならないことは理解されてしかるべきである。方法200は、動作202において開始し、ここでサーバー・コンピューター102は、特定のページ108または他のリソースに関連する、スクリプト・ファイル依存性の判定および/またはスクリプト・ファイル・ロード時間決定を開始する。実施形態では、サーバー・コンピューター102が、クライアント・デバイス110のようなサーバー・コンピューター102のクライアント、アドミニストレーター、サイト運営者、または他のエンティティから、あるいは他の場所から、スクリプト・ファイル116についてスクリプト・ファイル依存性を判定するおよび/またはロード時間を決定する命令を受ける場合もある。
【0042】
[0049] また、サーバー・コンピューター102は、ページ108のようなリソースに対する要求に基づいて、依存性および/またはロード時間の決定を開始することもできる。この要求は、アプリケーション・コール、スケジューリングされたイベントの到達または実行、および/またはサーバー・コンピューター102に本明細書において説明した機能を実行するように促すための種々の他の要求またはコマンドに応答して受けることができる。本明細書において説明した機能は、種々の時点において、種々のコマンドに応答して、および/または種々の他の考慮事項に基づいて提供することができるので、これらの実施形態は例示であり、限定であるように解釈しては決してならないことは理解されてしかるべきである。
【0043】
[0050] 動作202から、方法200は動作204に進み、ここで、サーバー・コンピューター102は、ページ108に関連するスクリプト・ファイル116を登録する。種々の実施形態によれば、サーバー・コンピューター102は、様々な関数をコールして、および/または1つ以上のアルゴリズムを実行して、ページ108に対応するコードを分析するように構成される。ページ108に対応するコードの分析中に、サーバー・コンピューター102はページ108内部のスクリプト・ファイル116に対する参照を識別することができる。識別された各スクリプト・ファイル116を、グラフ120のような有向グラフ、およびリスト、マニフェスト、または表12のような表に追加することができる。スクリプト・ファイル116の登録については、
図3を参照して以下で更に詳しく説明する。
【0044】
[0051] 動作204から、方法200は動作206に進み、ここで、サーバー・コンピューター102は動作204において登録された各スクリプト・ファイル116の再帰呼び出しを行う。「再帰呼び出しを行う」という用語は、本明細書において使用する場合、動作204において識別されたスクリプト・ファイル116の各々を分析し、スクリプト・ファイル116の各々に関連する依存性を解明することを意味する。更に、各スクリプト・ファイル116の再帰呼び出しを行う間、再帰呼び出しが行われるスクリプト・ファイル116によって参照される任意のスクリプト・ファイル116も分析され、これらのスクリプト・ファイル116の依存性も解明することができる。したがって、各スクリプト・ファイル116の再帰呼び出しの間、そのスクリプト・ファイルの参照がページ108内部で行われるか、および/またはページ108によって参照されるスクリプト・ファイル116によって参照されるかには関係なく、任意のスクリプト・ファイル116の依存性を解明することができる。つまり、スクリプト・ファイル116の再帰呼び出しの間、複数のスクリプト・ファイル116をサーバー・コンピューター102によって分析することができる。
【0045】
[0052] 種々の実施形態によれば、サーバー・コンピューター102は、再帰呼び出し動作の間にノード・カラーリングを使用して1回各ノードまたはスクリプト・ファイル116に行くように、そしてある実施形態では1回だけ行くように構成される。したがって、本明細書において開示する概念および技術の実施形態は、各スクリプト・ファイル116の分析を1回の動作に限定することによって、特定および依存性解明を効率的で完全なやり方で可能にする。スクリプト・ファイル116の再帰呼び出しについては、
図4を参照しながら以下で更に詳しく説明する。
【0046】
[0053] 動作206から、方法200は動作208に進み、ここで、サーバー・コンピューター102は出力を生成する。実施形態では、サーバー・コンピューター102によって生成される出力は、ページ108に関連するページ出力においてスクリプト参照を出力することを含む場合がある。例えば、出力は、決定された通りに、ページ出力の<head>またはページ108内の他の場所に<script>タグを含むことができる。他の実施形態では、動作210において生成される出力は、
図1を参照して先に説明したデーター118を含むことができるが、これに限定されるのではない。したがって、動作210において生成される出力は、前述のグラフ120および/または表122を含むことができる。グラフ120および/または表122については、
図5および
図6を参照しながら以下で更に詳しく説明する。端的に言うと、グラフ120および表122は、サーバー・コンピューター102によって出力されクライアント・デバイス110に送信することができるデーター構造を含むことができる。
【0047】
[0054] クライアント・デバイス110は、グラフ120および/または表122を使用して、スクリプト・ファイル116に対するロード順序を決定することができる。したがって、動作208において出力されたデーター118は、スクリプト・ファイル依存性および/または他の考慮事項に基づいてサーバー・コンピューター102によって決定された順序で、スクリプト・ファイル116をロードするために使用することができる。データー118は、サーバー・コンピューター102、サーバー・コンピューター102によってアクセス可能なデーター記憶デバイス、および/またはサーバー・コンピューター102による格納を伴ってまたは伴わずに、クライアント・デバイス110に送信することができる。動作208から、方法200は動作210に進む。方法200は、動作210において終了する。
【0048】
[0055] これより
図3に移り、ページに関連するスクリプト・ファイルを登録する方法300の形態について詳細に説明する。
図2を参照して先に注記したように、
図3を参照してここで説明する動作は、方法200の動作204において実行することができるが、必ずしもそうしなくてもよい。したがって、ここで説明する
図3の実施形態は例示であり、限定するように解釈しては決してならないことは理解されてしかるべきである。
【0049】
[0056] 方法300は、動作302において開始し、ここで、サーバー・コンピューター102は特定のページ108内部においてスクリプト・ファイル116を識別する。サーバー・コンピューター102は、ページ108に関連するコード内部の種々の位置においてページ108の分析を開始して、スクリプト・ファイル116をサーチし識別することができる。実施形態では、サーバー・コンピューター102が、ページ108に関連するコードの開始時に動作302の分析を開始する場合もある。他の実施形態では、サーバー・コンピューター102は、ページ108に関連するソース・コードのヘッダ、本体、または他の部分から分析を開始し、更に他の実施形態では、分析がランダムな進入ポイントにおいて開始する場合もある。ページ108の分析をどこから開始するかについての決定は、ユーザの設定または他の選択肢、あるいは他の考慮事項にしたがって行うことができる。分析がどのようにおよび/またはどこから開始するかには関係なく、サーバー・コンピューター102はページ108を分析し、スクリプト・ファイル116を識別することができる。
【0050】
[0057] サーバー・コンピューター102は、ファイル・フォーマット、拡張子等に基づいて、ページ108内部のスクリプト・ファイル116に対する参照を認識するように構成することができる。他の実施形態では、サーバー・コンピューター102は、ページ108に関連するサーバー側実行可能コードにおいてレジスターへのコールを生成し、スクリプト・ファイル116を識別するためにスクリプト・ファイル116をサーチすることおよび/またはページ108を分析することなく、スクリプト・ファイル116を識別する。実施形態では、前述のように、スクリプト・ファイル116がJAVASCRIPT(登録商標)ファイルであることもあり、したがって.js拡張子を有することができる。つまり、サーバー・コンピューター102は、例えば、ページ108をサーチして、JAVASCRIPT(登録商標)拡張子に対応するテキスト「.js」を求めることによって、スクリプト・ファイルに対する参照を認識することができる。スクリプト・ファイル116の他のフォーマットおよび/またはタイプも可能であり考えられるので、この実施形態は例示であり、限定するように解釈しては決してならないことは理解されてしかるべきである。
【0051】
[0058] 動作302から、方法300は動作304に進み、ここで、サーバー・コンピューター102は、動作302において識別されたスクリプト・ファイル116に対応するノードを、グラフ120のような有向グラフに追加する。ノードについては、
図5を参照して、以下で更に詳しく示し説明する。端的に言うと、サーバー・コンピューター102は、動作302において識別されたスクリプト・ファイル116の表現を有向グラフに追加することができる。スクリプト・ファイル116に関連する依存性は、
図4を参照して以下で説明する方法400のような依存性解明プロセスの間に判定することができる。したがって、ノードおよびノード間の依存性を有向グラフに含ませることができる。有向グラフについては、
図4および
図5を参照しながら以下で更に詳しく示し説明する。
【0052】
[0059] 動作304から、方法200は動作306に進み、ここで、サーバー・コンピューター102は、動作302において識別されたスクリプト・ファイル116に対する参照を、リスト、マニフェスト、表、または表122のような他のデーター構造に追加する。実施形態では、スクリプト・ファイル116に対する参照が、スクリプト・ファイル116の識別を名称で含む場合がある。スクリプト・ファイル116に対する参照は、そのスクリプト・ファイル116に関連するロード・レベルで、表122に追加することができる。実施形態では、スクリプト・ファイル116に関連するロード・レベルは、スクリプト・ファイル116の再帰呼び出しの間に判定することができる。これについては、
図4を参照しながら以下で更に詳しく示し説明する。したがって、動作306において表122に追加される参照は、ロード・レベルの指示を含んでも含まなくてもよく、したがって、以下で更に詳しく説明するように、ノードおよび/またはスクリプト・ファイル116の再帰呼び出しの間にリファインされてもされなくてもよい。
【0053】
[0060] 動作306から、方法300は動作308に進み、サーバー・コンピューター102は、ページ108が追加のスクリプト・ファイル116を含むか否か判定する。実施形態によれば、サーバー・コンピューター102はページ108を分析して、ページ108に含まれるスクリプト・ファイル116の数を判定することができ、および/またはページ108におけるスクリプト・ファイル116を識別し、ページ108をサーチして追加のスクリプト・ファイル116を求め続けることができる。したがって、動作308は、ページ108を分析して追加のスクリプト・ファイル116をサーチすること、および/またはページ108において識別された各スクリプト・ファイル116が登録されたか否か判定することを含むことができる。サーバー・コンポーネント102が、動作308において、追加のスクリプト・ファイル116がページ108に含まれると判定した場合、方法300は動作302に戻ることができ、ここで、サーバー・コンピューター102は他のスクリプト・ファイル116を識別することができる。動作302〜308は、サーバー・コンピューター102が、動作308の任意の繰り返しにおいて、他のスクリプト・ファイル116がページ108に含まれないと判定するまで繰り返すことができる。
【0054】
[0061] サーバー・コンピューター102が、動作308の任意の繰り返しにおいて、他のスクリプト・ファイル116がページ108に含まれないと判定した場合、方法300は動作310に進む。方法300は動作310において終了する。
【0055】
[0062] 考えられる1つの実施形態によれば、サーバー・コンピューター102は、コンピューター実行可能コードの実行によって、方法300を参照して以上で説明した機能の一部または全部を設け、あるいはこの機能を設けない。コンピューター実行可能コードの一実施形態を、以下の表1に紹介する。表1に紹介するコンピューター実行可能コードは、表2に示すような、想定されるグローバル関数および定義関数に基づくことができるが、必ずしもそうとは限らない。コード例ならびにグローバル関数および定義関数の例は、1つの考えられる例の例示に過ぎないので、これらの例を限定するように解釈しては決してならない。
【0058】
[0063] これより
図4に移り、スクリプト・ファイル依存性を解明する方法400について詳しく説明する。
図2を参照して先に注記したように、
図4を参照しながらここで説明する動作は、方法200の動作206において実行することができるが、必ずしもそうとは限らない。したがって、
図4に示す実施形態は例示であり、限定するように解釈しては決してならないことは理解されてしかるべきである。
【0059】
[0064] 方法400は、動作402において開始し、ここで、サーバー・コンピューター102はページ108からスクリプト・ファイル116を選択する。
図3を参照して先に説明したように、サーバー・コンピューター102は、ページ108を分析してページ108内におけるスクリプト・ファイル116を識別することができ、および/またはページ108を分析し始め、ページ108における第1スクリプト・ファイル116を識別することができる。スクリプト・ファイル116がどのようにサーバー・コンピューター102によって識別されるかには関係なく、ページ108における1つ以上のスクリプト・ファイル116の内1つを、動作402においてサーバー・コンピューター102によって選択することができる。
【0060】
[0065] 動作402から、方法400は動作404に進み、ここで、サーバー・コンピューター102は、動作402において選択されたスクリプト・ファイル116が既にサーバー・コンピューター102によって分析されたか否か判定する。前述のように、サーバー・コンピューター102は、ノード・カラーリングをページ108におけるスクリプト・ファイル116に適用して、識別のスクリプト・ファイル116の分析を、分析の1回の繰り返しまたはインスタンスに限定するように構成することができる。したがって、サーバー・コンピューター102の実施形態では、特定のノードまたはスクリプト・ファイル116の1回よりも多い分析を防止する効率的なやり方で、ページ108を分析するように構成される。
【0061】
[0066] 動作404において、サーバー・コンピューター102が、動作402において選択されたスクリプト・ファイル116が以前に分析されたことがあると判定した場合、サーバー・コンピューター102は、以下で説明するように、スクリプト・ファイル116のそれ以上の分析を飛ばすことができる。サーバー・コンピューター102が、動作404において、動作402において選択されたスクリプト・ファイルが以前に分析されたことがないと判定した場合、方法400は動作406に進む。
【0062】
[0067] 動作406において、サーバー・コンピューター102は、スクリプト・ファイル116に、行ったまたは分析したという印を付ける。ノードまたはスクリプト・ファイルに行ったおよび/または分析したことがあるという印を付けるサーバー・コンピューター102の機能を、ここでは、「ノード・カラーリング」と呼ぶ。本明細書において説明するノード・カラーリング機能は、サーバー・コンピューター102によって、特定のノードおよび/またはスクリプト・ファイル116が方法400において1回だけ分析されることを確保するために実施することができる。したがって、ノード・カラーリングは、サーバー・コンピューター102によって、本明細書において説明するスクリプト・ファイル依存性およびロード・レベルの決定の間に行われるロード・レベルの更新回数を制限するために実施することができる。したがって、本明細書において説明するノード・カラーリングは、サーバー・コンピューター102によるスクリプト・ファイル依存性および/またはロード・レベルの決定の効率および/または信頼性を高めることができる。
【0063】
[0068] 動作406から、方法400は動作408に進み、ここで、サーバー・コンピューター102はスクリプト・ファイル116に関連する依存性を解明する。具体的には、サーバー・コンピューター102は各スクリプト・ファイル116を分析し、スクリプト・ファイル116が任意の他のスクリプト・ファイル116に依存するか、または依存されるか判定する。実施形態では、サーバー・コンピューター102がXMLマニフェスト、リスト、またはスクリプト・ファイル依存性を示す他のデーターを受信し、および/またはページ108を分析することによって依存性を判定する場合がある。また、スクリプト・ファイル116に対する参照が、ページ108内部および/またはスクリプト・ファイル116自体の内部に存在する可能性もある。したがって、サーバー・コンピューター102は、ページ108および/またはスクリプト・ファイル116の分析によって、1つ以上のスクリプト・ファイル116の依存性を判定することができる。依存性を解明しようとしているスクリプト・ファイル116によって他のスクリプト・ファイル116が参照される場合、依存性解明の間における再帰呼び出しに関して先に説明したように、参照されるスクリプト・ファイル116も動作408において分析することができる。つまり、図には示されないが、サーバー・コンピューター102は、望ましければ、ここで説明する分析および/または他の目的のために、スクリプト・ファイル116のコピーを格納することができ、動作408の間に複数のスクリプト・ファイル116を分析することも可能であることは理解されてしかるべきである。
【0064】
[0069] 動作408から、またはサーバー・コンピューター102が、動作404において、スクリプト・ファイル116が以前に行ったことがあるまたは分析されたことがあると判定した場合、方法400は動作410に進む。動作410において、サーバー・コンピューター102は、依存性解明のために他にスクリプト・ファイル116またはノードが残っているか否か判定することができる。
図3を参照して先に説明したように、サーバー・コンピューター102はページ108を分析して、ページ108に含まれるスクリプト・ファイル116および/またはノードの数を判定することができ、および/またはページ108におけるスクリプト・ファイル116またはノードを識別し、ページ108をサーチして追加のスクリプト・ファイル116またはノードを求め続けることができる。したがって、動作410は、サーバー・コンピューター102がページ108を分析して、追加のスクリプト・ファイル116またはノードをサーチすること、および/またはページ108において識別された各スクリプト・ファイル116またはノードが、分析されたことがあるかまたは行ったことがあるか否か判定することを含むことができる。動作410において、サーバー・コンピューター102が、他のスクリプト・ファイル116またはノードを分析すべきであると判定した場合、方法400は動作402に戻ることができ、ここで、サーバー・コンピューター102は他のスクリプト・ファイル116を選択することができる。動作402〜410は、サーバー・コンピューター102が、動作308の任意の繰り返しにおいて、他に分析するスクリプト・ファイル116がないと判定するまで、サーバー・コンピューター102によって繰り返すことができる。
【0065】
[0070] 動作410の任意の繰り返しにおいて、サーバー・コンピューター102が、他には分析するスクリプト・ファイル116がないと判定した場合、方法400は動作412に進む。方法400は、動作412において終了する。
【0066】
[0071] 考えられる一実施形態では、サーバー・コンピューター102が、コンピューター実行可能コードの実行によって、方法400を参照して以上で説明した機能の一部または全部を設け、あるいはこの機能を設けない。コンピューター実行可能コードの一実施形態を、以下の表3に紹介する。以下のコード例は、1つの考えられる例の例示に過ぎないので、表3に示す実施形態を限定するように解釈しては決してならない。加えて、以下で示す例は、メソッド「Output」が存在するという想定に基づく。Outputメソッドは、ロード・レベルに依存して、種々のアクションを行うように個別に作ることができる。したがって、ここで示すOutputメソッドは単にこのようなメソッドの存在を例示するために示されるのであり、限定するように解釈しては決してならないことは理解されてしかるべきである。
【0068】
[0072] これより
図5に移り、スクリプト・ファイル依存性および/またはロード時間を管理するために本明細書において開示される概念および技術の追加の形態について詳しく説明する。具体的には、
図5は、例示的な実施形態によるスクリプト・ファイル有向グラフ500を模式的に示すブロック図である。スクリプト・グラフ有向グラフ500は、スクリプト・グラフ有向グラフ500内に表されるスクリプト・ファイル116間の依存性を示すデーター構造に対応することができる。尚、
図5に示すスクリプト・ファイル有向グラフ500は、以上で詳細に説明したグラフ120の一例であることは、認められてしかるべきである。したがって、図示する実施形態は例示であると理解されてしかるべきであり、限定するように解釈しては決してならない。
【0069】
[0073]
図5に示すように、スクリプト・グラフ有向グラフ500は、複数のノード502A〜502Fを含む(以下、集合的および/または総合的に「ノード502」と呼ぶ)。先に説明したように、
図5に示すノード502は、特定のページ108に関連するスクリプト・ファイル116に対応することができる。
図5のスクリプト・グラフ有向グラフの例500は、6つのスクリプト・ファイル116を参照するページ108についてのグラフ120に対応する。先に説明したように、この実施形態は例示であり、限定するように解釈しては決してならない。
【0070】
[0074] 本明細書において開示される概念および技術を説明する目的に限って、
図5に示すスクリプト・グラフ有向グラフ500は、スクリプト・ファイル116に対して少なくとも6つの参照を含むページ例108に対応するものとして記述される。尚、本明細書における説明から、ノードは、ノード502に対する参照を含むページ108に加えて、またはその代わりに、他のノードに対する参照を含むことができることは理解されてしかるべきである。例えば、ノード502Dは、ノード502Cに依存するように示され、したがって、ノード502Dはノード502Cに対する参照を含むことができる。実施形態では、サーバー・コンピューター102が、
図2〜
図4に示した方法200、300、400の実行によって、スクリプト・グラフ有向グラフ500を生成する場合がある。具体的には、サーバー・コンピューター102は、
図3を参照して先に説明した方法300の実行によって、ノード502をスクリプト・グラフ有向グラフ500に追加することができる。更に、スクリプト・グラフ有向グラフ500は、ノード・エッジ504A〜504F(以後纏めておよび/または全体的に「エッジ504」と呼ぶ)の表示によって、ノード502間の依存性を示す。エッジ504は、スクリプト・ファイル116間の依存性に対応することができ、依存性は、2つのノード502間のエッジ504によって示される。
【0071】
[0075] 実施形態では、エッジ504の矢印が、依存するノードに向かって指し示す。具体的には、エッジ504の矢印は、被依存ノード(depended upon node)502即ちスクリプト・ファイル116から離れるように、および/または他のノード502から依存するノード502即ちスクリプト・ファイル116に向かって指し示すことができる。例えば、スクリプト・ファイル116に対応するノード502Dは、
図5において「d.js」という名称が付けられ、「c.js」という名称が付けられたスクリプト・ファイル116に対応するノード502Cから、そして「e.js」という名称が付けられたスクリプト・ファイル116に対応するノード502Eから依存するように示される。尚、この実施形態は例示であり、限定するように解釈しては決してならないことは理解されてしかるべきである。
【0072】
[0076] 先に説明したように、サーバー・コンピューター102は、表、リスト、マニフェスト、および/または表122のような他のデーター構造だけでなく、スクリプト・ファイル有向グラフ500および/または他のグラフ120も生成することができる。表122は、ページ108に関連するスクリプト・ファイル116および/またはノード502毎にロード・レベルを指定することができる。ロード・レベルを示す表122の一例を
図6を参照して、以下で示し説明する。
【0073】
[0077] 考えられる一実施形態によれば、サーバー・コンピューター102は、以下の
図4に示す動作の実行によって、スクリプト・グラフ有向グラフ500を生成する。
図4に示すコード例および
図5に示すスクリプト・グラフ有向グラフ500は、考えられる一例を単に例示するに過ぎないので、表4に示す実施形態は限定するように解釈しては決してならない。
【0075】
[0078] これより
図6を参照すると、例示的実施形態によるスクリプト・ファイル・ロード・レベル表600を示す線図が示されている。種々の実施形態によれば、サーバー・コンピューター102は、
図2〜
図4を参照して先に説明した方法200、300、400の実行によって、および/または他のプロセスによって、スクリプト・ファイル・ロード・レベル表600を生成することができる。図示する実施形態では、スクリプト・ファイル・ロード・レベル表600は、スクリプト・ファイル116および/またはスクリプト・ファイル116に関連するノードを、指定されたロード・レベルと共に登録した後に生成される。指定されたロード・レベルは、ページ108の分析に基づいて、および/またはサーバー・コンピューター102に供給されるリストまたはマニフェストによって決定することができる。
【0076】
[0079]
図6に示すように、スクリプト・ファイル・ロード・レベル表600は、ロード・レベルを示す列602と、スクリプト・ファイル116を示す列604とを含む。つまり、スクリプト・ファイル・ロード・レベル表600は、複数の行606A〜606Hを含むことができる(以後、纏めておよび/または全体的に「行606」と呼ぶ)を含むことができる。行606は、ロード・レベルに対応することができ、行606に対応するロード・レベルにおいてロードされるスクリプト・ファイル116を示すことができる。つまり、例えば、行606Cは第3ロード・レベルに対応することができ、「e.js」という名称が付けられたスクリプト・ファイル116が第3ロード・レベルにおいてロードされることを示すことができる。スクリプト・ファイル・ロード・レベル表600は、8つよりも少ないまたは多いロード・レベルを含むことができ、および/または6つよりも少ないまたは多いスクリプト・ファイル116に対する参照を含むことができるので、図示する実施形態は例示であり、限定するように解釈しては決してならないことは理解されてしかるべきである。
【0077】
[0080] 尚、任意の数のロード・レベルを含むことができ、そしてロード・レベルの数および/またはロード・レベルの指定は実現例に特定とすることができることは理解されてしかるべきである。考えられる一例では、ロード・レベルの4つの総合カテゴリーが、特定の機能にアクセスされたときまたは要求されたときに実行されるスクリプト・ファイル116に対応するオンデマンド・ロード・レベル、ユーザ・インターフェースがレンダリングされた後にロードまたは実行されるスクリプト・ファイル116に対応するUI後ロード・レベル、延期属性があるスクリプト・タグにおいて参照されるスクリプト・ファイル116に対応する延期ロード・レベル、および/またはページ108コードの本体内部で参照されるスクリプト・ファイル116のような、ロード・インライン・ロード・レベルを含む。
【0078】
[0081] 考えられる他の実施形態では、8つのロード・レベルが特定のページ108に関連付けられる。これらのレベルは、限定ではなく、ソース(「src」)属性があるスクリプト・タグとしてページ・ヘッダ内において参照されるスクリプト・ファイル116に対応する第1レベル、第1レベル・スクリプトの後にページ・ヘッドにおいて参照されるスクリプト・ファイル116に対応する第2レベル、レベル2スクリプトの後に、src属性および延期属性があるスクリプト・タグとしてページ・ヘッダ内に位置するスクリプト・ファイル116に対応する第3レベル、および、src属性および延期属性があり、レベル3スクリプトの後に、スクリプト・タグとしてページ・ヘッドに含まれるスクリプト・ファイル116に対応する第4レベルを含む。また、ロード・レベルは、src属性があるスクリプト・タグとしてページ108の本体の終端付近にあるスクリプト・ファイル116に対応する第5ロード・レベル、レベル5スクリプトの後に、ページ108の本体の終端付近においてスクリプト・タグとして含まれるスクリプト・ファイル116の参照に対応する第6レベル、オンデマンド登録によって登録され必要に応じてロードされるスクリプト・ファイル116に対応する第7レベル、および/またはレベル7スクリプト・ファイル参照後に、オンデマンド登録システムによって登録され、必要に応じてロードされるスクリプト・ファイル116に対応する第8レベルも含む。この場合も、以上で説明したロード・レベルの実施形態は例示であり、限定するように解釈しては決してならないことは理解されてしかるべきである。
【0079】
[0082] スクリプト・ファイル・ロード・レベル表600は、特定のページ108に関連するロード・レベルと、識別された各ロード・レベルにおいてどのスクリプト・ファイル116がロードされるかについての指示を示すことができる。したがって、スクリプト・ファイル・ロード・レベル表600は、ページ108をレンダリングするときの使用のために、クライアント・デバイス110のような他のエンティティにも供給することができる。したがって、ページ108によって参照されるスクリプト・ファイル116は、サーバー・コンピューター102によって、スクリプト・ファイル・ロード・レベル表600によって識別された順序でアクセスし、ロードし、および/または実行することができる。尚、この実施形態は例示であり、限定するように解釈しては決してならないことは理解されてしかるべきである。
【0080】
[0083] 考えられる一実施形態によれば、サーバー・コンピューター102は、以下の表5に示す動作の実行によって、スクリプト・ファイル・ロード・レベル表600を生成する。
図5に示すコード例および
図6に示すスクリプト・ファイル・ロード・レベル表600は、考えられる一例を例示するに過ぎないので、表5に示す実施形態は、限定するように解釈しては決してならない。
【0082】
[0084]
図7は、スクリプト・ファイル依存性およびロード時間を管理するための、本明細書において説明したソフトウェア・コンポーネントを実行することができるデバイスの例示的コンピューター・アーキテクチャー700を示す。つまり、
図7に示すコンピューター・アーキテクチャー700は、サーバー・コンピューター、移動体電話機、PDA、スマート・フォン、デスクトップ・コンピューター、ネットブック・コンピューター、タブレット・コンピューター、および/またはラップトップ・コンピューターのアーキテクチャーを示す。コンピューター・アーキテクチャー700は、本明細書において提示されたソフトウェア・コンポーネントの任意の形態を実行するために利用することができる。
【0083】
[0085]
図7に示すコンピューター・アーキテクチャー700は、中央処理ユニット702(「CPU」)、ランダム・アクセス・メモリ706(「RAM」)およびリード・オンリー・メモリ(「ROM」)708を含むシステム・メモリ704、ならびにメモリー704からCPU702までを結合するシステム・バス710を含む。起動中におけるように、コンピューター・アーキテクチャー700内部のエレメント間で情報を移すのに役立つ基本ルーチンを含む基本入力/出力システムが、ROM708に格納される。コンピューター・アーキテクチャー700は、更に、オペレーティング・システム714、サーバー・アプリケーション106、および/または他のアプリケーション・プログラムを格納する大容量記憶デバイス712も含む。また、大容量記憶デバイス712は、ページ108、データー118、および/または他のデーター(
図7には示されない)も格納するように構成することができる。
【0084】
[0086] 大容量記憶デバイス712は、バス710に接続された大容量記憶コントローラー(図示せず)を介してCPU702に接続される。大容量記憶デバイス712およびそれに付随するコンピューター読み取り可能媒体は、コンピューター・アーキテクチャー700に不揮発性ストレージを設ける。本明細書に含まれるコンピューター読み取り可能媒体の説明は、ハード・ディスクまたはCD−ROMのような大容量記憶デバイスに言及するが、コンピューター読み取り可能媒体は、コンピューター・アーキテクチャー700によってアクセスすることができる任意の入手可能なコンピューター記憶媒体または通信媒体とすることができることは当業者には認められてしかるべきである。
【0085】
[0087] 通信媒体は、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、または他のデーターを、搬送波のような変調データー信号または他の伝送メカニズムにおいて含み、任意の配信媒体を含む。「変調データー信号」という用語は、信号内に情報をエンコードするようなやり方で、その特性の内1つ以上が変更または設定された信号を意味する。一例として、そして限定ではなく、通信媒体は、有線ネットワークまたは直接有線接続のような有線媒体と、音響、RF、赤外線、またはその他のワイヤレス媒体のようなワイヤレス媒体とを含む。以上の内の任意の組み合わせも、コンピューター読み取り可能媒体の範囲内に含まれてしかるべきである。
【0086】
[0088] 一例として、そして限定ではなく、コンピューター記憶媒体は、揮発性および不揮発性媒体、リムーバブルおよび非リムーバブル媒体を含み、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、または他のデーターというような任意の情報の記憶のための任意の方法または技術で実現される。例えば、コンピューター媒体には、限定ではなく、RAM、ROM、EPROM、EEPROM、フラッシュ・メモリーまたは他のソリッド・ステート・メモリー技術、CD−ROM、ディジタル・バーサタイル・ディスク(DVD)、HD−DVD、BLU−RAY(登録商標)、または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスク記憶デバイスまたはその他の磁気記憶デバイス、あるいは所望の情報を格納するために使用することができ、コンピューター・アーキテクチャー700によってアクセスすることができる任意の他の媒体が含まれる。特許請求の範囲に限って言えば、「コンピューター記憶媒体」という句およびその異形は、波、信号、および/または他の一時的および/または無形通信媒体をそれ自体含まない。
【0087】
[0089] 種々の実施形態によれば、コンピューター・アーキテクチャー700は、ネットワーク104のようなネットワークを介して、リモート・コンピューターへの論理接続を使用して、ネットワーク接続環境において動作することもできる。コンピューター・アーキテクチャー700は、バス710に接続されたネットワーク・インターフェース・ユニット716を介して、ネットワーク104に接続することができる。尚、ネットワーク・インターフェース・ユニット716は、他のタイプのネットワークおよびリモート・コンピューター・システム、例えば、クライアント・デバイス110に接続するために利用されてもよいことは認められてしかるべきである。また、コンピューター・アーキテクチャー700は、キーボード、マウス、または電子スタイラス(
図7には示されない)を含む複数の他のデバイスからの入力を受けて処理する入力/出力コントローラー718も含むことができる。同様に、入力/出力コントローラー718は、出力を表示画面、プリンタ、または他のタイプの出力デバイス(
図7には示されない)に供給することができる。
【0088】
[0090] 尚、本明細書において説明したソフトウェア・コンポーネントは、CPU702にロードされ実行されると、CPU702およびコンピューター・アーキテクチャー700全体を汎用計算システムから、本明細書において紹介した機能を容易に実行するようにカスタム化された特殊目的計算システムに変形できることは認められてしかるべきである。CPU702は、任意の数のトランジスターまたは他のディスクリート回路エレメントから組み立てることができ、これらのエレメントは、個別にまたは集合的に任意の数の状態になる(assume)。更に具体的には、CPU702は、本明細書において開示したソフトウェア・モジュール内に収容された実行可能命令に応答して、有限状態機械として動作することもできる。これらのコンピューター実行可能命令は、CPU702が状態間でどのように遷移するか指定することによって、CPU702を変化させ、これによって、CPU702を構成するトランジスターまたは他のディスクリート回路エレメントを変化させることができる。
【0089】
[0091] 本明細書において紹介したソフトウェア・モジュールをエンコードすることによっても、本明細書において紹介したコンピューター読み取り可能媒体の物理的構造を変化させることができる。物理的構造の具体的な変化は、本明細書の異なる実施態様における種々の要因に依存する場合もある。このような要因の例には、コンピューター読み取り可能媒体を実現するために使用された技術、コンピューター読み取り可能媒体が主ストレージまたは副ストレージのどちらとして特徴付けられるか等を含むことができるが、これらに限定されるのではない。例えば、コンピューター読み取り可能媒体が半導体ベース・メモリとして実現される場合、本明細書において開示したソフトウェアは、半導体メモリーの物理的状態を変化させることによって、コンピューター読み取り可能媒体にエンコードすることができる。例えば、ソフトウェアは、半導体メモリーを構成するトランジスター、キャパシター、または他のディスクリート回路エレメントの状態を変化させることもできる。また、ソフトウェアは、データーを格納するためにこのようなコンポーネントの物理的状態を変化させることもできる。
【0090】
[0092] 他の例として、本明細書において開示したコンピューター読み取り可能媒体は、磁気または光技術を使用して実現することもできる。このような実施態様では、本明細書において紹介したソフトウェアは、このソフトウェアがエンコードされるときに、磁気または光媒体の物理的状態を変化させることができる。これらの変形は、所与の磁気媒体内の特定の位置の磁気特性を変化させることを含むことができる。また、これらの変形は、所与の光媒体内における特定の位置の物理的特徴または特性を変化させ、これらの位置の光学特性を変化させることも含むことができる。本明細書の範囲および主旨から逸脱することなく、物理媒体の他の変形も可能であり、以上の例は、この論述を容易にするために与えられるに過ぎない。
【0091】
[0093] 以上のことを考慮して、本明細書において説明したソフトウェア・コンポーネントを格納および実行するために、コンピューター・アーキテクチャー700内において多くのタイプの物理的変形が行われることは認められてしかるべきである。また、コンピューター・アーキテクチャー700は、ハンドヘルド・コンピューター、埋め込み型コンピューター・システム、パーソナル・ディジタル・アシスタント、および当業者には知られている他のタイプの計算デバイスを含む、他のタイプの計算デバイスも含むことができることも認められてしかるべきである。また、コンピューター・アーキテクチャー700が
図7に示すコンポーネントの全てを含まなくてもよいこと、
図7には明示的に示されない他のコンポーネントを含んでもよいこと、または
図7に示すものとは完全に異なるアーキテクチャーを利用してもよいことも考えられる。
【0092】
[0094] 以上の説明に基づいて、本明細書では、スクリプト・ファイル依存性およびロード時間を管理するための技術が開示されたことは認められてしかるべきである。本明細書において提示した主題について、コンピューターの構造的特徴、方法論的または変形アクト(transformative act)、具体的な計算機械、およびコンピューター読み取り可能媒体に特定的な文言で説明したが、添付した特許請求の範囲において定められる本発明は、必ずしも本明細書において説明したこれらの具体的な特徴、アクト、または媒体には限定されないことは、理解されてしかるべきである。逆に、これらの具体的な特徴、アクト、および媒体は、特許請求の範囲を実現する形態例として開示されたまでである。
【0093】
[0095] 以上で説明した主題は、例示として提示されたに過ぎず、限定と解釈してはならない。図示および説明した実施形態例やアプリケーションに従うことなく、そして以下の特許請求の範囲において記載される、本発明の真の主旨および範囲から逸脱することなく、種々の変更および変化(modifications and changes)を本主題に対して行うことができる。