JP6073372B2 - スクリプト・ファイル依存性およびロード時間の管理 - Google Patents

スクリプト・ファイル依存性およびロード時間の管理 Download PDF

Info

Publication number
JP6073372B2
JP6073372B2 JP2014553350A JP2014553350A JP6073372B2 JP 6073372 B2 JP6073372 B2 JP 6073372B2 JP 2014553350 A JP2014553350 A JP 2014553350A JP 2014553350 A JP2014553350 A JP 2014553350A JP 6073372 B2 JP6073372 B2 JP 6073372B2
Authority
JP
Japan
Prior art keywords
script file
client
side script
computer
page
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014553350A
Other languages
English (en)
Other versions
JP2015508190A (ja
JP2015508190A5 (ja
Inventor
カーン,ジョナサン・フレッド
ネーション,ザカリー
ノーバウアー,アラン・ティー
チーアーン,フランク・フオン−チュン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2015508190A publication Critical patent/JP2015508190A/ja
Publication of JP2015508190A5 publication Critical patent/JP2015508190A5/ja
Application granted granted Critical
Publication of JP6073372B2 publication Critical patent/JP6073372B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • G06F16/986Document structures and storage, e.g. HTML extensions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs

Description

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

Claims (10)

  1. スクリプト・ファイル依存性を示すデーターを出力するためのコンピューター実装方法であって、
    コンピューターにおいて、クライアント側スクリプト・ファイルに対する参照を含むリソースに対応する実行可能コードを受信する動作と
    前記コンピューターにおいて、前記参照に関連する前記クライアント側スクリプト・ファイルを登録する動作と
    前記コンピューターにおいて、前記クライアント側スクリプト・ファイルに関連するスクリプト・ファイル依存性を解明する動作であって、該解明を、
    前記クライアント側スクリプト・ファイルを分析のため選択し、
    前記クライアント側スクリプト・ファイルが以前に分析されたことがないことを決定し、
    前記クライアント側スクリプト・ファイルが以前に分析されたことがないと決定したことに応答して、前記クライアント側スクリプト・ファイルに行ったことがあるという印を付ける、
    ことによって行う、動作と、
    前記コンピューターにおいて、前記参照に関連する前記クライアント側スクリプト・ファイルについての前記解明したスクリプト・ファイル依存性を示す前記データーを出力する動作であって、前記データーが、前記クライアント側スクリプト・ファイルに対する前記参照と、前記コンピューターと通信可能なクライアント・デバイスにおける前記リソースのレンダリングの間に前記クライアント側スクリプト・ファイルがロードされるロード・レベルとを含むデーター構造を含む、動作と、
    を行うためのコンピューター実施動作を実行することを含む、コンピューター実装方法。
  2. 請求項1記載の方法において、前記データーが、更に、
    前記クライアント側スクリプト・ファイルに対応する第1ノードと、
    前記クライアント側スクリプト・ファイルによって依存される第2クライアント側スクリプト・ファイルに対応する第2ノードと、
    前記クライアント側スクリプト・ファイルと前記第2クライアント側スクリプト・ファイルとの間におけるエッジであって、前記クライアント側スクリプト・ファイルと前記第2クライアント側スクリプト・ファイルとの間のスクリプト・ファイル依存性を示す、エッジと、
    を含むデーター構造を含む、方法。
  3. 請求項1記載の方法であって、更に、前記実行可能コードおよび前記データーを、前記クライアント・デバイスに供給する動作を含み、前記クライアント・デバイスが、前記クライアント側スクリプト・ファイルを格納する、方法。
  4. 請求項1記載の方法において、前記クライアント側スクリプト・ファイルと関連する前記スクリプト・ファイル依存性を解明する動作が、更に、
    記クライアント側スクリプト・ファイルに依存する他のクライアント側スクリプト・ファイルを識別する動作、
    を含む、方法。
  5. 請求項1記載の方法において、前記クライアント側スクリプト・ファイルを登録する動作が、
    データー構造を作る動作と
    ノードを前記データー構造に追加する動作であって、前記ノードが前記クライアント側スクリプト・ファイルに対応する、動作と、
    含む、方法。
  6. 請求項1記載の方法において、前記クライアント側スクリプト・ファイルを登録する動作が、
    ロード・レベル表を作る動作と
    前記ロード・レベル表に参照を追加する動作であって、前記参照が、前記クライアント側スクリプト・ファイルに対する参照と、前記クライアント側スクリプト・ファイルに関連するロード・レベルの指示とを含む、動作と、
    含む、方法。
  7. 請求項1記載の方法において、前記リソースウェブ・ページを含む、方法。
  8. 請求項1記載の方法において、前記リソースウェブ・アプリケーションを含む、方法。
  9. コンピューター読み取り可能命令が格納された、光ディスク、ソリッド・ステート・メモリー・デバイス、磁気記憶デバイスのうちの1つ以上を含むコンピューター記憶媒体であって、前記命令がコンピューターによって実行されると、前記コンピューターに、
    クライアント側スクリプト・ファイルに対する参照を含むウェブ・リソースに対応するコードを受信する動作と
    参照に関連した前記クライアント側スクリプト・ファイルを登録する動作と
    前記クライアント側スクリプト・ファイルよって依存される他のクライアント側スクリプト・ファイルを識別するために、前クライアント側スクリプト・ファイルを分析する動作と
    クライアント側スクリプト・ファイルに関連するクライアント側スクリプト・ファイル依存性を解明する動作であって、該解明を、
    前記クライアント側スクリプト・ファイルを分析のため選択し、
    前記クライアント側スクリプト・ファイルが以前に分析されたことがないことを決定し、
    前記クライアント側スクリプト・ファイルが以前に分析されたことがないと決定したことに応答して、前記クライアント側スクリプト・ファイルに分析されたという印を付けるためにノード・カラーリング・プロセスを実施する、
    とによって行う、動作と、
    記解明したクライアント側スクリプト・ファイル依存性を示すデーターを出力する動作であって、前記データーが表を含み、該表が、前記クライアント側スクリプト・ファイルに対する前記参照と、前記クライアント側スクリプト・ファイルがロードされるロード・レベルとを含む、動作と、
    を実行させる、コンピューター記憶媒体。
  10. 請求項9記載のコンピューター記憶媒体において、前記クライアント側スクリプト・ファイル依存性を解明する動作のための前記コンピューター実行可能命令は、更にコンピューター実行可能命令を含み、該コンピューター実行可能命令は、前記コンピューターにより実行されると、前記コンピューターに、
    前記クライアント側スクリプト・ファイルに依存する別のクライアント側スクリプト・ファイルを決定する動作、
    を実行させる、コンピューター記憶媒体。
JP2014553350A 2012-01-19 2013-01-16 スクリプト・ファイル依存性およびロード時間の管理 Active JP6073372B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/353,320 2012-01-19
US13/353,320 US9037636B2 (en) 2012-01-19 2012-01-19 Managing script file dependencies and load times
PCT/US2013/021614 WO2013109555A1 (en) 2012-01-19 2013-01-16 Managing script file dependencies and load times

Publications (3)

Publication Number Publication Date
JP2015508190A JP2015508190A (ja) 2015-03-16
JP2015508190A5 JP2015508190A5 (ja) 2016-03-03
JP6073372B2 true JP6073372B2 (ja) 2017-02-01

Family

ID=48798123

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014553350A Active JP6073372B2 (ja) 2012-01-19 2013-01-16 スクリプト・ファイル依存性およびロード時間の管理

Country Status (6)

Country Link
US (1) US9037636B2 (ja)
EP (1) EP2805251B1 (ja)
JP (1) JP6073372B2 (ja)
KR (1) KR102036392B1 (ja)
CN (1) CN104081377B (ja)
WO (1) WO2013109555A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10466989B2 (en) 2011-09-02 2019-11-05 Microsoft Technology Licensing, Llc. Fast presentation of markup content having script code
US10146885B1 (en) * 2012-12-10 2018-12-04 Emc Corporation Method and system for deciding on ordering of scripting language source code for dependency resolution
US10614490B2 (en) 2013-08-15 2020-04-07 OpenX Technologies, Inc. Integrated architecture for performing online advertising allocation
US9990656B2 (en) * 2013-08-16 2018-06-05 OpenX Technolgoies, Inc. System architecture and methods for facilitating client-side real-time auctions of advertising inventory
US11276088B1 (en) * 2013-08-16 2022-03-15 OpenX Technologies, Inc. System architecture and methods for online real-time auctions of advertising inventory
US10282290B2 (en) * 2014-06-24 2019-05-07 Shimadzu Corporation Analyzing device management system
CN105701113B (zh) 2014-11-27 2019-04-09 国际商业机器公司 用于优化网页预加载的方法和设备
CN106547527B (zh) * 2015-09-22 2020-01-21 阿里巴巴集团控股有限公司 一种JavaScript文件构建方法及装置
CN106570041A (zh) * 2015-10-12 2017-04-19 北京国双科技有限公司 拼接脚本文件的方法和装置
US9910679B2 (en) * 2015-10-15 2018-03-06 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Selective loading of components within a node to speed up maintenance actions
US10467251B2 (en) 2015-10-23 2019-11-05 Oracle International Corporation System and method for automatic dependency analysis for use with a multidimensional database
CN106845221A (zh) * 2016-11-09 2017-06-13 哈尔滨安天科技股份有限公司 一种基于语法形式的脚本类文件格式识别方法和系统
US10481876B2 (en) * 2017-01-11 2019-11-19 Microsoft Technology Licensing, Llc Methods and systems for application rendering
US10565802B2 (en) * 2017-08-31 2020-02-18 Disney Enterprises, Inc. Collaborative multi-modal mixed-reality system and methods leveraging reconfigurable tangible user interfaces for the production of immersive, cinematic, and interactive content
US10664248B2 (en) 2018-07-16 2020-05-26 Servicenow, Inc. Systems and methods for comparing computer scripts
CN111324838A (zh) * 2020-02-18 2020-06-23 北京达佳互联信息技术有限公司 页面显示方法、装置、客户端和存储介质
CN112579101B (zh) * 2020-12-21 2023-07-18 广州博冠信息科技有限公司 任务脚本管控方法、装置、电子设备和存储介质

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6449638B1 (en) * 1998-01-07 2002-09-10 Microsoft Corporation Channel definition architecture extension
US6721727B2 (en) * 1999-12-02 2004-04-13 International Business Machines Corporation XML documents stored as column data
US7310801B2 (en) 2000-04-27 2007-12-18 Microsoft Corporation Servicing a component-based software product throughout the software product lifecycle
US6990653B1 (en) * 2000-05-18 2006-01-24 Microsoft Corporation Server-side code generation from a dynamic web page content file
US6961750B1 (en) * 2000-05-18 2005-11-01 Microsoft Corp. Server-side control objects for processing client-side user interface elements
US20030050932A1 (en) * 2000-09-01 2003-03-13 Pace Charles P. System and method for transactional deployment of J2EE web components, enterprise java bean components, and application data over multi-tiered computer networks
SE0100190L (sv) * 2001-01-24 2002-07-25 Ericsson Telefon Ab L M En anordning och ett förfarande för presentationskundanpassning i en portalstruktur.
JP4208081B2 (ja) * 2004-12-27 2009-01-14 インターナショナル・ビジネス・マシーンズ・コーポレーション 複数のウェブサイトにパーソナライズされた価値を追加するためのシステム、ウェブサーバ、方法およびプログラム
EP1886235A4 (en) * 2005-05-16 2012-02-29 Planview Inc METHOD FOR USING A DIRECTED GRAPH, PRODUCING A DISPLAY FOR A DIRECTED GRAPH, AND SYSTEM FOR USE WITH THE METHOD
US7904892B2 (en) * 2006-01-06 2011-03-08 Northrop Grumman Corporation Systems and methods for identifying and displaying dependencies
US8291377B2 (en) 2006-01-25 2012-10-16 Microsoft Corporation External configuration of processing content for script
CN103218215A (zh) * 2007-01-16 2013-07-24 吉兹莫克斯有限公司 用于创建面向IT的基于服务器的Web应用的方法和系统
US8443346B2 (en) * 2007-01-18 2013-05-14 Aol Inc. Server evaluation of client-side script
US7895571B2 (en) * 2007-01-25 2011-02-22 International Business Machines Corporation Method and apparatus for resolving client-side logic
US20080201705A1 (en) 2007-02-15 2008-08-21 Sun Microsystems, Inc. Apparatus and method for generating a software dependency map
US7945849B2 (en) * 2007-03-20 2011-05-17 Microsoft Corporation Identifying appropriate client-side script references
US8881105B2 (en) * 2007-04-11 2014-11-04 Patrick J. Quilter, Jr. Test case manager
US7689665B2 (en) * 2007-04-27 2010-03-30 Microsoft Corporation Dynamically loading scripts
US8079025B2 (en) 2007-06-08 2011-12-13 Apple Inc. Asynchronous load of source dependencies
US8504913B2 (en) * 2007-06-08 2013-08-06 Apple Inc. Client-side components
US10216854B2 (en) 2007-07-26 2019-02-26 International Business Machines Corporation Optimized page script downloads in a component based architecture
US8156420B2 (en) * 2008-11-14 2012-04-10 Microsoft Corporation Form validation with table driven error handling
US8078691B2 (en) * 2009-08-26 2011-12-13 Microsoft Corporation Web page load time prediction and simulation
US8401993B2 (en) 2009-09-14 2013-03-19 International Business Machines Corporation Analytics integration server within a comprehensive framework for composing and executing analytics applications in business level languages
US8700611B2 (en) * 2010-01-12 2014-04-15 Vmware, Inc. Extensible tree views for managing datacenter resources
US8572252B2 (en) * 2010-04-09 2013-10-29 Microsoft Corporation Extensible dynamic performance instrumentation of pages
US8762830B2 (en) * 2010-06-30 2014-06-24 Konica Minolta Laboratory U.S.A, Inc. Rendering data in the correct z-order
US8438474B1 (en) * 2011-04-27 2013-05-07 Google Inc. Speculative rendering during cache revalidation

Also Published As

Publication number Publication date
EP2805251A1 (en) 2014-11-26
EP2805251B1 (en) 2022-10-19
EP2805251A4 (en) 2015-10-21
CN104081377B (zh) 2017-03-08
KR20140116874A (ko) 2014-10-06
US20130191439A1 (en) 2013-07-25
KR102036392B1 (ko) 2019-10-24
JP2015508190A (ja) 2015-03-16
WO2013109555A1 (en) 2013-07-25
US9037636B2 (en) 2015-05-19
CN104081377A (zh) 2014-10-01

Similar Documents

Publication Publication Date Title
JP6073372B2 (ja) スクリプト・ファイル依存性およびロード時間の管理
US20100218106A1 (en) Automatically Selecting Internet Browser and Providing Web Page Service
US8458585B1 (en) Delayed code parsing for reduced startup latency
US9043757B2 (en) Identifying differences between source codes of different versions of a software when each source code is organized using incorporated files
US10496381B2 (en) Progressive web app auto-ingestion
CN104391725A (zh) 页面展示方法和页面展示装置
US11195202B2 (en) Dynamic monitoring and control of web page experiences based upon user activity of associated applications
US9286083B2 (en) Satisfying missing dependencies on a running system
US11930096B2 (en) Systems and methods for rendering interactive web pages
CN105683957A (zh) 样式表推测性预加载
US20190012052A1 (en) Configuration Constraints in Globalization of Features
US20140068005A1 (en) Identification, caching, and distribution of revised files in a content delivery network
US20140331117A1 (en) Application-based dependency graph
US20150261880A1 (en) Techniques for translating user interfaces of web-based applications
EP3301590A1 (en) Algebraic data types for database query languages
US8689200B1 (en) Method and system for optimizing an executable program by generating special operations for identical program entities
WO2023051439A1 (zh) 页面刷新的耗时优化方法、装置及终端设备
US20220229858A1 (en) Multi-cloud object store access
Settle et al. aMatReader: Importing adjacency matrices via Cytoscape Automation
US10599740B1 (en) Program code streaming
US11194885B1 (en) Incremental document object model updating
CN111563363B (zh) 一种超文本标记语言文档内容生成及解析方法
US9396281B2 (en) Activities operating on structured data
CN107341263B (zh) 一种静态页面数据处理的方法及装置
US8683455B1 (en) Method and system for optimizing an executable program by selectively merging identical program entities

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160115

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161130

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161205

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170104

R150 Certificate of patent or registration of utility model

Ref document number: 6073372

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250