(57)【特許請求の範囲】
【請求項１】
帯域幅依存のファイル転送のための方法であって、
クライアントに現在の帯域幅の値に関するウェブページのコードを送信することと、
前記クライアントから、サーバーでファイルを読み込むための要求を受信することであって、前記ファイルは複数の品質レベルで送信される、ことと、
前記現在の帯域幅の値に適切な前記複数の品質レベルのうちの１つを選択することと、
前記サーバーから前記クライアントに前記選択された品質レベルで前記要求されたファイルを送信することと、を含み、
前記現在の帯域幅の値に関する前記ウェブページのコードが、前記複数の品質レベルと前記現在の帯域幅の様々な値との間の対応関係を含む、
前記方法。
【請求項２】
前記現在の帯域幅の値に関する前記ウェブページのコードが、前記要求されたファイルの読み込み速度を測定することによって、前記現在の帯域幅の値を更新するための前記クライアントに対する指示をさらに含む、請求項１に記載の方法。
【請求項３】
前記要求されたファイルの複数のバージョンを提供することであって、各バージョンは前記複数の品質レベルのうちの１つを表すことをさらに含み、
前記サーバーから前記クライアントに前記選択された品質レベルで前記要求されたファイルを前記送信することが、前記複数の品質レベルの前記選択されたうちの１つを表す前記複数のバージョンのうちの１つを送信することを含む、請求項１に記載の方法。
【請求項４】
前記要求されたファイルの前記複数のバージョンを前記提供することは、
前記要求されたファイルを前処理して、前記要求されたファイルの前記複数のバージョンを取得することと、
前記要求されたファイルの前記複数のバージョンを格納することと
を含む、請求項３に記載の方法。
【請求項５】
前記要求されたファイルの前記複数のバージョンを前記提供することは、
前記クライアントから前記ファイルを読み込むための前記要求を受信すると、前記要求されたファイルを処理して、前記要求されたファイルの前記複数のバージョンを取得することを含む、請求項３に記載の方法。
【請求項６】
前記現在の帯域幅の値に適切な前記要求されたファイルの前記複数の品質レベルのうちの１つを前記選択することは、
前記クライアントで、前記現在の帯域幅の値に従って、前記複数の品質レベルのうちの１つを決定することと、
前記ファイルを読み込むための前記要求で前記決定された品質レベルを指定することと
を含む、請求項１に記載の方法。
【請求項７】
前記現在の帯域幅の値に適切な前記要求されたファイルの前記複数の品質レベルのうちの１つを前記選択することは、
帯域幅の値の様々な範囲を前記複数の品質レベルと関連付ける帯域幅品質のテーブルを事前に設定することと、
前記帯域幅品質のテーブルに従い、前記現在の帯域幅の値に対応する前記要求されたファイルの前記複数の品質レベルのうちの１つを選択することと
を含む、請求項１に記載の方法。
【請求項８】
前記帯域幅品質のテーブルが前記サーバーで利用可能であり、前記現在の帯域幅の値に適切な前記要求されたファイルの前記複数の品質レベルのうちの１つを前記選択することは、前記サーバーによって行われる、請求項７に記載の方法。
【請求項９】
前記帯域幅品質のテーブルが前記クライアントで利用可能であり、前記現在の帯域幅の値に適切な前記要求されたファイルの前記複数の品質レベルのうちの１つを前記選択することは、前記クライアントによって行われる、請求項７に記載の方法。
【請求項１０】
前記ファイルを読み込むための前記要求が、前記現在の帯域幅の値に適切な前記複数の品質レベルのうちの前記１つを指定する、請求項１に記載の方法。
【請求項１１】
前記ファイルを読み込むための前記要求が、前記現在の帯域幅の値を指定する、請求項１に記載の方法。
【請求項１２】
前記現在の帯域幅の値が、前記クライアントにより以前のファイルの読み込み速度から計算された帯域幅の値を含む、請求項１に記載の方法。
【請求項１３】
前記以前のファイルが、長さのピクセル数、高さのピクセル数及び撮像係数を乗じて計算されたファイルサイズを有する画像ファイルであり、前記以前のファイルの前記読み込み速度が、前記画像ファイルを受信するために要した時間で前記ファイルサイズを除して計算されたものである、請求項１２に記載の方法。
【請求項１４】
前記クライアントによって読み込まれた前記以前のファイルが、前記クライアントによって要求されたウェブページの一部である、請求項１２に記載の方法。
【請求項１５】
前記現在の帯域幅の値が、前記クライアントにより複数の以前のファイルの読み込み速度の平均から計算された帯域幅の値を含む、請求項１に記載の方法。
【請求項１６】
帯域幅依存のファイル転送のための方法であって、
クライアントに現在の帯域幅の値に関するウェブページのコードが送信された後に、前記クライアントから、サーバーでファイルを読み込むための要求を受信することであって、前記ファイルは複数の品質レベルで送信され、前記現在の帯域幅の値に関する前記ウェブページのコードが、前記複数の品質レベルと前記現在の帯域幅の様々な値との間の対応関係を含む、ことと、
前記現在の帯域幅の値に適切な前記要求されたファイルの前記複数の品質レベルのうちの１つを選択することと、
前記サーバーから前記クライアントに前記選択された品質レベルで前記要求されたファイルを送信することと、
少なくとも部分的に、前記要求されたファイルを受信するために使用される時間の長さに従って、前記現在の帯域幅の値を更新するように前記クライアントに指示することと
を含む、前記方法。
【請求項１７】
前記要求されたファイルの複数のバージョンを提供することであって、各バージョンは前記複数の品質レベルのうちの１つを表すことをさらに含み、
前記サーバーから前記クライアントに前記選択された品質レベルで前記要求されたファイルを前記送信することが、前記複数の品質レベルの前記選択されたうちの１つを表す前記複数のバージョンのうちの１つを送信することを含む、請求項１６に記載の方法。
【請求項１８】
前記現在の帯域幅の値に適切な前記要求されたファイルの前記複数の品質レベルのうちの１つを前記選択することは、
帯域幅の値の様々な範囲を前記複数の品質レベルと関連付ける帯域幅品質のテーブルを事前に設定することと、
前記帯域幅品質のテーブルに従い、前記現在の帯域幅の値に対応する前記要求されたファイルの前記複数の品質レベルのうちの１つを選択することと
を含む、請求項１６に記載の方法。
【請求項１９】
帯域幅依存のファイル転送のためのコンピューティングシステムであって、プロセッサー、コンピューター可読メモリー、及び記憶媒体、及び入出力デバイスを有するコンピューティングデバイスを備え、前記コンピューティングデバイスが、
クライアントに現在の帯域幅の値に関するウェブページのコードを送信することと、
前記クライアントから、サーバーでファイルを読み込むための要求を受信することであって、前記ファイルは様々な品質レベルで送信される、ことと、
前記現在の帯域幅の値に適切な前記要求されたファイルの前記様々な品質レベルのうちの１つを選択することと、
前記サーバーから前記クライアントに前記選択された品質レベルで前記要求されたファイルを送信することと
を含む作動を実行するようにプログラムされており、
前記現在の帯域幅の値に関する前記ウェブページのコードが、前記様々な品質レベルと前記現在の帯域幅の様々な値との間の対応関係を含む、コンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１４年４月２５日に出願された「帯域幅依存のファイル転送のための方法及びシステム」と題する中国特許出願第２０１４１０１７１６７２．９号の外国優先権を主張するものであり、その全体が本明細書に援用される。
【０００２】
本出願は、コンピューター通信技術の分野に関し、具体的には、帯域幅依存のファイル転送のための方法及びシステムに関する。
【背景技術】
【０００３】
現代のデータ通信技術及びネットワークの急速な発展のおかげで、ユーザーは、ブラウザーを使用して、サーバーに格納された画像、テキスト  ビデオ及びその他の多くのファイル形式を閲覧することができる。
【０００４】
インターネット  ユーザーは、一般にサーバーのファイルを閲覧することを必要としている。ファイル閲覧のプロセスでは、ユーザーは、サーバーに閲覧要求を送信するクライアントのブラウザーを使用し、サーバーはユーザーの要求を受信すると、ユーザーに受信したデータを表示するクライアントのブラウザーにデータを返す。通常、ユーザーが閲覧するファイルには、大量のデータを有する可能性がある画像ファイル及びその他のファイルを含まれる。
【０００５】
異なる場所または異なる時間のネットワークの条件の変化により、多くのユーザーが低速のネットワーク速度を甘受している。このようなネットワークの条件の下では、データ集約型の画像及び動画が含まれているウェブページは開くのに時間がかかり、ユーザーの閲覧体験に影響を与える。
【０００６】
通常、大量のデータを含むファイルは、データ量を削減し、ウェブページのアクセス速度を改善させるために圧縮することができる。たとえば、画像のデータサイズは、画像ファイルを圧縮することによって縮小しても良い。画質は、通常、画像圧縮率によって測定される。画像の元のファイルのサイズが２．５ＭＢ（メガバイト）の場合、画像の１００％の品質の複写は２．５ＭＢの画像サイズに相当する。画像の８０％の品質の複写は、１．１５ＭＢのファイル  サイズに相当し、画像の５０％の品質の複写は、６９２ＫＢ（キロバイト）のファイル  サイズに相当し、３０％の品質の複写は、３４１ＫＢのファイル  サイズに相当する。人間の目には、１００％の品質の画像と同じ画像の３０％の品質の複写との間の知覚品質の差は大きくはなく、１００％の品質と８０％の品質との間の差はほとんど知覚できない。しかし、１００％、８０％及び３０％の画質のファイル  サイズの違いは非常に大きい。ネットワーク速度は同じであれば、転送速度はファイル  サイズが小さいほど速くなる。したがって、ウェブページを開く速度を速くするために、転送が必要なデータの量を、ウェブページ内の画像及びビデオ  ファイルを圧縮することによって削減する。このためには、帯域幅（インターネットの速度）を最初に測定し、データ集約型ファイルのファイル  サイズを削減するべきかどうかを決定し、可能な場合は、どのくらい削減するかを決定する。
【０００７】
帯域幅を測定する既存の方法のうちの１つは、固定サイズである固定リソース  ファイルを使用することである。具体的には、固定サイズである固定リソース  ファイルは、ウェブ  サーバーに配置する。固定リソース  ファイルは、画像、ビデオまたはその他の任意の適切な形式でもよいが、通常はウェブページのコンテンツの一部ではない。ユーザーのブラウザーは、固定リソース  ファイルを受信するためにかかる時間を決定し、クライアントに格納されている帯域幅の値を計算するために決定された時間を使用する。クライアントは、決定されたネットワーク帯域幅に応じて一定の品質のファイルを要求する。
【０００８】
既存の方法は、実際には問題がある。ウェブページ  ファイルの要求が行われた時点で、利用可能な帯域幅の値は、最初に測定された値でもよく、その結果、その時から現在までネットワークの条件の変更は考慮されていない。ユーザーが別のネットワークに切り替え、または地理的に異なる場所に移動した場合、ネットワーク速度は変化している可能性がある。従来技術は、ネットワークの速度を更新するための方法を提供していない。その結果、クライアントに送信されるファイルの品質は、クライアントの現在のネットワーク速度に最適ではない可能性がある。たとえば、現在のネットワーク速度が初期速度よりも減少している場合、ブラウザーは、現在のネットワークの条件の下で、より長い受信時間の原因となる過度に高品質のファイルを要求する。同様に、現在のネットワーク速度が初期速度よりも増加している場合は、ブラウザーは、不必要に低品質のファイルを要求する。
【発明の概要】
【０００９】
この概要は、以下の詳細な説明でさらに説明される概念の選択を簡略化された形で紹介するために提供される。この概要は、特許請求される主題のすべての重要な特徴または不可欠な特徴を特定することを意図しておらず、特許請求される主題の範囲を決定するための支援として単独で使用されることも意図していない。
【００１０】
本開示の一態様は、帯域幅依存のファイル転送の方法である。この方法によれば、サーバーは、クライアントにウェブページのコードを送信し、現在の帯域幅の値を測定するか更新するようにクライアントに指示する。サーバーは、様々な品質レベルで読み込むことができるサーバーにあるファイルを読み込むための要求をクライアントから受信する。現在の帯域幅の測定に適切な要求されたファイルの品質レベルは、サーバーが適切な品質レベルでクライアントに要求されたファイルを送信できるように選択される。
【００１１】
帯域幅測定は、以前に要求されたファイルを読み込む速度を測定することによって行われ、現在の要求されたファイルを読み込む速度を測定することによって更新することができる。
【００１２】
クライアントに送信されたウェブページのコードは、現在の帯域幅に関係する。たとえば、ウェブページのコードは、様々な品質レベルと現在の帯域幅の測定の様々な値との間の対応関係を含んでも良い。
【００１３】
一実施形態では、この方法は、要求されたファイルの複数のバージョンを提供し、各バージョンは様々なレベルのうちの１つを表す。クライアントに選択された品質レベルで要求されたファイルを送信するには、サーバーは、様々な品質レベルのうちの選択された１つを表す複数のバージョンのうちの１つを送信する。
【００１４】
要求されたファイルの複数のバージョンは、要求されたファイルを前処理し、サーバーに格納することにより取得できる。あるいは、要求されたファイルの複数のバージョンは、クライアントからファイルを読み込むための要求を受信すると、要求されたファイルを処理することによって取得しても良い。
【００１５】
現在の帯域幅に適切な要求されたファイルの様々な品質レベルのうちの１つを選択するために、この方法は、クライアント側で、現在の帯域幅に応じて様々な品質レベルのうちの１つを決定し、ファイルの読み込み要求で決定された品質レベルを指定しても良い。あるいは、この方法は、様々な品質レベルに帯域幅の様々な範囲に関連付けされた帯域品質のテーブルをあらかじめ設定し、その帯域幅品質のテーブルに従い、現在の帯域幅に対応する要求されたファイルの様々な品質レベルのうちの１つを選択しても良い。
【００１６】
一実施形態では、帯域幅品質のテーブルはサーバーで利用可能であり、サーバーは、現在の帯域幅に適切な要求されたファイルの様々な品質レベルのいずれか１つを選択する。あるいは、帯域幅品質のテーブルはクライアントで利用可能でもよく、クライアントは、現在の帯域幅に適切な要求されたファイルの様々な品質レベルのいずれか１つを選択する。
【００１７】
ファイルを読み込むために、クライアントによりサーバーに送信された要求は、現在の帯域幅に適切な様々な品質レベルのうちの１つを指定したり、現在の帯域幅の値を指定したりしても良い。
【００１８】
現在の帯域幅の値は、クライアントによる以前のファイルの読み込み速度から計算しても良い。以前のファイルは、長さのピクセル数、高さのピクセル数及び撮像係数を乗じて計算したファイル  サイズを有する画像ファイルでもあってもよく、以前のファイルの読み込み速度は、画像ファイルを受信するために要した時間でファイル  サイズを除して計算したものでも良い。クライアントによって読み込まれた以前のファイルは、クライアントによって要求されたウェブページの一部であっても良い。
【００１９】
現在の帯域幅は、クライアントによる複数の以前のファイルの読み込み速度の平均から計算しても良い。
【００２０】
帯域幅依存のファイル転送のための本開示の方法の別の態様によれば、サーバーは、サーバーにあり、様々な品質レベルで読み込むことができるファイルを読み込むための要求をクライアントから受信する。現在の帯域幅に適切な要求されたファイルの品質レベルは、サーバーが選択された品質レベルでクライアントに要求されたファイルを送信できるように選択される。次に、サーバーは、少なくとも部分的に、クライアントが要求されたファイルを読み込んだ速度に応じて現在の帯域幅を更新するようにクライアントに指示する。更新された現在の帯域幅は、次のファイルを読み込むまたは次のウェブページを閲覧するために使用される。
【００２１】
本開示の別の態様は、帯域幅依存のファイル転送ためのコンピューター化された  システムである。システムは、プロセッサー、コンピューター可読メモリー、及び記憶媒体、及び入出力デバイスを有する計算デバイスであり、計算デバイスは、クライアントに現在の帯域幅に関係するウェブページのコードを送信することと、サーバーでファイルを読み込むためのクライアントからの要求を受信することであって、ファイルを様々な品質レベルで送信することと、現在の帯域幅に適切な要求されたファイルの様々な品質レベルのうちの１つを選択することと、サーバーからクライアントに選択された品質レベルで要求されたファイルを送信することとを、含む作動を実行するようにプログラムされている。
【００２２】
本開示のその他の特徴及び利点は、以下の説明に記載され、一部は説明から明らかになるか、または応用例の実施によって理解されるであろう。本出願の目的及びその他の利点は、記述された明細書、特許請求の範囲、ならびに実現及び達成が具体的に指摘されている構造の図面によって取得することができる。
【００２３】
詳細な説明は、添付の図面を参照して説明される。
【図面の簡単な説明】
【００２４】
【図１】帯域幅依存のファイル転送のための開示された方法の一例を示す流れ図である。
【図２】帯域幅依存のファイル転送のための開示された方法のクライアント中心のプロセスの流れ図である。
【図３】帯域幅依存のファイル転送のための開示された方法のサーバー中心のプロセスの流れ図である。
【図４】帯域幅依存のファイル転送のための開示された方法のクライアント中心のプロセスを実施するシステムのブロック図である。
【図５】帯域幅依存のファイル転送のための開示された方法のクライアント中心のプロセスを実施する図４のシステムで使用される記録計算部のブロック図である。
【図６】帯域幅依存のファイル転送のための開示された方法のサーバー中心のプロセスを実施するシステムのブロック図である。
【発明を実施するための形態】
【００２５】
本開示は、添付の図面及び例示的な実施形態に関連してさらに詳細に説明する。明細書では、用語「技術（単数または複数）」は、たとえば、上記及び本開示全体を通じて文脈により許可された、方法、装置デバイス、システム、及び／またはコンピューター可読命令を指しても良い。
【００２６】
本明細書では、プロセスが記載されている順序は、限定として解釈されるものではなく、記載されているプロセス  ブロックの任意の数は、方法または代替方法を実施する任意の順序で組み合わせても良い。実施形態は、単に説明の便宜のために一連の手順で記載されている。矛盾が生じない限り、本開示に記載の実施例及び実施形態、ならびにその実施例及び実施形態の特性及び特徴は、自由に組み合わせても良い。さらに、実施形態に記載されていないすべての手順が、本開示の技術を実施するために必要というわけではない。
【００２７】
図１は、帯域幅依存のファイル転送のための開示された方法の一例を示す流れ図である。
【００２８】
ブロックＳ１０１では、クライアントは、サーバーからウェブページのコードを受信し、ウェブページのコードを実行する。
【００２９】
ウェブページのコードは、現在の帯域幅の値を照会するまたは要求するコードを含んでも良い。ページには、帯域幅の値に応じてファイルの品質を選択するためのコードを含むこともできる。
【００３０】
ブロックＳ１０２では、クライアントは、サーバーへのファイルの読み込み要求を送信する。
【００３１】
要求には、現在の帯域幅の値、または現在の帯域幅の値に応じて選択されたファイルの品質を含んでも良い。
【００３２】
元のファイルの異なる品質のファイルは、対応する品質レベルのバージョンとなる異なる圧縮率で、元のファイルを圧縮することにより取得することができる。ファイルの品質は、元のファイル  サイズと圧縮ファイル  サイズとの間の比率を表すために使用しても良い。ファイルのサイズは、保存時のファイルによって占められる記憶域のサイズであっても良い。圧縮ファイルの例には、画像、ビデオ、オーディオ及びその他のファイル形式が含まれる。
【００３３】
たとえば、画像の圧縮率を表すために、画像品質を使用することができる。元の画像ファイルが、２．５ＭＢ（メガバイト）の大きさを有する場合、１００％の画質は、２．５ＭＢのファイル  サイズに相当する。圧縮後の品質と画像サイズとの間の関係の例は以下のとおり。８０％の画質は、１．１５ＭＢの画像サイズに相当し、５０％の画質は、６９２ＫＢの画像サイズ（キロバイト単位）に相当し、３０％の画質は、３４１ＫＢの画像サイズに相当し、１０％の画質は２２３ＫＢの画像サイズに相当するなど。
【００３４】
現在の帯域幅の値は、以前のファイル転送で取得されるクライアントの帯域幅値を含んでも良い。受信速度が帯域幅の値を測定するために使用されるファイルは、クライアントがアクセスしたウェブページの固有部分であっても良い。または、現在の帯域幅の値は、そのような帯域幅の値の測定目的のために使用される固定リソース  ファイルをダウンロードすることによって計算された帯域幅の値であっても良い。現在の帯域幅の値もゼロゼロでも良い。
【００３５】
現在の帯域幅の値は、ファイルの品質との対応関係を有する。対応関係は、規則に従って定義しても良い。たとえば、より高い帯域幅の値は、より高い品質に対応し、その逆も同様である。現在の帯域幅の値とファイルの品質との間の対応関係は、あらかじめ設定するか、またはユーザーからのフィードバックに基づいて適時、提供することができる。
【００３６】
クライアントは、現在の帯域幅の値とファイルの品質との間の対応関係を参照して、現在の帯域幅の値に応じて適切なファイルの品質を選択しても良い。現在の帯域幅の値がゼロゼロの場合、つまり、現在の帯域幅の値が使用できない場合、クライアントはデフォルトで最高の品質を選択しても良い。
【００３７】
現在の帯域幅の値とファイルの品質との間の関係の例を表１に示す。
【００３８】
【表１】
0006546192.tif 000002
【００３９】
表１に示す関係によれば、クライアントの現在の帯域幅の値が最大３Ｍｂｐｓのとき、８０％のファイルの品質に対応するファイルを選択することができる。
【００４０】
ブロックＳ１０３では、サーバーは、ファイルを読み込むための要求をクライアントから受信する。要求には、現在の帯域幅の値、または現在の帯域幅の値に対応するファイルの品質を含んでも良い。
【００４１】
ブロックＳ１０４では、サーバーは、適切なファイルの品質のファイルを選択し、ファイルをクライアントに送信する。
【００４２】
この方法は、要求されたファイルの複数のバージョンを提供し、各バージョンは様々なレベルのうちの１つを表す。クライアントに選択された品質レベルで要求されたファイルを送信するには、サーバーは、選択された品質レベルを表すバージョンのうちの１つを送信する。
【００４３】
ファイルを読み込むための要求に、現在の帯域幅の値が含まれている場合、サーバーは、ブロックＳ１０２で説明したように、現在の帯域幅の値とファイルの品質との間の対応関係に基づいて、対応するファイルの品質を選択しても良い。次に、サーバーは、選択したファイルの品質に応じた適切なファイルを選択し、クライアントに選択したファイルを送信する。ファイルを読み込むための要求が、現在の帯域幅の値に対応するファイルの品質を指定する場合、サーバーは、受信したファイルの品質に応じた適切なファイルを選択し、クライアントに選択したファイルを送信する。
【００４４】
ファイルとそのファイルに対応するファイルの品質との間の関連付けはＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）アドレスを使用して達成しても良い。たとえば、固有のＵＲＬアドレスは、それぞれのファイルの品質に対応するファイルのバージョンを特定するために、各ファイルの品質を設定しても良い。
【００４５】
「Ａ．ｊｐｇ」という名前の画像ファイルの場合、たとえば、５０％の品質の圧縮画像ファイルのＵＲＬは、「ｈｔｔｐ：／／ｄｏｍａｉｎ／ａ．ｊｐｇ＿ｑ５０．ｊｐｇ」に設定しても良い。同じ元の画像ファイルの８０％の品質の圧縮画像ファイルのＵＲＬは、「ｈｔｔｐ：／／ｄｏｍａｉｎ／ａ．ｊｐｇ＿ｑ８０．ｊｐｇ」に設定しても良い。
【００４６】
要求されたファイルは、対応するＵＲＬアドレスでサーバーに格納されている、要求されたファイルの異なる圧縮バージョンを取得するために前処理しても良い。サーバーは、現在のファイルの品質に対応するＵＲＬを選択し、そのＵＲＬにアクセスしてファイルの対応するバージョンを取得しクライアントに返す。
【００４７】
あるいは、要求されたファイルは、クライアントからファイルを読み込むための要求を受信すると、要求されたファイルの異なる圧縮バージョンを取得するために処理されても良い。たとえば、サーバーは、各ファイルの品質のＵＲＬを設定することができるが、要求されるまでは、これらのＵＲＬアドレスで圧縮されたファイルを取得し、保存するためにファイルを前処理しない。要求された場合、サーバーは、適切なファイルの品質を決定するために、現在のファイルの品質に対応するＵＲＬを解析し、適切なファイルの品質の圧縮ファイルを取得するために、解析に応じて元のファイルを処理し、クライアントに圧縮されたファイルを返す。
【００４８】
ブロックＳ１０５では、クライアントはサーバーから適切な品質のファイルを受信する。
【００４９】
サーバーから返されたファイルを受信すると、クライアントは、受信した各ファイルのレコードのサイズ、及び各ファイルの受信にかかる時間を記録する。
【００５０】
ファイル  サイズ及びファイルを受信する時間に基づいて、クライアントは、現在の帯域幅の値の新しい値を計算し、更新しても良い。具体的には、各ファイルのサイズ及びファイルを受信するために必要となる時間に応じて、クライアントは、それぞれのファイルの帯域幅の値を計算し、これらのファイルに対して別々に計算された帯域幅の値を用いて受信されたすべてのファイルの現在の帯域幅の平均値を計算する。現在の帯域幅の値は、帯域幅の平均値に設定され、クライアントに格納しても良い。
【００５１】
各ファイルの帯域幅の値は、次の式を用いて計算しても良い。
【００５２】
【数１】
0006546192.tif 000003
【００５３】
ここでｎは、ｎ番目のファイルを表し、ＢＷｎは、適切な単位（たとえば、Ｋｂｐｓ）で測定された、ｎ番目のファイルを受信するための帯域幅の値を表し、Ｓnは、たとえば、千バイト（ＫＢ）単位で、ｎ番目のファイルのファイル  サイズを表し、ｔnは、秒（ｓ）単位で、ｎ番目のファイルを受信するために必要な時間を表す。
【００５４】
たとえば、ファイルが画像ファイルである場合、そのファイルのサイズは、長さのピクセル数、高さのピクセル数及び撮像係数の乗算として表すことができる。また、ファイルのサイズは、各ピクセルによって占められる記憶域空間を表すこともできる。この場合には、上記の式（１）を以下の式に変えることができる。
【００５５】
【数２】
0006546192.tif 000004
【００５６】
ここで、Ｌｎは、長さのピクセル数、Ｈｎは、高さのピクセル数、ｍは、キロバイト（ＫＢ）単位の撮像係数になる。撮像係数ｍの値は、ピクセルの記憶域のサイズのテストに基づいて設定することができる。たとえば、係数値は、０．０００１６ＫＢ（ピクセル単位）である。
【００５７】
クライアントの現在の平均帯域幅の値は、各ファイルを受信するために帯域幅の値を合計し、受信したファイルの数で合計を除算することによって計算される。
【００５８】
たとえば、現在のクライアントがセッションのＮ個のファイルを受信したと仮定する。ｎ番目のファイルの帯域幅の値は、ＢＷｎである。ｎの範囲は、１≦ｎ≦Ｎである。クライアントの現在の平均帯域幅値ＢＷaverageは、以下の式で計算される。
【００５９】
【数３】
0006546192.tif 000005
【００６０】
計算された平均帯域幅値ＢＷaverageは、クライアントの現在の帯域幅の値に設定され、格納される。現在の帯域幅の値は、クライアントに格納しても良い。
【００６１】
開示された方法は、クライアント中心の観点から以下でさらに説明する。
【００６２】
図２は、帯域幅依存のファイル転送のための開示された方法のクライアント中心のプロセスの流れ図である。
【００６３】
ブロックＳ２０１では、クライアントは、サーバーからウェブページのコードを受信し、ウェブページのコードを実行する。ウェブページのコードは、現在の帯域幅の値を照会するまたは要求するコードを含んでも良い。ページには、帯域幅の値に応じてファイルの品質を選択するためのコードを含むこともできる。
【００６４】
ブロックＳ２０２では、クライアントは、サーバーへのファイルの読み込み要求を送信する。
【００６５】
要求には、現在の帯域幅の値、または現在の帯域幅の値に応じて選択されたファイルの品質を含んでも良い。
【００６６】
元のファイルの異なる品質のファイルは、対応する品質レベルのバージョンとなる異なる圧縮率で、元のファイルを圧縮することにより取得することができる。ファイルの品質は、元のファイル  サイズと圧縮ファイル  サイズとの間の比率を表すために使用しても良い。ファイルのサイズは、保存時のファイルによって占められる記憶域のサイズを含んでも良い。圧縮ファイルの例には、画像、ビデオ、オーディオ及びその他のファイル形式が含まれても良い。
【００６７】
現在の帯域幅の値は、以前のファイル転送で取得されるクライアントの帯域幅値を含んでも良い。転送が帯域幅の値を測定するために使用されるファイルは、クライアントがアクセスしたウェブページの固有部分であっても良い。または、現在の帯域幅の値は、そのような帯域幅の測定目的のために使用される固定リソース  ファイルにアクセスした後に計算される帯域幅の値であっても良い。現在の帯域幅の値もゼロゼロでも良い。
【００６８】
現在の帯域幅の値は、ファイルの品質との対応関係を有する。対応関係は、規則に従って定義しても良い。一般の規則に従い、より高い帯域幅の値は、より高い品質に対応し、その逆も同様である。現在の帯域幅の値とファイルの品質との間の対応関係は、あらかじめ設定するか、またはユーザーからのフィードバックに基づいて適時、提供することができる。
【００６９】
クライアントは、現在の帯域幅の値に応じた適切なファイルの品質、及び現在の帯域幅の値とファイルの品質との間の対応関係を選択しても良い。現在の帯域幅の値がゼロの場合、クライアントはデフォルトで最高の品質を選択しても良い。
【００７０】
ブロックＳ２０３では、クライアントはサーバーから適切な品質のファイルを受信する。
【００７１】
サーバーから返されたファイルを受信すると、クライアントは、受信した各ファイルのレコードのサイズ、及び各ファイルの受信にかかる時間を記録する。
【００７２】
ファイル  サイズ及びファイルを受信する時間に基づいて、クライアントは、現在の帯域幅の値の新しい値を計算し、更新しても良い。具体的には、各ファイルのサイズ及びファイルを受信するために必要となる時間に応じて、クライアントは、計算式（１）を使用してそれぞれのファイルの帯域幅の値を計算し、計算式（３）を使用して、これらのファイルに対して別々に計算された帯域幅の値を用いて受信されたすべてのファイルの現在の帯域幅の平均値を計算する。現在の帯域幅の値は、帯域幅の平均値に設定され、クライアントに格納しても良い。
【００７３】
開示された方法は、サーバー中心の観点から以下でさらに説明する。
【００７４】
図３は、帯域幅依存のファイル転送のための開示された方法のサーバー中心のプロセスの流れ図である。
【００７５】
ブロックＳ３０１では、サーバーは、ファイルを読み込むための要求をクライアントから受信する。要求には、現在の帯域幅の値、または現在の帯域幅に対応するファイルの品質を含んでも良い。
【００７６】
ファイルを読み込むための要求に現在の帯域幅の値が含まれる場合、サーバーは、帯域幅の値と様々なファイルの品質との間の対応関係に基づいて、適切なファイルの品質を選択しても良い。
【００７７】
現在の帯域幅の値は、以前のファイル転送で取得されるクライアントの帯域幅値を含んでも良い。または、現在の帯域幅の値は、そのような帯域幅の値の測定目的のために使用される固定リソース  ファイルにアクセスした後に計算される帯域幅の値であっても良い。現在の帯域幅の値もゼロでも良い。現在の帯域幅の値を計算する方法の例は、本明細書に記載しており反復しない。
【００７８】
現在の帯域幅の値は、本明細書に記載されているように、規則に従って定義することができるファイルの品質との対応関係を有する。
【００７９】
サーバーは、現在の帯域幅の値に応じて適切なファイルの品質を選択しても良い。現在の帯域幅の値がゼロの場合、サーバーはデフォルトで最高の品質を選択しても良い。
【００８０】
ブロックＳ３０２では、サーバーは、適切なファイルの品質のファイルを選択し、ファイルをクライアントに送信する。
【００８１】
サーバーは、ブロックＳ３０１で決定された適切なファイルの品質に応じて要求されたファイルの複数のバージョンからファイルを選択し、クライアントに選択したファイルを返す。要求されたファイルの複数のバージョンは、元のファイルを前処理して取得できる、サーバーに格納され得る。あるいは、選択したファイルは、選択されたファイルの品質に応じて元のファイルを処理することによって取得できる。
【００８２】
ファイルとそのファイルに対応するファイルの品質との間の関連付けは、ＵＲＬアドレスを使用して達成しても良い。たとえば、固有のＵＲＬアドレスは、それぞれのファイルの品質に対応するファイルのバージョンを特定するために、各ファイルの品質を設定しても良い。
【００８３】
要求されたファイルは、対応するＵＲＬアドレスでサーバーに格納されている、要求されたファイルの異なる圧縮バージョンを取得するために前処理しても良い。サーバーは、現在のファイルの品質に対応するＵＲＬを選択し、そのＵＲＬにアクセスしてファイルの対応するバージョンを取得しクライアントに返す。
【００８４】
あるいは、要求されたファイルは、クライアントからファイルを読み込むための要求を受信すると、要求されたファイルの異なる圧縮バージョンを取得するために処理しても良い。たとえば、サーバーは、各ファイルの品質のＵＲＬを設定することができるが、要求されるまでは、これらのＵＲＬアドレスで圧縮されたファイルを取得し、保存するためにファイルを前処理しない。要求された場合、サーバーは、適切なファイルの品質を決定するために、現在のファイルの品質に対応するＵＲＬを解析し、適切なファイルの品質の圧縮ファイルを取得するために、解析に応じて元のファイルを処理し、クライアントに圧縮されたファイルを返す。
【００８５】
帯域幅依存のファイル転送のための本開示の方法の別の態様によれば、選択された品質レベルでクライアントに要求されたファイルを送信した後、次に、サーバーは、少なくとも部分的に、クライアントが要求されたファイルを読み込んだ速度に応じて現在の帯域幅の値を更新するようにクライアントに指示する。更新された現在の帯域幅の値は、次のファイルを読み込むまたは次のウェブページを閲覧するために使用される。
【００８６】
要約すると、帯域幅依存のファイル転送のための本開示の方法は、ユーザーによって経験されるネットワークの条件に応じたファイルの品質で要求されたファイルを提供するために、帯域幅の値とファイルの品質レベルとの間の対応関係を確立する。この方法は、受信された現在のファイルの受信条件に基づいて現在の帯域幅の値をリアルタイムで計算かつ更新し、次のファイル転送のために更新された現在の帯域幅の値を提供する。したがって、現在のファイル転送に使用される帯域幅の値は、常に以前に発生したファイル転送に基づいて更新される。ユーザーのネットワーク条件が変更される度に、本方法は、新しいネットワーク条件を自動的に調整した適切なファイルの品質を提供し得る。
【００８７】
本明細書に開示された方法に関連して、本開示はまた、本明細書に記載の帯域幅依存のファイル転送の方法を実現するためのコンピューター  システムも提供する。システムは、プロセッサー、コンピューター可読メモリー、及び記憶媒体、及び入出力デバイスを含む計算デバイスでもよく、計算デバイスは、例示的な方法に関連して本明細書に記載される作動を実行するようにプログラムされている。
【００８８】
上述の技術は、コンピューター実行可能命令を含む１つまたは複数の非一時的なコンピューター可読媒体を利用して実装されても良い。
【００８９】
存在開示では、一般に「モジュール」は、特定のタスクまたは機能を実行するように設計された機能を指す。モジュールは、特定のタスクまたは機能に関連する目的を実現するために、ハードウェア、ソフトウェア、計画または方式、またはそれらを組み合わせることができる。さらに、個別のモジュールの描写は、物理的に、個別のデバイスが使用されることを必ずしも示唆しない。代わりに、描写は、１つの機能だけでもよいし、いくつかのモジュールの機能が、単一の複合デバイスまたは構成要素によって実行されても良い。コンピューターベースのシステムで使用される場合、プロセッサー、ストレージ及びメモリーなどの通常のコンピューター構成要素は、様々な個別の機能を実行するために１つまたは複数のモジュールとして機能するようにプログラムしても良い。
【００９０】
図４は、帯域幅依存のファイル転送のための開示された方法のクライアント中心のプロセスを実施するシステムのブロック図である。図４に示すように、システム４００は、コード受信及び実行部４０２、要求送信部４０４及びファイル受信部４０６を含む。
【００９１】
コード受信部及び実行部４０２は、サーバーからウェブページのコードを受信し、受信されたウェブページのコードを実行するために使用される。
【００９２】
要求部４０４は、サーバーにファイルを読み込むための要求を送信するために使用される。ファイルを読み込むための要求は、現在の帯域幅の値を含むか、または現在の帯域幅の値に対応するファイルの品質を指定しても良い。
【００９３】
受信部４０６は、サーバーから適切なファイルの品質のファイルを受信するために使用される。
【００９４】
システム４００はまた、ファイル受信部４０６で受信されたファイル  サイズ及びファイル受信部４０６でファイルを受信するために要した時間を記録するため、ならびに記録されたファイル  サイズ及び受信時刻データに基づいて現在のファイル転送の新しい現在の帯域幅の値を計算するために使用される記録計算部４０８を含んでも良い。
【００９５】
一実施形態では、帯域幅依存のファイル転送のシステムは、要求が現在の帯域幅の値に対応するファイルの品質を指定するように、現在の帯域幅の値に応じてファイルの品質を選択し、ファイルを読み込むための要求で選択されたファイルの品質を含む要求内容部４１０をさらに含んでも良い。
【００９６】
一実施形態では、システム４００は、１つまたは複数のプロセッサー４１２、入力／出力（Ｉ／Ｏ）インターフェース４１４、ネットワーク  インターフェース４１６及びメモリー４１８を含んでも良い。メモリー４１８は、プログラム部４２０及びプログラム  データ４２２を含んでも良い。プログラム部４２０は、コード受信及び実行部４０２、要求送信部４０４、ファイル受信部４０６及び／または上述のような記録計算部４０８を含んでも良い。
【００９７】
図５は、帯域幅依存のファイル転送のための開示された方法のクライアント中心のプロセスを実施する図４のシステムで使用される記録計算部４０８の例を示すブロック図である。
【００９８】
図５に示すように、記録計算部４０８は、記録部４４１、帯域幅計算部４４２及び平均帯域幅計算部４４３を含む。
【００９９】
記録部４４１は、ファイル受信部４０６により受信されたファイルのファイル  サイズ及びファイルの受信時刻を記録するために使用される。
【０１００】
帯域幅計算部４４２は、それぞれに記録されたファイルのサイズ及び各ファイルのファイル受信時刻に基づいて、各ファイルの帯域幅の値を計算するために使用される。
【０１０１】
平均帯域幅計算部４４３は、各受信されたファイルの個々の帯域幅の値に基づいて、クライアントの平均帯域幅の値を計算し、平均帯域幅の値を新しい現在の帯域幅の値に設定する。
【０１０２】
上記の図４〜５は、クライアント中心のプロセスを実施するためのクライアント中心のシステムの実施例である。
【０１０３】
図６は、帯域幅依存のファイル転送のための開示された方法のサーバー中心のプロセスを実施するシステムのブロック図である。
【０１０４】
図６に示すように、システム６００は、要求受信部６０２及びファイル返信部６０４を含む。
【０１０５】
要求受信部６０２は、ファイルを読み込むためにクライアントから要求を受信するために使用される。要求には、現在の帯域幅の値、または現在の帯域幅の値に対応するファイルの品質を含んでも良い。
【０１０６】
ファイル返信部６０４は、クライアントから受信した要求に指定されている適切なファイルの品質のファイルをクライアントに返すために使用される。
【０１０７】
要求受信部６０２で受信された要求が現在の帯域幅の値を含む場合、、システムは、現在の帯域幅の値に対応するファイルの品質を選択するためのファイル品質選択部６０６をさらに含んでも良い。
【０１０８】
さらに、一実施形態では、システム６００は、１つまたは複数のプロセッサー６０８、入力／出力（Ｉ／Ｏ）インターフェース６１０、ネットワーク  インターフェース６１２及びメモリー６１４を含んでも良い。メモリー６１４は、プログラム部６１６及びプログラム  データ６１８を含んでも良い。一実施形態では、プログラム部６１６は、上述したように、要求受信部６０２、ファイル返信部６０４及び／またはファイル品質選択部６０６を含んでも良い。
【０１０９】
上記の図６は、サーバー中心のプロセスを実施するためのサーバー中心のシステムの例である。
【０１１０】
開示された方法及びシステムは、ハードウェア  モジュールまたはソフトウェア  モジュールによって実施しても良い。特定のモジュールは、機械実行可能なコマンド及びコードに基づいて、コンピューター  プログラム・モジュールを使用して実施しても良い。一般に、コンピューター・プログラム・モジュールは、特定のタスクを実行またはルーチン、プログラム、オブジェクト、コンポーネント、データ構造などの特定の抽象データ型を実施しても良い。本開示に記載された技術はまた、そのような分散コンピューティング環境、つまり通信ネットワークを介して接続されたリモート処理デバイスによってタスクを実行する分散コンピューティング環境でも実施することができる。分散コンピューティング環境では、プログラム  モジュールは、メモリーデバイスを含むローカルまたはリモートのコンピューター記憶媒体のいずれかに配置しても良い。
【０１１１】
初期の技術の場合、ハードウェアの実装（たとえば、ダイオード、トランジスタ、スイッチ及び回路の改善）とソフトウェアの実装（たとえば、方法またはプロセスの改善）は明確に区別することができる。しかし、最近の技術開発により、プロセスは、直接ハードウェア構成を変更することによって達成することができる。方法またはプロセスの改善は、回路構成で適切なハードウェアになるようにハードウェア回路にプログラムすることができる。言い換えれば、プロセスは、ハードウェア  モジュール、ならびにソフトウェア  モジュールを用いて実現しても良い。利用可能な手段の例には、ハードウェア記述言語（Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ、またはＨＤＬ）を使用してデバイスをプログラムすることによって実現される論理機能を可能にする集積回路である、フィールド・プログラマブル・ゲート・アレイ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ、またはＦＰＧＡ）などのプログラマブル  ロジック  デバイス（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ、またはＰＬＤ）を含んでも良い。ＨＤＬの例には、ＡＢＥＬ（Ａｄｖａｎｃｅｄ  Ｂｏｏｌｅａｎ  Ｅｘｐｒｅｓｓｉｏｎ  Ｌａｎｇｕａｇｅ）、ＡＨＤＬ（Ａｌｔｅｒａ  Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）、Ｃｏｎｆｌｕｅｎｃｅ、ＣＵＰＬ（Ｃｏｒｎｅｌｌ  Ｕｎｉｖｅｒｓｉｔｙ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｌａｎｇｕａｇｅ）、ＨＤＣａｌ及びＪＨＤＬ（Ｊａｖａ  Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）、Ｌａｖａ、Ｌｏｌａ、ＭｙＨＤＬ、ＰＡＬＡＳＭ及びＲＨＤＬ（Ｒｕｂｙ  Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）がある。現在、最も一般的なＨＤＬは、ＶＨＤＬ（Ｖｅｒｙ−Ｈｉｇｈ−Ｓｐｅｅｄ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ  Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）及びＶｅｒｉｌｏｇ２である。当業者は、本明細書に記載の方法及びシステムを実現するために、集積回路内の論理プログラミングに使用可能な任意のハードウェア記述言語を使用しても良い。
【０１１２】
コントローラーは、マイクロプロセッサーまたはマイクロプロセッサーによって実行可能な（たとえば、ソフトウェアまたはファームウェアなど）コンピューター読み込み可能なプログラム  コードを格納することができる任意のデバイスなどの任意の適切な手段によって実装することができる。このような手段の実施例には、コンピューター可読媒体、論理ゲート、スイッチ及びＡＳＩＣ（特定用途向け集積回路）、プログラマブル・ロジック・コントローラー及び組み込みマイクロコントローラーがある。メモリー  コントローラーは、メモリーの制御論理の一部として実装することができる。
【０１１３】
本開示に記載の技術は、一般的なコンピューティング装置若しくは環境または専用コンピューティング装置若しくは環境での実装を含むが、パーソナル  コンピューター、サーバー  コンピューター、ハンドヘルド  デバイスまたはポータブル  デバイス、タブレット  デバイス、マルチプロセッサー  システム、マイクロプロセッサー  ベースのシステム、セットトップ  ボックス、プログラム可能な家庭用機器、ネットワークＰＣ、マイクロコンピューター、及び大規模なメインフレーム  コンピューター、または１つまたは複数の上記の実施例を含む任意の分散環境に限定されるものではない。
【０１１４】
典型的な構成では、コンピューティング  デバイスは、１つまたは複数のプロセッサー（ＣＰＵ）、入力／出力インターフェース、ネットワーク  インターフェース、及びメモリーを含む。メモリーは、揮発性メモリー、ランダム  アクセス  メモリー（ＲＡＭ）、及び／または、読み取り専用メモリー（ＲＯＭ）、フラッシュ  メモリー（フラッシュＲＡＭ）などの不揮発性メモリーのその他の形態などのコンピューター可読媒体を含んでも良い。コンピューティング  デバイスの内部メモリーは、コンピューター可読記憶媒体の一種である。たとえば、システム４００のメモリー４１８及びシステム６００のメモリー６１４は、コンピューター可読媒体の一例である。
【０１１５】
コンピューター可読媒体は、永久的及び非永久的な、リムーバブル及び非リムーバブル媒体を含み、情報の記憶のための任意の方法または技術で形成されても良い。格納される情報は、１組のコンピューター可読命令、データ構造、プログラム  モジュールまたはその他のデータであっても良い。コンピューター記憶媒体の実施例には、相変化メモリー（ＰＲＡＭ）、スタティック  ランダム  アクセス  メモリー（ＳＲＡＭ）、ダイナミック  ランダム  アクセスメモリー（ＤＲＡＭ）、ランダム  アクセス  メモリー（ＲＡＭ）のその他のタイプ、読み取り専用メモリー（ＲＯＭ）、電気的消去可能ＰＲＯＭ（ＥＥＰＲＯＭ）、フラッシュ  メモリーまたはその他のメモリー技術、ＣＤ−ＲＯＭ読み出し専用メモリー（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）またはその他の光ストレージ、磁気カセット、磁気テープ  ディスク  ストレージまたはその他の磁気記憶装置、またはコンピューティング  デバイスによってアクセス可能な情報を格納するために使用することができる任意のその他の非伝送媒体を含むが、これらに限定されるものではない。本開示の定義によれば、コンピューター可読媒体には、変調されたデータ信号及び搬送波などの一時的なコンピューター可読媒体（一時的媒体）は含まれない。
【０１１６】
本明細書の様々な実施形態には、徐々に増加する実施例及び環境の詳細が記載されている。各実施形態は、本開示の特定の様態に焦点を当てても良い。したがって、異なる実施形態は、互いに異なっていても良いが、同様の部分を共有しても良い。
【０１１７】
例示的な実施形態は、本開示では、本発明の概念及び実施を例示するために使用される。例示的な実施形態は、本開示の方法及び中核となる概念の理解を深めるために使用される。本開示の概念に基づき、当業者は、例示的な実施形態及び応用分野を変更しても良い。
【図１】
0006546192.tif 000006
【図２】
0006546192.tif 000007
【図３】
0006546192.tif 000008
【図４】
0006546192.tif 000009
【図５】
0006546192.tif 000010
【図６】
0006546192.tif 000011