ここで、本発明の実施形態が、添付の図面を参照して例として説明される。
本明細書において説明される機能ユニットの多くは、それらの実装の独立性を特に強調するために、モジュールと表記されている。例えば、モジュールは、カスタムVLSI回路若しくはゲート・アレイを含むハードウェア回路、論理チップなどの既製の半導体、トランジスタ、又は他の別個のコンポーネントとして実装することができる。モジュールは、フィールド・プログラマブル・ゲート・アレイ、プログラマブル・アレイ論理、プログラマブル論理装置などといったプログラム可能なハードウェア・デバイスとして実装することもできる。
モジュールは、異なる形態のメモリと通信する種々のタイプのプロセッサによって実行するためのソフトウェアとして実装することもできる。例えば、実行可能コードの特定のモジュールは、例えばオブジェクト、手順、又は機能として編成することができる、コンピュータ命令の1つ又は複数の物理ブロック又は論理ブロックを含むことができる。それにもかかわらず、特定のモジュールの実行ファイルは、物理的に一緒に配置される必要はなく、論理的に結合されたときにモジュールを含み該モジュールの前述の目的を達成する、異なる場所に格納された別々の命令を含むことができる。
実際には、実行可能コードのモジュールは、単一の命令又は多数の命令とすることができ、幾つかの異なるコード・セグメントにわたって、異なるプログラムの間で、及び幾つかのメモリ・デバイス間にわたって、分散させることもできる。同様に、動作データは、本明細書においてはモジュール内部において特定して示すことがあり、いずれかの適切な形態で組み込み、いずれかの適切なタイプのデータ構造内で編成することができる。動作データは、単一のデータ・セットとしてまとめるか、又は、異なる記憶装置を含む異なる場所にわたって分散させることができ、システム又はネットワーク上の単なる電気信号として、少なくとも部分的に存在することができる。
本明細書の全体を通じて、「1つの実施形態」、「一実施形態」、又は同様の用語への言及は、その実施形態に関連して説明された特定の特徴、構造、又は特性が、本発明の少なくとも1つの実施形態に含まれていることを意味する。従って、「1つの実施形態においては」、「一実施形態においては」といった語句、又は同様の用語の出現は、本明細書の全体を通じて、必ずというわけではないが全て同一の実施形態を指すことがある。
信号支持媒体への言及は、信号を生成するか、信号を生成させるか、又はデジタル処理装置上で機械可読命令のプログラムを実行させることができるいずれかの形態をとることができる。信号支持媒体は、伝送線、コンパクト・ディスク、デジタル・ビデオ・ディスク、磁気テープ、ベルヌーイ・ドライブ、磁気ディスク、パンチ・カード、フラッシュ・メモリ、集積回路、又は他のデジタル処理装置記憶デバイスにより、具体化することができる。
さらに、本発明の説明される特徴、構造、又は特性は、1つ又は複数の実施形態においていずれかの適切な方法で組み合わせることができる。以下の説明においては、本発明の実施形態が完全に理解されるように、プログラミング、ソフトウェア・モジュール、ユーザ選択、ネットワーク・トランザクション、データベース照会、データベース構造、ハードウェア・モジュール、ハードウェア回路、ハードウェア・チップなどの例のような多数の特定の詳細部が提供される。しかしながら、当業者であれば、特定の詳細部の1つ又は複数を用いることなく、又は、他の方法、コンポーネント、材料などを用いて、本発明を実施できることが分かるであろう。他の場合には、本発明の態様を不明瞭なものにしないように、周知の構造、材料、又は動作は、詳細に示すことも説明することもない。
図1は、ウェブ・ページのダウンロード時間を改善するためのシステム100の1つの実施形態を示す。システム100は、ウェブ・サーバ・アプリケーション104とアーカイバ106とデータ・ストア108とを有するウェブ・ホスト102を含むことができる。システム100は、ネットワーク110と、中央演算処理装置(CPU)114、メモリ116、及びアーカイブ対応ブラウザ118を有するウェブ・クライアント112とを、さらに含むことができる。システム100は、ダウンロード時間改善のために、アーカイブ対応ブラウザ118が読み込むことができるウェブ・ページを、該ウェブ・ページに関連するアーカイブ共に生成する。
ウェブ・ホスト102は、1つの実施形態においては、ウェブ・クライアント112にウェブ・ページを提供するためのハードウェア・コンポーネント及びソフトウェア・コンポーネントを含む。ウェブ・ホスト102は、ウェブ・サーバ・アプリケーション104とアーカイバ106とデータ・ストア108とを含むことができる。ウェブ・ホスト102には、ネットワーク110を介してアクセスすることができる。
ウェブ・ホスト102は、1つの実施形態においては、ウェブ・サーバ・アプリケーション104を含む。ウェブ・サーバ・アプリケーション104は、ネットワークを介してウェブ・ページを配信するように設定されたソフトウェアを含む。ウェブ・サーバ・アプリケーション104は、hypertext markup language(HTML)ファイルのように標準であると認められている規格に適合したウェブ・ページを配信するように設定することができる。規格に準拠したウェブ・ページの他の例として、extensible hypertext markup language(XHTML)、hypertext preprocessor(PHP)、worldwide web consortium(W3C)などが挙げられる。ウェブ・サーバ・アプリケーションの例として、Apache HTTP Server、Microsoft(登録商標)Internet Information Server(登録商標)、IBM(登録商標)HTTP Serverなどが挙げられる。
ウェブ・サーバ・アプリケーション104は、1つの実施形態においては、ウェブ・ページに関連するアーカイブを配信するようにさらに設定することができる。1つの実施形態においては、これらのアーカイブは、ウェブ・ページをレンダリングするのに必要なオブジェクトを含む。アーカイブは、本明細書の下記のアーカイバ106に関して、以下でより詳細に説明される。
1つの実施形態においては、アーカイバ106は、ダウンロード時間を改善するために最適化されたウェブ・ページを生成する。アーカイバ106は、ウェブ・ページ内で参照されるオブジェクトから1つ又は複数のアーカイブを生成することができる。各々のアーカイブは、ウェブ・ページ内で参照される複数のオブジェクトで構成される。ここで用いられる「アーカイブ」という用語は、一回の送信について、ソートされた状態又はソートされていない状態で単一のファイルにまとめられた複数のデータ・オブジェクトの選択を意味する。アーカイブは、ウェブ・クライアント112に送られるときに、単一のヘッダを含むことができる。対照的に、各々のオブジェクトを別々に送信するためには、各々のオブジェクトについて別々のヘッダが必要である。1つ又は複数のアーカイブの各々が多数のオブジェクトを含んでおり、アーカイブは、アーカイブ内のオブジェクトの各々についてのヘッダの代わりに単一のヘッダで送信することができるので、必要なヘッダの合計サイズは低減される。別の実施形態においては、アーカイブは、各々のオブジェクトのための多数のヘッダを含むことができるが、これらのヘッダは、ヘッダの合計サイズを低減するために単純化される。
次いで、ウェブ・サーバ・アプリケーション104は、ウェブ・ページ内で参照される個々のオブジェクトの各々の代わりに、単一のアーカイブを配信することができる。アーカイブ内の各々のオブジェクトは、簡単なヘッダのみを必要とするか、又は個々のヘッダを全く必要とせず、個々のオブジェクトの各々に関連する個別の待ち時間が存在しないので、ウェブ・ページのダウンロード時間全体が低減される。
アーカイバ106により生成されたウェブ・ページは、1つの実施形態においては、アーカイブ対応ブラウザ118によりレンダリングすることができる。アーカイブ対応ブラウザ118は、ウェブ・ページに関連するアーカイブを受信し、アーカイブからアンパックされたオブジェクトを用いてウェブ・ページをレンダリングすることができる。生成されるウェブ・ページは、レンダリングするためにアーカイブ対応ブラウザ118を必要とする特定の形式であってもよい。例えば、生成されるウェブ・ページは、HTMLファイルと1つ又は複数の関連するアーカイブとを含むことができる。アーカイブ対応ブラウザ118は、HTMLファイルと1つ又は複数の関連するアーカイブとを処理して、ウェブ・ページをレンダリングすることができる。アーカイブ対応ブラウザ118は、1つの実施形態においては、ウェブ・ページのHTMLファイル内のタグと1つ又は複数のアーカイブのヘッダとを処理して、アーカイブ内のオブジェクトの適切な位置を決定する。アーカイブ対応ブラウザ118がアーカイブを処理する方法の一例は、図6に関連して以下で説明される。
アーカイバ106は、1つの実施形態においては、静的なウェブ・ページから、ウェブ・ページ内で参照されるオブジェクトのアーカイブと共に用いるために最適化されたウェブ・ページ(これ以降、「アーカイブ最適化ウェブ・ページ」と呼ぶ)を生成することができる。静的なウェブ・ページとは、ウェブ・ページに関連するパラメータに応答して変化することのない内容を有するウェブ・ページである。アーカイバ106は、静的なウェブ・ページに関連するオブジェクトを用いて、1つ又は複数のアーカイブを生成することができる。1つの実施形態においては、アーカイバ106は、ウェブ・クライアント112によるウェブ・ページについての要求に応答して、静的なウェブ・ページのためのアーカイブ最適化ウェブ・ページを生成することができる。
別の実施形態においては、アーカイバ106は、静的なウェブ・ページのためのアーカイブ最適化ウェブ・ページを、ウェブ・クライアント112によるウェブ・ページについての要求と非同期的に生成することができる。別の実施形態においては、アーカイバ106は、一群の静的なウェブ・ページのための一群のアーカイブ最適化ウェブ・ページを生成することができる。アーカイバ106は、アーカイブ最適化ウェブ・ページのための1つ又は複数のアーカイブを生成することができる。生成されたアーカイブ最適化ウェブ・ページ及びアーカイブ最適化ウェブ・ページのための1つ又は複数のアーカイブは、ウェブ・ホスト102がアクセスできるように格納することができる。静的なウェブ・ページについての要求によって、どちらもウェブ・ページについての要求の受信前に生成されたものである生成済みのアーカイブ最適化ウェブ・ページ及びアーカイブが配信されることになる。この実施形態においては、アーカイバ106は、ウェブ・ホスト102に重い負荷がかかっていない間に、アーカイブ最適化ウェブ・ページ及びアーカイブを生成することができる。
別の実施形態においては、アーカイバ106は、動的なウェブ・ページのためのアーカイブ最適化ウェブ・ページ及びアーカイブを生成することができる。動的なウェブ・ページとは、ウェブ・ページについての要求に応答して作成されるウェブ・ページである。動的なウェブ・ページは、要求以前には存在しないことがある。この実施形態においては、アーカイバ106は、ウェブ・クライアント112による動的なウェブ・ページについての要求に応答して、動的にアーカイブ最適化ウェブ・ページ及びアーカイブを生成する。例えば、ウェブ・クライアント112は、データ・ストア108からのデータを含み、要求に応答して作成されるウェブ・ページを、ウェブ・ホスト102から要求することがある。アーカイバ106は、データ・ストア108からデータを受信し、ウェブ・ページのためのアーカイブ最適化ウェブ・ページ及びアーカイブを生成することができる。生成されたウェブ・ページ及びアーカイブは、次に、ウェブ・サーバ・アプリケーション104により、ウェブ・クライアント112に配信することができる。
代替的な実施形態においては、アーカイバ106は、アーカイブ対応ブラウザ118がウェブ・ページをレンダリングするのに必要なファイルを全て含むアーカイブを生成する。例えば、アーカイバ106は、要求されたウェブ・ページのために必要なコンテンツの全てを含む1つ又は複数のアーカイブを生成し、その1つ又は複数のアーカイブを、レンダリングのためにアーカイブ対応ブラウザ118に配信することができる。
データ・ストア108は、1つの実施形態においては、ウェブ・ホスト102に含めることができる。データ・ストア108内のデータは、完全なウェブ・ページと、ウェブ・ページを生成するのに用いられるデータと、予め定められたアーカイブと、ウェブ・ページをレンダリングするのに用いられるオブジェクトとを含むことができる。例えば、データ・ストア108は、データ・ファイルを含む1つ又は複数のハード・ディスク・ドライブを含むことができる。別の実施形態においては、データ・ストア108は、データベースを含む。更なる実施形態においては、データ・ストア108は、フラッシュ・メモリ・デバイスを含む。
1つの実施形態においては、ネットワーク110は、ウェブ・ホスト102とウェブ・クライアント112との間でデータを送信するための媒体となる。ネットワーク110は、ウェブ・クライアント112からの要求をウェブ・ホスト102に送信することができる。ネットワーク110は、生成されたウェブ・ページ及びアーカイブをウェブ・ホスト102からウェブ・クライアント112に送信することもできる。ネットワーク110は、例えばインターネットといった、そうしたデータを送信することが可能ないずれかのネットワークとすることができる。ネットワーク110の他の例として、イントラネット、直接ネットワーク接続などが挙げられる。ウェブ・クライアント112は、1つの実施形態においては、表示するために生成されたウェブ・ページをレンダリングする。ウェブ・クライアント112は、CPU114、メモリ116、及びアーカイブ対応ブラウザ118を含むことができる。ウェブ・クライアント112は、1つの実施形態においては、アーカイブからのオブジェクトを用いて、生成されたウェブ・ページをレンダリングする。
アーカイブ対応ブラウザ118は、1つの実施形態においては、アーカイブ最適化ウェブ・ページに関連するオブジェクトを含むアーカイブを処理することができるウェブ・ブラウザである。オブジェクトの例として、jpeg、gif、bmpなどの画像ファイル、スクリプト・ファイル、又は、ウェブ・ページにおいて用いられる他のオブジェクトが挙げられる。
1つの実施形態においては、アーカイブ対応ブラウザ118は、ウェブ・ホスト102からウェブ・ページを要求する。ウェブ・ページは、ここではアーカイブ可能オブジェクトと呼ばれる、アーカイブに含めることができる1つ又は複数のオブジェクトへの参照を含むことができる。ウェブ・ホスト102は、アーカイブを参照する生成されたウェブ・ページ(即ち、アーカイブ最適化ウェブ・ページ)を、アーカイブ対応ブラウザ118に配信することができる。アーカイブ対応ブラウザ118は、アーカイブ対応ブラウザ118に組み込まれたソフトウェア命令(元のオブジェクト・コードか、又は、追加されたプラグイン若しくは拡張機能のどちらかである)を実行し、ウェブ・ホスト102からアーカイブを取得することができる。アーカイブ可能オブジェクトをアーカイブからアンパックし、そのアーカイブ可能オブジェクトを用いてウェブ・ページをレンダリングするために、アーカイブ対応ブラウザ118に組み込まれた付加的な実行可能コード(元のオブジェクト・コードか、又は、追加されたプラグイン若しくは拡張機能)がアーカイブ対応ブラウザ118によって実行される。
図2は、アーカイバ106の1つの実施形態を示す。アーカイバ106は、アーカイブ・コスト/利益モジュール202と、選択モジュール204と、アーカイブ生成モジュール206とを含むことができる。アーカイバ106は、アーカイブと、ダウンロード時間を改善した関連するウェブ・ページとを生成する。
アーカイブ・コスト/利益モジュール202は、1つの実施形態においては、アーカイブ及び関連するアーカイブ最適化ウェブ・ページの生成に関する計算コストが、ウェブ・ページのダウンロード時間の改善による利益を上回るかどうかを判定する。予測されるダウンロード時間の改善が、ウェブ・ページ及びアーカイブの生成に関連するオーバーヘッド・コストを上回る場合には、アーカイブ・コスト/利益モジュール202は、アーカイバ106がアーカイブ最適化ウェブ・ページ及び関連するアーカイブを生成するべきであることを示すことができる。
特定の実施形態においては、アーカイブ・コスト/利益モジュール202は、アーカイブ最適化ウェブ・ページ及びアーカイブを生成するべきかどうかを判定するために、学習機能(heuristic function)を利用することができる。例えば、アーカイブ・コスト/利益モジュール202は、アーカイブ最適化ウェブ・ページ及びアーカイブを生成するための計算コストを予測することができる。計算コストが閾値を下回った場合には、アーカイブ・コスト/利益モジュール202は、アーカイバ106がアーカイブ最適化ウェブ・ページ及びアーカイブを生成するべきであることを示すことができる。代替的な実施形態においては、アーカイブ・コスト/利益モジュール202は、アーカイブ及びアーカイブ最適化ウェブ・ページに関するダウンロード時間の改善に関連する値も予測することができる。アーカイブ・コスト/利益モジュール202は、予測される計算コストと予測される利益との比が閾値を下回ることに応答して、アーカイブ最適化ウェブ・ページ及びアーカイブを生成するべきであることを示すことができる。
例えば、アーカイブ・コスト/利益モジュール202は、生成されるアーカイブの数、ウェブ・ページ内のアーカイブ可能オブジェクトの数、及びウェブ・ページのサイズを含む入力を用いたモデルに基づいて、コストの値を導出することができる。アーカイブ・コスト/利益モジュール202は、修正されていないウェブ・ページを配信するのに必要な時間に対して、アーカイブを用いてウェブ・ページを配信する場合の時間の低減を推定する利益の値をさらに導出することができる。利益の値は、生成されるアーカイブの数、ウェブ・ページ内のアーカイブ可能オブジェクトの数、及びウェブ・ページのサイズを含む入力を用いて、モデル化することができる。この例においては、アーカイブ・コスト/利益モジュール202は、コストの値と利益の値との間の比を生成する。比についての閾値は、任意に選択してもよいし、他のテスト及びモデルに基づいて予め算出してもよく、閾値は、アーカイブ最適化ウェブ・ページを生成するべきか生成するべきでないかを定める。
1つの実施形態においては、ウェブ・ページについての要求に応答して生成されなければならないアーカイブ最適化ウェブ・ページの場合と、非同期的に生成されるアーカイブ最適化ウェブ・ページの場合とで、アーカイブ・コスト/利益モジュール202による判定が異なることがある。例えば、アーカイブ・コスト/利益モジュール202は、ウェブ・ホスト102の負荷が軽い時間の間に静的なウェブ・ページを評価し、そのウェブ・ページについてアーカイブを生成するべきと判断することがある。アーカイブを生成した後で、ウェブ・ページについての要求によって、非同期的に生成されたアーカイブ及びアーカイブ最適化ウェブ・ページが配信されることになる。しかしながら、アーカイブが生成される前にウェブ・ページについての要求が受信された場合には、要求したブラウザがアーカイブを待っている間にそのアーカイブを生成する必要があるため、アーカイブ・コスト/利益モジュール202は異なる結論に達することがある。ウェブ・ページについての要求に応答してアーカイブ最適化ウェブ・ページが生成されなければならないとき、又は、ウェブ・ホスト102の負荷が相対的に高いときには、アーカイブ・コスト/利益モジュール202は、同一のアーカイブ最適化ウェブ・ページを生成するにはコストがかかり過ぎると判断することもある。
選択モジュール204は、1つの実施形態においては、アーカイブに含めるために、アーカイブ最適化ウェブ・ページによって参照されるオブジェクトを選択する。選択モジュール204は、オブジェクトを個別にウェブ・クライアント112に配信せずにアーカイブに入れるべきかどうかを判定する選択基準に基づいて、オブジェクトを選択する。選択基準の一例はオブジェクトのサイズであり、より小さいサイズのオブジェクトの方が、より大きいサイズのオブジェクトに比べて、アーカイブに含めることで利益を受けられる可能性が高い。1つの実施形態においては、選択モジュール204は、閾値を下回るサイズのオブジェクトを選択することができる。例えば、閾値を3キロバイトとして、選択モジュールは、3キロバイトを下回るサイズのオブジェクトを選択することができる。
1つの実施形態においては、アーカイブ生成モジュール206は、アーカイブ最適化ウェブ・ページに関連する1つ又は複数のアーカイブを生成する。アーカイブ生成モジュール206は、選択モジュール204によって選択されたオブジェクトを用いて、1つ又は複数のアーカイブを形成する。1つ又は複数のアーカイブは、ウェブ・クライアント112がアーカイブ対応ブラウザ118の実行可能コードを実行した後で行う要求に応答して、ウェブ・クライアント112に配信される。
図3は、選択モジュール204の1つの実施形態を示す。選択モジュール204は、文書オブジェクト・モデル木走査モジュール302と、選択基準モジュール304と、アーカイブ・サイズ・モジュール306と、オブジェクト優先順位付けモジュール308と、オブジェクト優先順位付け基準モジュール310とを含むことができる。選択モジュール204は、1つ又は複数のアーカイブに含めるために、ウェブ・ページからアーカイブ可能オブジェクトを選択する。
DOM木走査モジュール302は、1つの実施形態においては、ウェブ・ページのDOM木を走査する。DOM木は、ウェブ・ページの論理構造を定める。ウェブ・ページ内のオブジェクトは、DOM木において階層構造で配列され、幾つかのオブジェクトは他のオブジェクトに依存し、全てのオブジェクトはルート・オブジェクトに依存する。DOM木走査モジュール302を用いてDOM木を走査することにより、選択モジュール204は、例えば、どのオブジェクトがウェブ・ページによって参照されるか、ウェブ・ページ内で参照されるオブジェクトのタイプ、オブジェクトのサイズ、及び、ウェブ・ページ内で参照されるオブジェクト間の相対依存度といった、ウェブ・ページ内のオブジェクトについての情報を判定する。
1つの実施形態においては、選択基準モジュール304は、オブジェクトがアーカイブ可能オブジェクトであるかどうかを判定する1つ又は複数の選択基準を含む。アーカイブ可能オブジェクトとは、アーカイブに含まれるべき(又は、含まれると判定された)オブジェクトである。ウェブ・ページ内で参照されるオブジェクトは、アーカイブ可能オブジェクトであるかどうかを判定するために、選択基準によって判断される。選択基準の例として、オブジェクトの最大サイズとオブジェクトのタイプとが挙げられる。例えば、選択基準モジュール304は、アーカイブ可能オブジェクトが3キロバイトを超えないサイズを有するべきであるという基準を含むことができる。別の基準は、アーカイブ可能オブジェクトが画像ファイルでなければならないこととすることができる。
アーカイブ・サイズ・モジュール306は、1つの実施形態においては、アーカイブのための目標サイズを決定する。アーカイブ・サイズ・モジュール306は、ウェブ・ページのサイズを決定することにより、アーカイブの目標サイズを決定することができる。ウェブ・ページのサイズは、1つの実施形態においては、ウェブ・ページ内で参照されるオブジェクトのサイズの合計を含む。別の実施形態においては、ウェブ・ページのサイズは、ウェブ・ページ内で参照されるオブジェクトのサイズの合計に加えて、ウェブ・ページのためのHTMLファイルのサイズを含む。
アーカイブ・サイズ・モジュール306は、1つの実施形態においては、アーカイブの目標サイズをウェブ・ページのサイズの割合として設定する。1つの実施形態においては、目標サイズは、ウェブ・ページのサイズの4分の1である。従来のウェブ・ブラウザの殆どは、ウェブ・サーバとの間で4つの同時接続を受け入れるように設定されている。その結果として、ウェブ・ページのサイズの4分の1より大きいアーカイブは、アーカイブを作成することによって実現される性能利益に対する見返りを逓減させる結果をもたらす。別の実施形態においては、目標サイズは、ウェブ・ページ内で参照されるオブジェクトのサイズ全体の百分率である。さらに別の実施形態においては、目標サイズは、ウェブ・ページのサイズの一部であり、この一部は、比率、百分率、又は、生成されるアーカイブがウェブ・ページのサイズより小さくなるような他の形式の尺度とすることができる。
1つの実施形態においては、オブジェクト優先順位付けモジュール308は、ウェブ・ページ内で参照されるアーカイブ可能オブジェクトについての優先順位を決定する。オブジェクトの優先順位は、オブジェクト優先順位付け基準モジュール310からのオブジェクト優先順位付け基準によって決定することができる。オブジェクト優先順位付けモジュール308によって決定される優先順位は、アーカイブ内におけるアーカイブ可能オブジェクトについての順序を定める。より高い優先順位のアーカイブ可能オブジェクトは、より低い優先順位のアーカイブ可能オブジェクトの前に順序付けられる。例えば、ウェブ・ページ内の表を定義するアーカイブ可能オブジェクトには、表の中の画像から成るアーカイブ可能オブジェクトより、高い優先順位を割り当てることができる。表を定義するアーカイブ可能オブジェクトは、画像より高い優先順位を有するので、画像の前に順序付けられる。アーカイブ可能オブジェクトを優先順位付けし、順序付けることにより、アーカイブ最適化ウェブ・ページは、アンパックされたアーカイブ可能オブジェクトをアンパックされた順に配置することによって、より効率的にレンダリングすることができる。
オブジェクト優先順位付け基準モジュール310は、1つの実施形態においては、アーカイブ最適化ウェブ・ページにおいて参照されるオブジェクトの優先順位を決定する1つ又は複数のオブジェクト優先順位付け基準を含む。オブジェクト優先順位付け基準は、アーカイブ最適化ウェブ・ページにおいて参照されるアーカイブ可能オブジェクトの特性に関連する。例えば、アーカイブから取り出されたオブジェクトは、そのオブジェクトが依存しているオブジェクトが利用可能になるまでレンダリングできないため、DOM木においてより上位のオブジェクトをDOM木においてより下位のオブジェクトの前に順序付けることで、ページのレンダリングを改善することができる。従って、1つの実施形態においては、アーカイブ可能オブジェクトのDOM木における階層レベルが、オブジェクト優先順位付け基準である。例えば、相対的に高い階層レベルを有する、即ちDOM木のルートからのステップが相対的に少ない、アーカイブ可能オブジェクトは、相対的に低い階層レベルを有する、即ちDOM木のルートからのステップが相対的に多い、アーカイブ可能オブジェクトより、高い優先順位を有するものとすることができる。結果として、より高い優先順位のアーカイブ可能オブジェクトは、より早くアンパックされてレンダリングされるようにアーカイブ内で順序付けられる。
同じ理由から、別の実施形態においては、オブジェクト優先順位付け基準は、DOM木における下位オブジェクトの数を含むものとすることができる。例えば、下位オブジェクトの数が相対的に多いアーカイブ可能オブジェクトには、下位オブジェクトの数が相対的に少ないアーカイブ可能オブジェクトより、高い優先順位を割り当てることができる。この基準の結果として、下位のアーカイブ可能オブジェクトがアーカイブから取り出される前に、予め必要なアーカイブ可能オブジェクトが利用可能となっている可能性が高くなる。
最も小さいオブジェクトがアーカイブされたときに、最大の性能の増大を実現することができる。従って、1つの実施形態においては、アーカイブ可能オブジェクトのサイズは、オブジェクト優先順位付け基準である。例えば、アーカイブ可能オブジェクトの合計サイズが、アーカイブ・サイズ・モジュール306により決定されるアーカイブ・サイズを超えた場合には、より小さいアーカイブ可能オブジェクトに、相対的に大きいアーカイブ可能オブジェクトより高い優先順位を割り当てることができる。結果として、アーカイブの性能を向上させるために、より小さいアーカイブ可能オブジェクトがアーカイブに含まれることになる。相対的に大きいアーカイブ可能オブジェクトは、サイズの制約によってアーカイブ内に配置されないことがある。
図4は、アーカイブ最適化ウェブ・ページについてのDOM木402、及び、アーカイブのための順序付けされたアーカイブ可能オブジェクト404の1つの実施形態を示す。DOM木402は、階層レベル406−410に配列された複数のオブジェクト412−422を含むことができる。DOM木402は、アーカイブ最適化ウェブ・ページにおけるオブジェクト412−422間の関係を表現するものである。レベル2 408のオブジェクトは、レベル1 406のオブジェクトに依存し、レベル3 410のオブジェクトは、レベル2 408の予め必要なオブジェクトに依存し、以下同様である。例えば、レベル3 410のオブジェクト2 416は、レベル2 408のオブジェクト1 414に依存する。
1つの実施形態においては、より低いレベルのオブジェクトは、予め必要なオブジェクトがアーカイブ最適化ウェブ・ページにおいてレンダリングされるまで、アーカイブ最適化ウェブ・ページにおいて適切にレンダリングすることができない。例えば、オブジェクト1 414は、アーカイブ最適化ウェブ・ページ内の表であり、オブジェクト2 416は、オブジェクト1 414の表の中の画像を表すことができる。オブジェクト2 416の画像は、オブジェクト1 414の表の中に存在することが定められているので、表がレンダリングされる前にアーカイブ最適化ウェブ・ページ内にレンダリングすることはできない。
こうした依存性及び他の考慮事項の結果として、選択モジュール204により選択されたアーカイブ可能オブジェクトは、オブジェクト優先順位付けモジュール308により、優先順位付けし、順序付けされたアーカイブ可能オブジェクト404として順序付けることができる。例えば、オブジェクト選択モジュール204は、オブジェクト1 414、オブジェクト3 418、オブジェクト4 420、及びオブジェクト5が選択基準の組を満たすことを判定し、これらのオブジェクトをアーカイブ可能オブジェクトとして指定することができる。オブジェクト選択モジュール204は、オブジェクト2 416が選択基準の組を満たさないこと、例えばオブジェクト2 416が閾値より大きいサイズを有することを判定することもできる。
オブジェクト選択モジュール204は、さらに、アーカイブ可能オブジェクトを順序づけして、順序付けされたアーカイブ可能オブジェクト404にすることができる。オブジェクト優先順位付けモジュール308は、オブジェクト優先順位付け基準に従って、アーカイブ可能オブジェクトを順序付けることができる。例えば、オブジェクト1 414及びオブジェクト4 420は、DOM木において相対的に高いレベル2 408の位置にあるので、高い優先順位を割り当てることができる。オブジェクト1 414は、オブジェクト4 420より多くの依存オブジェクトを有するので、オブジェクト4 420より高い優先順位を割り当てることができる。結果として、オブジェクト1 414は、順序付けされたアーカイブ可能オブジェクト404の中で、オブジェクト4 420の前に順序付けることができる。
図5は、アーカイブ生成モジュール206の1つの実施形態を示す。アーカイブ生成モジュール206は、オブジェクト順序付けモジュール502と、アーカイブ・ファイル圧縮モジュール504と、圧縮学習モジュール506とを含むことができる。アーカイブ生成モジュール206は、選択モジュール204により選択されたアーカイブ可能オブジェクトを用いて、アーカイブ・ファイルを生成する。
オブジェクト順序付けモジュール502は、1つの実施形態においては、アーカイブ可能オブジェクトの優先順位に従ってアーカイブ可能オブジェクトを順序付ける。アーカイブ可能オブジェクトの優先順位は、オブジェクト優先順位付け基準に従ってオブジェクト優先順位付けモジュール308によって決定することができる。オブジェクト順序付けモジュール502は、生成されたアーカイブにおいて相対的に高い優先順位のアーカイブ可能オブジェクトが相対的に低い優先順位のアーカイブ可能オブジェクトの前に順序付けられるように、アーカイブ可能オブジェクトを順序付ける。
1つの実施形態においては、アーカイブ・ファイル圧縮モジュール504は、生成されたアーカイブを圧縮する。アーカイブ・ファイル圧縮モジュール504は、いずれかのデータ圧縮方法を用いて、生成されたアーカイブを圧縮することができる。アーカイブを圧縮するのに用いることができるデータ圧縮方法の例として、gzip、zip、LZX、算術符号化などが挙げられる。
アーカイブ生成モジュール206は、生成されたアーカイブを圧縮すべきかどうかを判定するために、圧縮学習モジュール506に依存することがある。特定の状況下では、アーカイブを圧縮することが非効率となることもある。例えば、jpegファイルなどの多くの画像ファイルは、予め圧縮されている。アーカイブを構成するアーカイブ可能オブジェクトが、予め圧縮された画像ファイルを高い割合で含む場合には、さらに圧縮器を用いてアーカイブを処理することは、計算コストを生じさせるが、アーカイブのサイズの点ではそれほど大きな改善はもたらさない。
生成されたアーカイブを圧縮しなくてもよい状況の別の例は、動的なウェブ・ページのアーカイブ生成の際に生じる。動的なアーカイブ最適化ウェブ・ページのためにアーカイブを生成するときに、ウェブ・ホスト102のサーバ負荷が高くなることがある。要求しているウェブ・クライアント112が待つ間にアーカイブを圧縮するのに要する計算コスト及び時間は、アーカイブのサイズの低減を上回ることがある。
圧縮のコストがアーカイブのサイズの低減による利益を上回るときに、生成されたアーカイブを圧縮しようとするのを避けるために、圧縮学習モジュール506は、1つの実施形態においては、アーカイブを圧縮すべきかどうかを判定する。例えば、圧縮学習モジュール506は、アーカイブの中の画像の割合を求めることができる。アーカイブの中の画像の割合が閾値レベルを下回るときは、圧縮学習モジュール506は、アーカイブを圧縮すべきであると判断することができる。
図6は、アーカイブ対応ブラウザ118の1つの実施形態を示す。アーカイブ対応ブラウザ118は、ブラウザ・パラメータ送信モジュール602と、アーカイブ応答受信モジュール604と、履歴送信モジュール606と、接続モジュール608と、アーカイブ取得モジュール610と、アーカイブ・アンパック・モジュール612と、ページ・レンダリング・モジュール614とを含むことができる。アーカイブ対応ブラウザ118は、アーカイブを用いるアーカイブ最適化ウェブ・ページを取得し、レンダリングする。
アーカイブ対応ブラウザ118によって取得され、レンダリングされるアーカイブ最適化ウェブ・ページは、1つの実施形態においては、ウェブ・ページの最初のインスタンスとすることができる。例えば、アーカイブ最適化ウェブ・ページは、ウェブ・クライアント112からの要求に応答して動的に生成することができる。別の実施形態においては、アーカイブ対応ブラウザ118によって取得され、レンダリングされるアーカイブ最適化ウェブ・ページは、ウェブ設計者によるウェブ・ページの設計に応じて生成することができる。この例においては、アーカイバ106は、ウェブ設計ソフトウェアにリンクさせるか、又は、それと統合することができる。
別の実施形態においては、アーカイブ対応ブラウザ118によって取得され、レンダリングされるウェブ・ページは、アーカイブへの参照を含まない既存のウェブ・ページとすることができる。この実施形態においては、既存のウェブ・ページは、アーカイブへの参照を含むように書き直される。例えば、アーカイブ生成モジュール206は、静的なウェブ・ページにアクセスし、アーカイブ可能オブジェクトと、関連するアーカイブ最適化ウェブ・ページとを用いて、アーカイブを生成することができる。別の例においては、アーカイブ生成モジュール206は、アーカイブへの参照を含まない動的に生成されるウェブ・ページに対して作用することができる。この例においては、動的に生成されるウェブ・ページは、アーカイブからのアーカイブ可能オブジェクトを用いてレンダリングすることができるアーカイブ最適化ウェブ・ページを生成するように書き直される。
アーカイブ最適化ウェブ・ページは、アーカイブ内のアーカイブ可能オブジェクトにリンクされたHTMLタグを含むことができる。例えば、アーカイブ名が「html.archive」であり、アーカイブ内のアーカイブ可能オブジェクト名が「obj1」であれば、HTMLタグにおけるuniform resource identifier(URI)は、「html.archive/obj1」とすることができる。
ブラウザ・パラメータ送信モジュール602は、1つの実施形態においては、アーカイブ対応ブラウザ118の能力に関する1つ又は複数のブラウザ・パラメータをウェブ・サーバ104に送信する。1つ又は複数のブラウザ・パラメータは、インジケータを含むことができる。1つの実施形態においては、ブラウザ・パラメータ送信モジュール602は、アーカイブ対応ブラウザ118がアーカイブを含むアーカイブ最適化ウェブ・ページを受信及び/又はレンダリングできることを示すインジケータを含むブラウザ・パラメータを送信する。例えば、ブラウザ・パラメータ送信モジュール602は、アーカイブ対応ブラウザ118がアーカイブを用いてページをレンダリングできることを明示的に示すインジケータを送信することができる。別の例においては、ブラウザ・パラメータ送信モジュール602は、アーカイブ対応ブラウザ118のバージョン番号を送信することができる。ウェブ・サーバ104は、このバージョン番号を、アーカイブを含むアーカイブ最適化ウェブ・ページをレンダリングできることが知られているブラウザのリストと比較し、その比較の結果としてアーカイブ対応ブラウザの能力を判断することができる。
別の実施形態においては、ブラウザ・パラメータ送信モジュール602は、アーカイブ対応ブラウザ118が利用可能な接続の数を示すインジケータを含むブラウザ・パラメータを送る。例えば、1つの実施形態においては、アーカイブ対応ブラウザ118は、ホスト・コンピュータ及び/又はオペレーティング・システムによって決まる数の利用可能な接続を有する。1つの例においては、アーカイブ対応ブラウザ118は、最大で4つの接続を許されることがある。ブラウザ・パラメータ送信モジュール602は、アーカイブ対応ブラウザ118が利用可能な4つの接続を有することを示すブラウザ・パラメータをウェブ・サーバ104に送ることができる。
1つの実施形態においては、アーカイブ応答受信モジュール604は、ウェブ・サーバ104からアーカイブ応答パラメータを受信する。アーカイブ応答パラメータは、1つの実施形態においては、インジケータを含む。インジケータは、ウェブ・サーバ104がアーカイブを配信できることを示すものとすることができる。1つの実施形態においては、ウェブ・サーバ104は、アーカイブ対応ブラウザ118がアーカイブを受信することができるという判断に応答して、アーカイブ応答パラメータを送る。別の実施形態においては、ウェブ・サーバ104は、ウェブ・ページを要求するウェブ・ブラウザのタイプにかかわらず、アーカイブ応答パラメータを送る。
履歴送信モジュール606は、1つの実施形態においては、アーカイブ対応ブラウザ118の履歴をウェブ・サーバ104に送信する。1つの実施形態においては、履歴は、ウェブ・サーバ104及び/又は他のウェブ・サーバとの以前のトランザクションからアーカイブ対応ブラウザ118によって保持されたオブジェクトのリストを含む。保持されたオブジェクトは、メモリなどの揮発性ストレージ・キャッシュに格納しても、ハード・ディスク・ドライブなどの不揮発性ストレージ・キャッシュに格納してもよい。1つの実施形態においては、履歴送信モジュール606は、ウェブ・サーバ104がアーカイブを配信できることを示すアーカイブ応答パラメータの受信に応答して、履歴を送信する。
ウェブ・サーバ104は、1つの実施形態においては、履歴を用いて、アーカイブと、要求されたウェブ・ページについてキャッシュされたバージョンのオブジェクトを用いるアーカイブ最適化ウェブ・ページとを生成する。例えば、履歴は、要求されたアーカイブ最適化ウェブ・ページ内の幾つかのオブジェクトがアーカイブ対応ブラウザ118のキャッシュに既に存在することを示すことができる。アーカイバ106は、キャッシュされたオブジェクトを含まないアーカイブを生成することができる。ウェブ・サーバ104は、アーカイブ対応ブラウザ118のキャッシュ内のオブジェクトを用いてアーカイブ最適化ウェブ・ページをレンダリングするようにアーカイブ対応ブラウザ118に指示するアーカイブ最適化ウェブ・ページを送ることができる。
接続モジュール608は、1つの実施形態においては、アーカイブ対応ブラウザ118とウェブ・サーバ104との間に1つ又は複数の接続を開く。1つの実施形態においては、接続モジュール608は、アーカイブ対応ブラウザ118が利用可能な接続の数と等しい数の接続を開く。別の実施形態においては、接続モジュール608は、ウェブ・サーバ104が利用可能な接続の数と等しい数の接続を開く。別の実施形態においては、接続モジュール608は、ウェブ・サーバ104とアーカイブ対応ブラウザ118との間で取り決められた数の接続を開く。
例えば、要求されたアーカイブ最適化ウェブ・ページは、ウェブ・サーバ104及びアーカイブ対応ブラウザ118が利用可能な接続の数より少ない数のアーカイブを含むことができる。この例では、接続モジュール608は、アーカイブの数と等しい数の接続を確立することができる。
アーカイブ取得モジュール610は、1つの実施形態においては、1つの利用可能な接続を通じてアーカイブを取得する。アーカイブ取得モジュール610は、ウェブ・クライアント112に、アーカイブ最適化ウェブ・ページのためのアーカイブをウェブ・ホスト102から取得させることができる。ウェブ・クライアント112は、取得したアーカイブをクライアント装置の一時メモリ又は永続メモリに格納する。
1つの実施形態においては、アーカイブ・アンパック・モジュール612は、アーカイブをアンパックする。アーカイブ・アンパック・モジュール612は、ウェブ・クライアント112に、取得したアーカイブの位置を特定させてアンパックさせる命令を含むことができる。アーカイブをアンパックすることは、1つの実施形態においては、アーカイブからアーカイブ可能オブジェクトを抽出することを含む。アーカイブ・アンパック・モジュール612は、アーカイブ可能オブジェクトを一時メモリ又は永続メモリに格納する。
アーカイブ可能オブジェクトは順番に抽出することができる、即ち、アーカイブ可能オブジェクトは、オブジェクト優先順位付けモジュール308によって決定された順序で、又は、オブジェクト順序付けモジュール502によって決定された順序で、抽出される。1つの実施形態においては、アーカイブは、アーカイブ生成モジュール206によって圧縮されている。アーカイブ・アンパック・モジュール612は、アーカイブ又はアーカイブ内のオブジェクトを解凍することができる。
1つの実施形態においては、ページ・レンダリング・モジュール614は、アーカイブから抽出されたアーカイブ可能オブジェクトを用いて、アーカイブ最適化ウェブ・ページをレンダリングする。ページ・レンダリング・モジュール614は、アーカイブ対応ブラウザ118に、アーカイブから抽出されたアーカイブ可能オブジェクトを用いてアーカイブ最適化ウェブ・ページをレンダリングさせる命令を含むことができる。
図7は、本発明によるウェブ・サーバ104の1つの実施形態を示す。ウェブ・サーバ104は、ブラウザ・パラメータ受信モジュール702と、アーカイブ応答送信モジュール704と、履歴受信モジュール706と、接続モジュール708と、アーカイブ配信モジュール710とを含むことができる。ウェブ・サーバ104は、ウェブ・ページについての要求を受信し、1つ又は複数のアーカイブを用いるウェブ・ページを配信する。
ブラウザ・パラメータ受信モジュール702は、1つの実施形態においては、アーカイブ対応ブラウザ118から、アーカイブ対応ブラウザ118の能力を示すブラウザ・パラメータを受信する。ブラウザ・パラメータ受信モジュール702によって受信されるブラウザ・パラメータの性質は、図6に関連して開示されたブラウザ・パラメータ送信モジュール602に関して説明されたブラウザ・パラメータと実質的に同一である。ブラウザ・パラメータの受信は、アーカイブ対応ブラウザ118がアーカイブを受信できることを示すこと、及び/又は、アーカイブ対応ブラウザ118が利用可能な接続の数を示すことができる。
1つの実施形態においては、アーカイブ応答送信モジュール704は、アーカイブ対応ブラウザ118にアーカイブ応答を送信する。アーカイブ応答パラメータは、ウェブ・サーバ104がアーカイブを配信できることを示すインジケータを含むことができる。1つの実施形態においては、アーカイブ応答パラメータは、ウェブ・サーバ104が利用可能な接続の数を示すインジケータを含むことができる。1つの実施形態においては、ウェブ・サーバ104は、アーカイブ対応ブラウザ118がアーカイブを受信できるという判断に応答して、アーカイブ応答パラメータを送る。別の実施形態においては、ウェブ・サーバ104は、ウェブ・ページを要求するウェブ・ブラウザのタイプにかかわらず、アーカイブ応答パラメータを送る。
履歴受信モジュール706は、1つの実施形態においては、アーカイブ対応ブラウザ118から履歴を受信する。1つの実施形態においては、履歴は、実質的に図6に関連して上述された通りのものである。ウェブ・サーバ104は、履歴を用いて、アーカイブ対応ブラウザ118にどのオブジェクトを送信しなければならないか、及び、アーカイブ対応ブラウザ118のキャッシュからどのオブジェクトを参照することができるかを判定することができる。例えば、アーカイバ106は、履歴を用いて、履歴(又はキャッシュ)中の1つ又は複数のオブジェクトを除外した1つ又は複数のアーカイブを生成し、それにより、アーカイブ対応ブラウザ118に送信されるオブジェクトの合計サイズを低減し、ウェブ・ページのロード時間を低減することができる。
1つの実施形態においては、接続モジュール708は、アーカイブ対応ブラウザ118とウェブ・サーバ104との間に1つ又は複数の接続を開く。1つの実施形態においては、接続モジュール708は、アーカイブ対応ブラウザ118が利用可能な接続の数に等しい数の接続を開く。別の実施形態においては、接続モジュール708は、ウェブ・サーバ104が利用可能な接続の数と等しい数の接続を開く。別の実施形態においては、接続モジュール708は、ウェブ・サーバ104とアーカイブ対応ブラウザ118との間で取り決められた数の接続を開く。例えば、要求されるウェブ・ページは、ウェブ・サーバ104及びアーカイブ対応ブラウザ118が利用可能な接続の数より少ない数のアーカイブを含むことができる。この例では、接続モジュール708は、アーカイブの数と等しい数の接続を確立することができる。
アーカイブ配信モジュール710は、1つの実施形態においては、1つの利用可能な接続を通じてアーカイブを送る。アーカイブ配信モジュール710は、ウェブ・サーバ104に、アーカイブ最適化ウェブ・ページのためのアーカイブをアーカイブ対応ブラウザ118に送らせることができる。
以降の概略的なフローチャート図は、一般に、論理フローチャート図として示される。従って、図示される順序及び符号が付いたステップは、提示される方法の1つの実施形態を示すものである。図示される方法の1つ又は複数のステップ、又はその一部に対し、機能、論理、又は効果の点で等価な他のステップ及び方法を考えることができる。さらに、使用される形式及び記号は、本方法の論理ステップを説明するために与えられており、本方法の範囲を限定するものではないと理解される。フローチャート図においては種々の矢印タイプ及び線種が使用されることがあるが、これらは対応する方法の範囲を限定するものではないと理解される。実際に、幾つかの矢印又は他のコネクタが、本方法の論理フローのみを示すために用いられることがある。例えば、矢印は、示される方法の列挙されたステップ間の不特定の持続時間にわたる待ち時間又は監視時間を示すことがある。さらに、特定の方法が行われる順序は、示される対応するステップの順序を厳密に遵守してもよいし、そうでなくともよい。
図8は、ウェブ・ページのダウンロード時間を改善するための方法800における種々のステップを示すフローチャート図である。方法800は、特定の実施形態においては、図1−図7のシステム及び装置において用いられる方法であり、これらの図面を参照して説明されることになる。しかしながら方法800はまた、これらとは独立に実施することもでき、これらの図面を参照して上述された実施形態に特に限定されることを意図されてはいない。
図8に示されるように、方法800は、ウェブ・ページのためのアーカイブを生成することに関連する計算コストを算出する(802)。1つの実施形態においては、計算コストは、アーカイブと、アーカイブ内のアーカイブ可能オブジェクトにアクセスするように構成されたアーカイブ最適化ウェブ・ページと、を生成するのに必要なリソースの尺度である。代替的な実施形態においては、算出される(802)計算コストは、アーカイブ及びアーカイブ最適化ウェブ・ページを生成するのに必要なリソースの尺度と、アーカイブを用いることによって実現されるウェブ・ページのダウンロード時間の改善の尺度との間の比とすることができる。別の実施形態においては、算出される(802)計算コストは、例えば、ウェブ・ホスト102の負荷、ウェブ・ページが既にウェブ・クライアント112によって要求されているか否か、及び、ウェブ・ページが静的なウェブ・ページであるか否か、といったパラメータに応じて、変わる場合がある。
次いで、1つの実施形態においては、アーカイブ・コスト/利益モジュール202は、ウェブ・ページのためのアーカイブを生成することが価値があるかどうかを判定する(804)。判定(804)は、算出された(802)計算コスト及び閾値に基づいて行うことができる。例えば、アーカイブ・コスト/利益モジュール202は、性能利益に対する計算コストの比が閾値を下回るときにはアーカイブを生成することは価値があると判定することができる。
方法800は、判定(804)が否定的である場合には、通常のウェブ・ページを選択する(806)。通常のウェブ・ページは、アーカイブへの参照を含まないウェブ・ページである。1つの実施形態においては、方法800は、通常のウェブ・ページを生成することができる。代替的な実施形態においては、方法800は、既存の通常のウェブ・ページを選択する(806)ことができる。
アーカイブ・コスト/利益モジュール202が、アーカイブが生成されるべきであると判定した(804)場合には、次に、選択モジュール204は、ウェブ・ページのDOM木表現を走査する(808)。DOM木は、どのオブジェクトがウェブ・ページに存在するかということと、オブジェクトのサイズ、オブジェクトの階層レベル、及びオブジェクト間の依存度といった、オブジェクトに関する他のパラメータとを判断するために走査される(808)。
次いで、選択モジュール204は、オブジェクトをアーカイブ可能オブジェクトとして選択する(810)。アーカイブ可能オブジェクトは、オブジェクトのサイズ又はタイプといったオブジェクト選択基準を満たすことに応答して選択される(810)。例えば、選択モジュール204は、オブジェクトのサイズが3キロバイトより小さいことに応答して、オブジェクトをアーカイブ可能オブジェクトとして選択する(810)ことができる。
オブジェクト優先順位付けモジュール308は、選択モジュール204によって選択された(810)アーカイブ可能オブジェクトに優先順位を付ける(812)。アーカイブ可能オブジェクトの優先順位付け(812)は、DOM木における相対的な深さ、依存オブジェクトの数などといった、オブジェクト優先順位付け基準に基づいて行うことができる。例えば、あるオブジェクトは、DOM木においてより多くの依存オブジェクトを有するため、別のオブジェクトより高い優先順位をもつことができる。
次いで、アーカイブ生成モジュール206は、アーカイブ可能オブジェクトを用いてアーカイブを生成する(814)。生成された(814)アーカイブ内のアーカイブ可能オブジェクトは、優先順位付け(812)の際に割り当てられたオブジェクトの優先順位に従って、生成されたアーカイブ内で順序付けることができる。結果として、より高い優先順位のアーカイブ可能オブジェクトは、アーカイブ内において、より低い優先順位のオブジェクトの前に現れることができる。
1つの実施形態においては、圧縮学習モジュール506は、圧縮がアーカイブにとって価値があるかどうかを判定することができる(815)。図5に関連して説明されたように、アーカイブ内のファイルのタイプ、アーカイブ内のファイルの数、アーカイブのサイズ、及び他の要因が、判定(815)に影響を与えることがある。方法800は、圧縮がアーカイブにとって価値がないという判定(815)に応答して、圧縮されないアーカイブを選択する(818)。
1つの実施形態においては、アーカイブ圧縮モジュール504は、圧縮がアーカイブにとって価値があるという判定(815)に応答して、生成されたアーカイブを圧縮する(816)。アーカイブの圧縮(816)には、gzip、zip、LZX、算術符号化などといったいずれかの圧縮方法を用いることができる。アーカイブの圧縮(816)は、ファイルが圧縮によって利益を受けるという判定に応答して行うことができる。例えば、方法800は、アーカイブ可能オブジェクトが既に圧縮された画像ファイルを多く含むと判断し、従ってアーカイブを圧縮すべきではないと判定することができる。
図9は、アーカイブ対応ブラウザ118におけるウェブ・ページのダウンロード時間を改善するための方法900の種々のステップを示すフローチャート図である。方法900は、特定の実施形態においては、図1−図7のシステム及び装置において用いられる方法であり、これらの図面を参照して説明されることになる。しかしながら方法900はまた、これらとは独立に実施することもでき、これらの図面を参照して上述された実施形態に特に限定されることを意図されてはいない。
図9に示されるように、方法900は、アーカイブ対応ブラウザ118が利用可能な接続の数を決定する(902)。利用可能な接続の数は、アーカイブ対応ブラウザ118、ウェブ・クライアント112、ネットワーク110、又は他の考慮事項に応じて決められる。
アーカイブ対応ブラウザ118は、ウェブ・ページを要求する(904)。ウェブ・ページを要求すること(904)は、1つの実施形態においては、ネットワーク110を介してウェブ・ホスト102に要求を送ることを含む。例えば、アーカイブ対応ブラウザ118は、ウェブ・ページを要求する(904)ために、TCP/IPネットワークを介してHTTP要求を送ることができる。
ブラウザ・パラメータ送信モジュール602は、1つの実施形態においては、ブラウザ・パラメータをウェブ・サーバ104に送信する(906)。ウェブ・サーバ104に送られた(906)ブラウザ・パラメータは、アーカイブ対応ブラウザ118がアーカイブを受信できることを示す1つ又は複数のインジケータ、アーカイブ対応ブラウザ118が利用可能な接続の数、又は他のインジケータを含むことができる。
次に、アーカイブ応答受信モジュール604は、アーカイブ応答パラメータを受信する(908)。アーカイブ応答パラメータは、ウェブ・サーバ104がアーカイブを配信できることを示すことができる。アーカイブ応答パラメータは、ウェブ・サーバ104が利用可能な接続の数、又は他のインジケータをさらに示すことができる。
次いで、アーカイブ対応ブラウザ118は、アーカイブがサポートされているかどうかを判定する(910)。1つの実施形態においては、判定(910)は、受信した(908)アーカイブ応答パラメータに応答して行われる。アーカイブ対応ブラウザ118が、アーカイブがサポートされていないと判定した(910)場合には、方法900は、アーカイブを持たない通常のウェブ・ページを用いる(912)。アーカイブ対応ブラウザ118が、アーカイブがサポートされていると判定した(910)場合には、方法900は続行する。
接続モジュール608は、ウェブ・サーバ104との間に1つ又は複数の接続を確立する(914)。1つの実施形態においては、確立される(914)接続の数は、図6及び図7に関して上述されたように、ブラウザ・パラメータ、アーカイブ応答パラメータ、又は他の考慮事項に応じたものである。確立された(914)接続は、アーカイブ、ウェブ・ページ、履歴情報、パラメータ、又は他のデータを送信するために用いられる。
履歴送信モジュール606は、アーカイブ対応ブラウザ118の履歴情報をウェブ・サーバ104に送信する(916)ことができる。1つの実施形態においては、送信された(916)履歴は、ウェブ・サーバ104及び/又は他のウェブ・サーバとの以前のトランザクションからアーカイブ対応ブラウザによって保持されたオブジェクトのリストを含む。1つの実施形態においては、履歴送信モジュール606は、ウェブ・サーバ104がアーカイブを配信できることを示すアーカイブ応答パラメータの受信に応答して、履歴を送信する(916)。
アーカイブ取得モジュール610は、ウェブ・サーバ104からアーカイブを受信する(918)。受信されたアーカイブは、上述のように、1つ又は複数のアーカイブ可能オブジェクトを含むことができる。1つの実施形態においては、アーカイブ・ファイルは、ウェブ・ページについての要求904に応答して受信される(918)。
アーカイブ・アンパック・モジュール612は、1つの実施形態においては、配信されたアーカイブが圧縮されていることに応答して、アーカイブを解凍する(919)ことができる。アーカイブを解凍する(919)ことは、圧縮モジュール504によって用いられた圧縮方法を用いてアーカイブを解凍することを含むことができる。
1つの実施形態においては、ページ・レンダリング・モジュール614は、受信された(918)アーカイブから抽出されたアーカイブ可能オブジェクトを用いて、ウェブ・ページをレンダリングする(920)。ページ・レンダリング・モジュール614は、アーカイブから抽出されたアーカイブ可能オブジェクトを用いてアーカイブ対応ブラウザ118にアーカイブ最適化ウェブ・ページをレンダリングさせる(920)ソフトウェア命令を含むことができる。アーカイブ最適化ウェブ・ページをレンダリングすること(920)は、アーカイブ最適化ウェブ・ページについて定められたディスプレイ上の位置にアーカイブ可能オブジェクトを表示することを含むことができる。
図10は、ウェブ・サーバ104におけるウェブ・ページのダウンロード時間を改善するための方法1000の種々のステップを示すフローチャート図である。方法1000は、特定の実施形態においては、図1−図7のシステム及び装置において用いられる方法であり、これらの図面を参照して説明されることになる。しかしながら方法1000はまた、これらとは独立に実施することもでき、これらの図面を参照して上述された実施形態に特に限定されることを意図されてはいない。
図10に示されるように、方法1000は、ブラウザ・パラメータ受信モジュール702によってブラウザ・パラメータを受信する(1002)ことを含む。ブラウザ・パラメータは、アーカイブ対応ブラウザ118から受信する(1002)ことができ、ブラウザの能力を示す1つ又は複数のインジケータを含むことができる。インジケータは、アーカイブ対応ウェブ・ブラウザ118がアーカイブを用いてアーカイブ最適化ウェブ・ページをレンダリングできることを示すことができる。インジケータは、アーカイブ対応ブラウザ118が利用可能な接続の数を示すこともできる。
ウェブ・サーバ104は、1つ又は複数のアーカイブを含むアーカイブ最適化ウェブ・ページを配信するのに用いる接続の数を決定する(1004)ことができる。1つの実施形態においては、ウェブ・サーバ104は、アーカイブ対応ブラウザ118が利用可能な接続の数、ウェブ・サーバ104が利用可能な接続の数、性能面の考慮事項などを示すブラウザ・パラメータのうちの1つ又は複数に応じて、接続の数を決定する(1004)ことができる。
アーカイバ106は、アーカイブ可能オブジェクトの選択を最適化する(1006)ことができる。1つの実施形態においては、アーカイバ106は、アーカイブ可能オブジェクトのサイズ、DOM木におけるアーカイブ可能オブジェクトの相対的な高さ、アーカイブ可能オブジェクト間の依存度、生成されているアーカイブの数、又は他の考慮事項のうちの1つ又は複数に応じて、選択を最適化する(1006)。1つの実施形態においては、アーカイブ可能オブジェクトは、図2−図5に関連して説明されたように最適化される(1006)。
アーカイバ106は、1つ又は複数のアーカイブを生成する(1008)ことができる。1つ又は複数のアーカイブは、アーカイブ可能オブジェクトの最適化された(1006)選択を用いて生成する(1008)ことができる。生成されるアーカイブの数は、以前に決定された(1004)接続の数に関係させてもよい。別の実施形態においては、生成される(1008)アーカイブの数は、用いる接続の数の決定(1004)に影響を与えることがある。
アーカイブ配信モジュール710は、方法1000の1つの実施形態においては、1つ又は複数のアーカイブをアーカイブ対応ブラウザ118に配信する(1010)。1つの実施形態においては、アーカイブ配信モジュール710は、TCP/IPなどのネットワーク110を用いて、1つ又は複数のアーカイブを配信する(1010)。
本発明は、その趣旨及び本質的な特徴から逸脱することなく、他の特定の形態で具体化することができる。説明された実施形態は、全ての点において、単なる例であり、制限的なものとはみなされない。従って、本発明の範囲は、上記の説明ではなく、特許請求の範囲により示される。特許請求の範囲の均等物の意味及び範囲内にある全ての変更は、その範囲に含まれるべきである。