(57)【要約】      （修正有）【課題】キャッシュを管理するためのコンピュータ実装方法において、様々な場所間で必要とされる帯域幅を低減する。【解決手段】サーバコンピュータは、クライアントデバイスにより、サーバコンピュータからダウンロードされるおよび／またはサーバコンピュータにアップロードされるデータを記憶するキャッシュを整備するクライアントデバイスと通信する。サーバコンピュータは、サーバコンピュータで記憶されるデータを求める要求を受信し、要求されるデータに対応するハッシュによって要求に応答する。クライアントデバイスは、ハッシュを求めてキャッシュを検索し、ハッシュが見つかるならばキャッシュからデータを取得し、ハッシュが探し出されなければ、サーバコンピュータからデータをダウンロードする。クライアントデバイスは、サーバコンピュータにデータをアップロードする際に、キャッシュを更新する。【選択図】図１
2018049653.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュを管理するためのコンピュータ実装方法であって、
クライアントデバイスで、サーバコンピュータで記憶されるデータを取得するための要求を受けることと、
キャッシングが前記クライアントデバイスで使用可能であるか判定することと、
キャッシングが前記クライアントデバイスで使用可能でないとの判定に応答して、前記サーバコンピュータに対して前記データを要求することと、
キャッシングが前記クライアントデバイスで使用可能であるとの判定に応答して、前記サーバコンピュータに対して、前記データに対応するハッシュを要求することと
のためのコンピュータ実装動作を実行するステップを含むコンピュータ実装方法。
【請求項２】
請求項１に記載のコンピュータ実装方法であって、
前記ハッシュを前記サーバコンピュータから受けたか判定するステップであって、要求される前記ハッシュの各々が、要求される前記データに対応する一意的なデータを含む、判定するステップと、
前記ハッシュを受けていないとの判定に応答して、前記サーバコンピュータに対して前記データを要求するステップ、
前記ハッシュを受けたとの判定に応答して、
前記キャッシュにアクセスし、
前記ハッシュを求めて前記キャッシュを検索する
ステップと
をさらに含むコンピュータ実装方法。
【請求項３】
請求項１に記載のコンピュータ実装方法であって、
前記サーバコンピュータから前記ハッシュを受けるステップと、
前記ハッシュを求めて前記キャッシュを検索するステップと、
前記キャッシュが前記ハッシュを記憶していないとの判定に応答して、
前記データおよび前記ハッシュを求める要求を生成し、
前記キャッシュ内に前記データおよび前記ハッシュを記憶する
ステップと
をさらに含むコンピュータ実装方法。
【請求項４】
請求項１に記載のコンピュータ実装方法であって、
前記サーバコンピュータから前記ハッシュを受けるステップと、
前記ハッシュを求めて前記キャッシュを検索するステップと、
前記キャッシュ内の前記ハッシュを識別することに応答して、前記キャッシュから前記データを取得するステップと
をさらに含むコンピュータ実装方法。
【請求項５】
コンピュータ記憶媒体であって、コンピュータにより実行されると、前記コンピュータに、
サーバコンピュータで記憶されるデータを取得するための要求を受けるステップと、
キャッシングが前記コンピュータおよび前記サーバコンピュータで使用可能であるか判定するステップと、
キャッシングが前記コンピュータまたは前記サーバコンピュータのうちの１つまたは複数で使用可能にされていないとの判定に応答して、前記サーバコンピュータに対して前記データを要求するステップと、
キャッシングが前記コンピュータおよび前記サーバコンピュータで使用可能であるとの判定に応答して、
前記サーバコンピュータに対して前記データに対応するハッシュを要求し、
前記ハッシュを求めてキャッシュを検索する
ステップと
を実行させるコンピュータ可読命令を記憶したコンピュータ記憶媒体。
【請求項６】
請求項５に記載のコンピュータ記憶媒体であって、前記コンピュータにより実行されると、前記コンピュータに、
前記キャッシュが前記ハッシュを記憶していないとの判定に応答して、
前記サーバコンピュータに対して前記データを求める要求を生成し、
前記キャッシュ内に前記データおよび前記ハッシュを記憶する
ステップを実行させるコンピュータ可読命令をさらに含むコンピュータ記憶媒体。
【請求項７】
請求項６に記載のコンピュータ記憶媒体であって、前記コンピュータにより実行されると、前記コンピュータに、
前記キャッシュ内の前記ハッシュを識別することに応答して、前記キャッシュから前記データを取得するステップ
を実行させるコンピュータ可読命令をさらに含むコンピュータ記憶媒体。
【請求項８】
プロセッサと、
コンピュータ記憶媒体と
を含むコンピュータであって前記コンピュータにより実行されると、前記コンピュータに、
サーバコンピュータで記憶されるデータを取得するための要求を受けるステップであって、前記データは、ファイルの一部分に対応するデータ要素を含む、ステップと、
キャッシングが前記コンピュータおよび前記サーバコンピュータで使用可能であるか判定するステップと、
キャッシングが前記コンピュータまたは前記サーバコンピュータのうちの１つまたは複数で使用可能でないとの判定に応答して、前記サーバコンピュータに対して前記データを要求するステップと、
キャッシングが前記コンピュータおよび前記サーバコンピュータで使用可能であるとの判定に応答して、
前記サーバコンピュータに対して、要求される前記データに対応するハッシュを要求し、
前記ハッシュを求めてキャッシュを検索する
ステップであって、前記キャッシュは、前記コンピュータおよびクライアントピアにより提供される分散型キャッシュを含む、ステップと
を実行させるコンピュータ可読命令を、前記コンピュータ記憶媒体は記憶した、コンピュータ。
【請求項９】
請求項８に記載のコンピュータであって、前記コンピュータ記憶媒体は、前記コンピュータにより実行されると、前記コンピュータに、
前記キャッシュが前記ハッシュを記憶していないとの判定に応答して、前記サーバコンピュータに対して前記データを求める要求を生成し、前記サーバコンピュータから前記データを受け、前記キャッシュ内に前記データおよび前記ハッシュを記憶するステップと、
前記キャッシュが前記ハッシュを記憶しているとの判定に応答して、前記キャッシュから前記データを取得するステップと
を実行させるさらなるコンピュータ可読命令を記憶した、コンピュータ。
【請求項１０】
請求項９に記載のコンピュータであって、前記コンピュータおよび前記クライアントピアは支所に配置され、前記サーバコンピュータは前記支所から離れて配置され、前記キャ
ッシュから前記データを取得するステップは、前記クライアントピアから前記データを取得するステップを含む、コンピュータ。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]一部の組織は、大量の資源を費やして、地理的に分散した場所間の広域ネットワーク（「ＷＡＮ」）を得て整備する。例えば一部の組織は、高価な地下の、無線経由の、および／または海底の接続媒体を、設置および／または整備して、場所間の通信をサポートする。一部の事例では、大量の帯域幅が、場所での作業をサポートするために利用可能でなければならず、帯域幅をサポートするために選定される媒体、および／または場所間の距離に応じて、整備するのが高価である場合がある。これらのケーブルを設置および整備することが高価となり得る一方で、分散した場所にサービス提供するための複数のデータセンタを開設しホストするという考えは、さらに高価となり得るものであり、したがって実用的であり得ない。これらおよび他の懸念に対処するために、一部の組織は、ファイルの増分更新を用いて、様々な場所間で必要とされる帯域幅を低減する。
【０００２】
[0002]ファイルを増分更新するとき、コンピュータは、ファイル全体、および／またはファイルの新しいバージョンをダウンロードする代わりに、ファイルに対する増分更新を指示するデータをダウンロードするように構成され得る。この手法は送信されるデータの量を低減することが可能であるが、様々なファイルに対する増分更新を行うユーザにより消費される帯域幅は、依然として相当なものとなり得る。特に、増分変更を反映するデータは、更新されるファイルの新しいバージョン全体より少ないデータを消費し得るが、それでも、これらの増分変更を反映するデータのサイズは相当なものとなり得る。例えばファイルの増分更新が、ファイル内の埋め込みデータを含む場合がある。ファイル内に埋め込まれるデータは、例えばビデオデータ、画像データ等々を含み得る。したがって、このファイルに対する増分更新は、ユーザに配布するために大量の帯域幅を消費し得る、ビデオ、画像、または他のデータを含む場合がある。同様に、画像およびビデオなどの一部のタイプのデータは、増分の小片に容易に分割されない場合があり、したがって、何らかの変更が行われるときに、画像またはビデオに対応するファイル全体を送信することが必要である場合がある。
【０００３】
[0003]ユーザが、サーバコンピュータにアクセスして増分更新を取得するとき、大量のデータがユーザに送信される場合がある。さらに、組織により消費されるデータは、複数のユーザにより配布または消費されることが多いので、増分更新が多数のユーザに配布される場合がある。このように、増分更新を行うためにユーザにより消費される帯域幅の量は、依然として相当なものとなり得る。例えば、上記のシナリオでファイルを更新する各々のユーザは、ファイル内に埋め込まれたビデオまたは画像のデータをダウンロードし、現在埋め込まれているデータを含むようにファイルのそのユーザのバージョンを更新する場合がある。そのような「増分」変更は、多数のユーザにより増殖されるときに、大量のデータおよび／または帯域幅を消費し得るものであり、したがって、帯域幅、送信時間等々の観点から高価となり得る。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
[0004]本明細書で行われる開示が提示されるのは、これらおよび他の考慮事項に関してである。
【課題を解決するための手段】
【０００５】
[0005]概念および技術が、キャッシュ管理に関して本明細書で説明される。本明細書で開示される概念および技術によれば、サーバコンピュータは、分散型キャッシュ管理サービス（「キャッシュサービス」）をホストする。サーバコンピュータは、支所（ｂｒａｎ
ｃｈ  ｏｆｆｉｃｅ）または他の場所での、１つまたは複数の、クライアントデバイスおよび／またはクライアントピアと通信するように構成され得る。一部の実施形態では、クライアントデバイスおよびクライアントピアの各々は、キャッシュモジュールを実行して、キャッシュを生成および／または整備することが可能である。キャッシュは、クライアントデバイスおよび／またはクライアントピアの、１つまたは複数により、サーバコンピュータからダウンロードされる、および／または、サーバコンピュータにアップロードされるデータを記憶するために使用され得る。様々な実施形態によればキャッシュは、支所でのデバイスに関連する分散型キャッシュにより提供され、したがって、支所での様々なデバイスに関連する、メモリデバイスおよび／または他の記憶デバイスを含み得る。一部の他の実施形態ではキャッシュは、支所または他の場所での、データベース、サーバコンピュータ、および／または他のデバイスなどのデータ記憶要素により提供される。
【０００６】
[0006]サーバコンピュータ、および／または、サーバコンピュータにより実行されるキャッシュサービスは、サーバコンピュータで記憶されるデータを求める要求を受信するように構成され得る。要求は、データのハッシュを求める要求を含み得る。サーバコンピュータは、要求側および／またはサーバコンピュータが、本明細書で説明されるようにキャッシュするように構成されているかどうかを決定するようにもまた構成され得る。サーバコンピュータおよび要求側が両方とも、キャッシュするように構成されているならば、サーバコンピュータは、要求されるデータに対応するハッシュによって要求に応答することが可能である。一部の実施形態ではサーバコンピュータは、ハッシュを求める要求にもかかわらず、ハッシュを提供することが要求されるデータを提供することより効率的であるか、それとも効率的でないかを決定するようにさらに構成される。ハッシュを提供することがデータを提供することより効率的でないことになるならば、サーバコンピュータは、代わりにデータによって、ハッシュを求める要求に応答するように構成され得る。
【０００７】
[0007]そうでない場合、サーバコンピュータは、要求されるハッシュによって、ハッシュを求める要求に応答することが可能である。ハッシュを受信する際に、クライアントデバイス、クライアントピア、および／または別の要求側は、分散型キャッシュ（「キャッシュ」）を検索して、支所または他の場所での誰かユーザが、ハッシュに関連するデータに以前にアクセスしたかどうかを決定することが可能である。このように、本明細書での説明ではキャッシュを検索することを引き合いに出すが、ハッシュおよび／またはデータが、支所または他の場所での、１つまたは複数のデバイスにより記憶されているかどうかを決定するために、キャッシュライブラリまたは他のデータが検索される場合もあるということが理解されるべきである。ハッシュおよび／またはデータがキャッシュ内に存在すると決定されるならば、クライアントデバイス、クライアントピア、または他の要求するデバイスは、データを記憶するデバイスにアクセスし、そのデバイスからデータを取得することが可能である。したがって、サーバコンピュータで受信されるデータを求める要求は、サーバコンピュータからデータをダウンロードする代わりに、データのローカルコピーを位置特定するために使用され得るハッシュによって応答され得る。
【０００８】
[0008]クライアントデバイス、クライアントピア、および／または他の要求側が、キャッシュ内のハッシュおよび／またはデータを識別しないならば、要求側は、別の要求によってサーバコンピュータに応答することが可能である。第２の要求は、サーバコンピュータに対してデータを要求することが可能である。一部の実施形態では第２の要求は、要求されるデータに対応するハッシュを求める要求を含む、または、そのハッシュを求める要求により付随される。このように要求側は、キャッシュでデータおよび／またはハッシュを記憶するように構成され得る。したがって、本明細書で開示される概念および技術の実施形態は、キャッシュを更新および／または整備することを含み得る。
【０００９】
[0009]本明細書で開示される概念および技術の別の態様によれば、支所または他の場所
でのデバイスは、サーバコンピュータにデータをアップロードする際に、キャッシュを更新するように構成され得る。したがって例えば、クライアントデバイスがサーバコンピュータに更新されたファイルをアップロードする場合、クライアントデバイスは、データに対応するハッシュを要求し、サーバコンピュータからハッシュを受信し、キャッシュおよび／または関連するキャッシュライブラリ内にハッシュを記憶するように構成され得る。したがって、最初の要求側が、更新されたデータをダウンロードすることを試みるとき、データ、ハッシュを取得するための、ならびに／または、キャッシュ内にデータおよびハッシュを記憶するための上記で説明された動作がなくとも、サーバコンピュータにより提供されるハッシュはキャッシュ内で見つかり得るものであり、データはローカルで取得され得る。
【００１０】
[0010]上記で説明された主題は、コンピュータ制御の装置、コンピュータプロセス、コンピューティングシステムとして、または、コンピュータ可読記憶媒体などの製造品として実装され得るということが十分認識されるべきである。これらおよび様々な他の特徴が、以下の詳細な説明を読み、関連する図面を再検討することから明らかとなろう。
【００１１】
[0011]この概要は、下記の詳細な説明においてさらに説明される概念の選択物を、単純化された形式で紹介するために提供されるものである。この概要は、請求される主題の主要な特徴または本質的な特徴を識別することは意図されず、この概要は、請求される主題の範囲を限定するために使用されることもまた意図されない。さらに請求される主題は、本開示の任意の部分で言及される、いずれかまたはすべての欠点を解決する実装形態に限定されない。
【図面の簡単な説明】
【００１２】
【図１】[0012]本明細書で開示される様々な実施形態に対する例示的な動作環境を例示するシステム図である。
【図２】[0013]例示的な実施形態による、統合型キャッシュを管理するための方法の態様を示すフロー図である。
【図３】[0014]例示的な実施形態による、統合型キャッシュを使用してデータを提供するための方法の態様を示すフロー図である。
【図４】[0015]例示的な実施形態による、キャッシュサービスにデータをアップロードするための方法の態様を示すフロー図である。
【図５】[0016]本明細書で提示される実施形態の態様を実装することが可能なコンピューティングシステムに関する、例示的なコンピュータのハードウェアおよびソフトウェアのアーキテクチャを例示するコンピュータ・アーキテクチャ図である。
【発明を実施するための形態】
【００１３】
[0017]以下の詳細な説明は、キャッシュ管理に関する概念および技術に向けられたものである。本明細書で説明される概念および技術によれば、サーバコンピュータは、キャッシュ管理サービス（「キャッシュサービス」）をホストする。サーバコンピュータは、キャッシュサービスの実行によって、制限または制約された帯域幅によって、支所または他の場所での、１つまたは複数の、クライアントデバイスおよび／またはクライアントピアと通信するように構成され得る。一部の実施形態では、クライアントデバイスまたはクライアントピアの、１つまたは複数は、キャッシュモジュールを実行するように構成され得る。キャッシュモジュールは、キャッシュを生成および／または整備するために、クライアントデバイスおよび／またはクライアントピアにより実行可能であり得る。キャッシュは、クライアントデバイスおよび／またはクライアントピアの、１つまたは複数により、サーバコンピュータからダウンロードされる、および／または、サーバコンピュータにアップロードされるデータを記憶するために使用され得る。様々な実施形態によればキャッシュは、支所または他の場所でのデバイスに関連する分散型キャッシュにより提供される。したがって、本明細書で説明されるキャッシュの機能性は、支所での様々なデバイスに関連する、１つまたは複数の、メモリデバイスまたは他の記憶デバイスにより提供され得る。一部の他の実施形態ではキャッシュの機能性は、支所または他の場所に関連する、データベース、サーバコンピュータ、および／または他のデータ記憶デバイスなどのデータ記憶要素により提供され得る。
【００１４】
[0018]サーバコンピュータ、および／または、サーバコンピュータにより実行されるキャッシュサービスは、サーバコンピュータで記憶されるデータを求める要求を受信するように構成され得る。要求は、データに対応するハッシュを求める要求を含み得る、および／または、そのハッシュを求める要求により付随され得る。サーバコンピュータは、要求側および／またはサーバコンピュータが、キャッシュするように構成されているかどうかを決定するようにもまた構成され得る。サーバコンピュータおよび要求側が、キャッシュするように構成されているならば、サーバコンピュータは、要求されるデータに対応するハッシュによって要求に応答することが可能である。サーバコンピュータは、要求されるハッシュによって、ハッシュを求める要求に応答することが可能である。一部の実施形態ではサーバコンピュータは、ハッシュを生成するように、および／または、ハッシュを提供することが要求されるデータを提供することより効率的でないかどうかを決定するようにさらに構成される。サーバコンピュータが、要求されるハッシュを提供することがデータ自体を提供することより効率的でないことになると決定するならば、サーバコンピュータは、代わりにデータによって、ハッシュを求める要求に応答するように構成され得る。
【００１５】
[0019]クライアントデバイス、クライアントピア、および／または別の要求側は、キャッシュを検索して、支所または他の場所での誰かユーザが、ハッシュに関連するデータに以前にアクセスしたかどうかを決定することが可能である。本明細書での説明ではキャッシュを検索することを引き合いに出すが、ハッシュおよび／またはデータが、支所または他の場所での、１つまたは複数のデバイスにより記憶されているかどうかを決定するために、キャッシュライブラリまたは他のデータが検索される場合もあるということが理解されるべきである。ハッシュおよび／またはデータがキャッシュ内に存在すると決定されるならば、クライアントデバイス、クライアントピア、または他の要求するデバイスは、データを記憶するデバイスにアクセスし、そのデバイスからデータを取得することが可能である。したがって、サーバコンピュータで受信されるデータを求める要求は、サーバコンピュータからデータをダウンロードする代わりに、データのローカルコピーを位置特定するために使用され得るハッシュによって応答され得る。
【００１６】
[0020]クライアントデバイス、クライアントピア、および／または他の要求側が、キャッシュ内のハッシュおよび／またはデータを識別しないならば、要求側は、別の要求によってサーバコンピュータに応答することが可能である。第２の要求は、サーバコンピュータに対してデータを要求することが可能である。一部の実施形態では第２の要求は、要求されるデータに対応するハッシュを求める要求を含む、または、そのハッシュを求める要求により付随される。このように要求側は、キャッシュでデータおよび／またはハッシュを記憶するように構成され得る。したがって、本明細書で開示される概念および技術の実施形態は、キャッシュを更新および／または整備することを含み得る。
【００１７】
[0021]支所または他の場所での、クライアントデバイス、クライアントピア、および／または他のデバイスは、サーバコンピュータにデータをアップロードする際に、キャッシュを更新するようにもまた構成され得る。したがって、キャッシングが使用可能にされた状態のクライアントデバイスまたは他のデバイスが、サーバコンピュータに更新されたファイルをアップロードするとき、クライアントデバイスまたは他のデバイスは、データに対応するハッシュを要求するように構成され得る。ハッシュが、サーバコンピュータから受信され、キャッシュおよび／または関連するキャッシュライブラリ内に記憶され得る。したがって、最初の要求側が、更新されたデータをダウンロードすることを試みるとき、データ、ハッシュを取得するための、ならびに／または、分散型キャッシュ内にデータおよびハッシュを記憶するための上記で説明された動作がなくとも、サーバコンピュータにより提供されるハッシュはキャッシュ内で見つかり得るものであり、データはローカルで取得され得る。
【００１８】
[0022]本明細書で説明される主題は、コンピュータシステム上のオペレーティングシステムおよびアプリケーションプログラムの実行に連関して実行するプログラムモジュールの一般的な背景状況において提示されるが、当業者であれば、他の実装形態が他のタイプのプログラムモジュールと組み合わせて実行され得るということを認識するであろう。一般的にプログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装する、ルーチン、プログラム、コンポーネント、データ構造、および他のタイプの構造を含む。さらに当業者は、本明細書で説明される主題は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースの、またはプログラマブルな家電、ミニコンピュータ、メインフレームコンピュータ等々を含む、他のコンピュータシステム構成によって実践され得るということを十分認識するであろう。
【００１９】
[0023]以下の詳細な説明では、参照が、本明細書の部分を形成する付随する図面に対して行われ、それらの図面には、例示として、具体的な実施形態または例が示される。次に、いくつかの図の全体を通して類似の数字が類似の要素を表す図面を参照して、キャッシュ管理に関するコンピューティングシステム、コンピュータ可読記憶媒体、およびコンピュータ実装方法論の態様が提示される。
【００２０】
[0024]次に図１を参照して、本明細書で提示される様々な実施形態に対する１つの動作環境１００の態様が説明される。図１に示される動作環境１００は、クライアントデバイス１０２を含む。様々な実装形態によればクライアントデバイス１０２は、通信ネットワーク（「ネットワーク」）１０４の部分として、またはネットワーク１０４と通信して動作するように構成され得る。様々な実装形態によればクライアントデバイス１０２の機能性は、例えば、デスクトップ、タブレット、またはラップトップのコンピュータシステムなどのパーソナルコンピュータ（「ＰＣ」）などの、コンピューティングデバイスにより提供される。クライアントデバイス１０２の機能性は、サーバコンピュータ、ハンドヘルドコンピュータ、ネットブックコンピュータ、組み込み型コンピュータシステム、携帯情報端末、携帯電話、スマートフォン、または他のコンピューティングデバイスを含む、ただしそれらに限定されない、他のタイプのコンピューティングデバイスにより提供される場合もある。このように、クライアントデバイス１０２は、デスクトップまたはラップトップのコンピュータなどのパーソナルコンピューティングデバイスとして本明細書で説明されるが、この実施形態は例示的であり、決して限定的であると解釈されるべきではないということが理解されるべきである。
【００２１】
[0025]クライアントデバイス１０２は、オペレーティングシステム１０６、ならびに、例えばキャッシュモジュール１０８および／または他のアプリケーションプログラムなどの、１つまたは複数のアプリケーションプログラムを実行するように構成され得る。オペレーティングシステム１０６は、クライアントデバイス１０２の動作を制御するためのコンピュータプログラムである。アプリケーションプログラムは、本明細書で説明される機能性を提供することを、オペレーティングシステム１０６の上部で実行するように構成される実行可能プログラムである。キャッシュモジュール１０８はクライアントデバイス１０２のコンポーネントとして例示されるが、キャッシュモジュール１０８は、他のスタンドアローンのデバイスもしくはそのデバイスのコンポーネントとして、または、他のスタンドアローンのデバイスもしくはそのデバイスのコンポーネント内で実施され得るということが理解されるべきである。さらに、下記の説明を参照して理解されることになるように、クライアントデバイス１０２に加えて、またはクライアントデバイス１０２の代わりに、他のデバイスがキャッシュモジュール１０８を実行することが可能である。このように、例示される実施形態は例示的であり、決して限定的であると解釈されるべきではない。
【００２２】
[0026]キャッシュモジュール１０８は、キャッシュ１１０内にデータを保存するように、およびキャッシュ１１０からデータを探し出す（ｒｅｔｒｉｅｖｅ）ように構成され得る。キャッシュ１１０、またはキャッシュ１１０の一部分は、クライアントデバイス１０２で記憶されるデータにより、および／または、クライアントデバイス１０２から離れて記憶されるデータにより実施され得る。他の実施形態では、キャッシュ１１０の一部分またはコンポーネントは、分散型キャッシュとして複数のデバイスにより提供される。例えば図１に示されるように、クライアントデバイス１０２、および、１つまたは複数のクライアントピア１１２Ａ〜Ｎ（以降では集合的および／または包括的に「クライアントピア１１２」と呼ばれる）は、支所、法人事務所、または、広域ネットワーク（「ＷＡＮ」）の他の支部もしくは一部分に関連する分散型キャッシュとして、キャッシュ１１０を集合的に格納するように構成され得る。このように、キャッシュモジュール１０８およびキャッシュ１１０は、クライアントデバイス１０２に関してのみ例示されるが、クライアントピア１１２の１つまたは複数が、キャッシュモジュール１０８を実行するように、および／または、キャッシュ１１０に関連するデータ記憶を提供するように構成され得るということが理解されるべきである。したがって、例示される実施形態は例示的であると理解されるべきであり、決して限定的であると解釈されるべきではない。
【００２３】
[0027]キャッシュモジュール１０８は、ネットワーク１０４の部分として、またはネットワーク１０４と通信して動作するサーバコンピュータ１１６によりホストされるキャッシュサービス１１４と通信するようにもまた構成され得る。サーバコンピュータ１１６は、キャッシュサービス１１４の実行によって、キャッシュモジュール１０８と通信して、キャッシュ管理に関する本明細書で説明される機能性を提供するように構成され得る。様々な実施形態によればサーバコンピュータ１１６は、データ１１８および／またはハッシュ１２０を記憶するようにもまた構成され得る。
【００２４】
[0028]サーバコンピュータ１１６により記憶されるデータ１１８は、サーバコンピュータ１１６によりホストされる任意のデータを含み得る。したがってデータ１１８は、例えばインターネットコンテンツ、イントラネットコンテンツ、ウェブページ、ウェブサイト、アプリケーション、ファイル、メディアコンテンツ、他のデータ等々を含み得る。本明細書で開示される概念および技術の様々な実装形態によれば、データ１１８はデータ要素を含む。本明細書では用語「データ要素」は、ファイルまたは他のデータの、チャンクまたは一部分を含むが、それらに限定されない。例えばデータ要素は、Ｒｅｄｍｏｎｄ、ＷａｓｈｉｎｇｔｏｎのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ製のＭＳ−ＦＳＳＨＴＴＰプロトコルによって生成され得る。この実施形態は例示的であり、決して限定的であると解釈されるべきではないということが理解されるべきである。
【００２５】
[0029]ＭＳ−ＦＳＳＨＴＴＰプロトコルは、データ１１８などのファイルまたは他のデータを、ファイルおよび／または関連するメタデータに対応するバイナリデータの、不変チャンクまたは一部分に分けるために使用され得る。上記で言及されたように、これらのチャンクまたは一部分は、「データ要素」と、および／またはデータ１１８と本明細書では呼ばれる。データ１１８などのファイルが要求されるとき、サーバコンピュータ１１６は、個々に要求側に提供され得る、および／または、要求側により要求されるファイルもしくは他のデータ１１８を形成するために再集成され得る複数のデータ要素を、識別および取得することが可能である。したがって、ビデオファイルなどの単一のファイルが、単一のファイルを集合的に表す複数のデータ要素に分割され得る。このように、変更がファイルに対して行われる際に、クライアントデバイス１０２およびクライアントピア１１２は、ファイル全体をダウンロードする代わりに、変化しているデータ１１８にアクセスすることが可能である。
【００２６】
[0030]一部の他の実施形態ではサーバコンピュータ１１６は、データ要素を使用して、ファイルまたは他のデータ１１８の増分更新をサポートするように構成され得る。したがってファイルが更新されるとき、サーバコンピュータ１１６は、変更されているファイルの一部分を反映するデータ要素を識別するように構成され得るものであり、サーバコンピュータ１１６により記憶されるファイルの以前のバージョンの対応するデータ要素を置換するように構成され得る。このように、要求側デバイスでファイルを更新することは、変更されたデータ要素のみを提供することにより実現される増分更新を含み得る。ファイルの増分更新は一般的に理解されているので、ファイルを増分更新すること、および／またはＭＳ−ＦＳＳＨＴＴＰプロトコル、および／または他のプロトコルの、これらおよび他の態様は、本明細書ではさらに詳細に説明されない。
【００２７】
[0031]本明細書で開示される概念および技術の一部の実施形態によれば、サーバコンピュータ１１６は、キャッシュ管理に関する本明細書で説明される機能性を提供するために、データ要素に対応するハッシュ１２０などの暗号ハッシュを生成するように、および、サーバコンピュータ１１６でハッシュ１２０を記憶するように構成される。特にキャッシュサービス１１４は、サーバコンピュータ１１６によりホストされるデータ１１８を求める要求を受信するように構成され得る。上記で言及されたように、データ１１８を求める要求は、１つまたは複数のデータ要素を求めるものに、効果的または明示的に対応し得るものである。したがって、本明細書で説明されるような「データ１１８」は、データ要素を含むと理解されなければならない。要求が、クライアントデバイス１０２および／またはクライアントピア１１２から受信され得る。本明細書で開示される概念および技術の様々な実施形態によれば、要求は、要求されるデータ１１８に対応する１つまたは複数のハッシュ１２０を求める要求を含む。
【００２８】
[0032]サーバコンピュータ１１６は、要求されるデータ１１８に関連するハッシュ１２０を識別するように、ならびに、クライアントデバイス１０２および／またはクライアントピア１１２などの要求するデバイスにハッシュ１２０を、クライアントデバイス１０２および／またはクライアントピア１１２に実際のデータ１１８を提供する代わりに提供するように構成され得る。クライアントデバイス１０２および／またはクライアントピア１１２は、キャッシュモジュール１０８を実行して、サーバコンピュータ１１６から受信されたハッシュ１２０を参照するデータを求めて、キャッシュ１１０および／またはキャッシュライブラリ（例示されない）を検索することが可能である。このようにキャッシュモジュール１０８は、クライアントデバイス１０２、および／または、クライアントピア１１２の１つが、ハッシュ１２０に関連するデータ１１８、および／または、ハッシュ１２０をデータ１１８に関連付ける記憶されたデータについて、以前にダウンロードした、アップロードした、および／または、他の方法でアクセスしたかどうかを決定するように構成され得る。
【００２９】
[0033]キャッシュモジュール１０８が、キャッシュ１１０またはキャッシュライブラリ内の、データ１１８および／またはハッシュ１２０を識別するならば、キャッシュモジュール１０８は、キャッシュ１１０内のデータ１１８にアクセスするように構成され得る。上記で言及されたようにキャッシュ１１０は、クライアントデバイス１０２、および、クライアントピア１１２の１つまたは複数により提供される分散型キャッシュを含み得る。したがって、キャッシュモジュール１０８は、クライアントデバイス１０２および／またはクライアントピア１１２の、１つまたは複数からデータ１１８を取得することにより、データ１１８にアクセスするように構成され得るということが理解されるべきである。この実施形態は例示的であり、決して限定的であると解釈されるべきではないということが理解されるべきである。
【００３０】
[0034]キャッシュモジュール１０８は、キャッシュ１１０を築造および整備するようにもまた構成され得る。したがって例えばキャッシュモジュール１０８が、ハッシュ１２０および／または関連するデータ１１８を見つけないならば、キャッシュモジュール１０８は、データ１１８を求める要求を生成し、サーバコンピュータ１１６に要求を送信するように構成され得る。要求に応答してサーバコンピュータ１１６は、クライアントデバイス１０２にデータ１１８を送信することが可能である。サーバコンピュータ１１６は、データ１１８とともにハッシュ１２０を送信することもまた可能であるが、このことは必ずしも実情ではない。特に図３を参照して、下記でより詳細に解説されるように、サーバコンピュータ１１６は、ハッシュ１２０を提供することがデータ１１８を提供することより効率的でないかどうかを決定するように、および、適切であるならば、代わりにデータ１１８によってハッシュ１２０を求める要求に応答するようにもまた構成され得る。
【００３１】
[0035]データ１１８および／またはハッシュ１２０を受信する際に、キャッシュモジュール１０８は、キャッシュ１１０内にデータ１１８および／またはハッシュ１２０を記憶するように構成され得る。一部の実施形態ではキャッシュモジュール１０８は、上記で言及されたように、キャッシュ１１０に関連するキャッシュライブラリ内にハッシュ１２０を記憶することもまた可能である。したがって、データ１１８を求める将来の要求側は、要求に応答してサーバコンピュータ１１６により識別されるハッシュ１２０を求めてキャッシュ１１０を検索する際に、キャッシュ１１０内でハッシュを識別し、データ１１８を取得することが可能である。ハッシュ１２０、データ１１８を取得するための、およびキャッシュ１１０を管理するための方法の例の実施形態が、図２〜４を参照して下記でより詳細に説明される。
【００３２】
[0036]様々な実施形態によればキャッシュモジュール１０８は、サーバコンピュータ１１６にデータ１１８をアップロードする際に、キャッシュ１１０を更新するようにもまた構成され得る。１つの実施形態ではキャッシュモジュール１０８は、サーバコンピュータ１１６にデータ１１８をアップロードする際に、サーバコンピュータ１１６に対してハッシュ１２０を要求し、そのハッシュ１２０を受信するように構成され得る。キャッシュモジュール１０８は、キャッシュ１１０内に、アップロードされたデータ１１８および受信されたハッシュ１２０を記憶するようにもまた構成され得る。したがって、本明細書で開示される概念および技術の一部の実施形態は、創出の際に、キャッシュ１１０内にデータ１１８および／またはハッシュ１２０を記憶し、そのことにより、最初の後続の要求側がデータ１１８をダウンロードしキャッシュ１１０内に記憶することを不必要にすることを含む。したがって一部の実施形態は、ラウンドトリップの数が一部の事例では同じ、またはより大きい場合があるにもかかわらず、支所とサーバコンピュータ１１６との間の通信により消費される帯域幅をさらに低減するために使用され得る。この実施形態は例示的であり、決して限定的であると解釈されるべきではないということが理解されるべきである。
【００３３】
[0037]本明細書で説明される概念および技術によれば、サーバコンピュータ１０２は、支所または他の場所での、クライアントデバイス１０２およびクライアントピア１１２と通信するように構成され得る。クライアントデバイス１０２、および、クライアントピア１１２の１つまたは複数は、キャッシュモジュール１０８を実行するように構成され得る。キャッシュモジュール１０８は、キャッシュ１１０および／またはキャッシュライブラリを、生成および／または整備するように実行可能であり得る。キャッシュ１１０は、サーバコンピュータ１１６からダウンロードされる、および／または、サーバコンピュータ１１６にアップロードされるデータ１１８を記憶するために使用され得るものであり、クライアントデバイス１０２およびクライアントピア１１２により提供される分散型キャッシュであり得る。
【００３４】
[0038]サーバコンピュータ１１６は、サーバコンピュータ１１６で記憶されるデータ１１８を求める要求を受信するように構成され得る。要求は、データ１１８に対応するハッシュ１２０を求める要求を含み得る、および／または、そのハッシュ１２０を求める要求により付随され得る。サーバコンピュータ１１６は、上記で解説されたように、要求されるデータ１１８に対応するハッシュ１２０によって要求に応答することを、この応答が、データ１１８を提供することより効率的でないことにならない限り、行うことが可能である。クライアントデバイス１０２は、キャッシュ１１０を検索して、支所または他の場所でのいずれかのデバイスが、ハッシュ１２０に関連するデータ１１８に以前にアクセスしたかどうかを決定することが可能である。ハッシュ１２０および／またはデータ１１８がキャッシュ１１０内に存在すると決定されるならば、クライアントデバイス１０２は、データ１１８を記憶するデバイスにアクセスし、データ１１８を取得することが可能である。したがって、サーバコンピュータ１１６で受信されるデータ１１８を求める要求は、サーバコンピュータ１１６からデータ１１８をダウンロードする代わりに、データ１１８のローカルコピーを位置特定するためにクライアントデバイス１０２により使用され得るハッシュ１２０によって応答され得る。
【００３５】
[0039]クライアントデバイス１０２が、キャッシュ１１０内のハッシュ１２０および／またはデータ１１８を識別しないならば、クライアントデバイス１０２は、データ１１８を求める要求を生成し、サーバコンピュータ１１６に要求を送信することが可能である。一部の実施形態では第２の要求は、要求されるデータ１１８に対応するハッシュ１２０を求める要求を含む、または、そのハッシュ１２０を求める要求により付随される。このようにクライアントデバイス１０２は、キャッシュ１１０でデータ１１８および／またはハッシュ１２０を記憶して、キャッシュ１１０を整備および／または管理するように構成され得る。様々な実施形態によればクライアントデバイス１０２は、サーバコンピュータ１１６にデータ１１８をアップロードする際に、キャッシュ１１０を更新するようにもまた構成され得る。クライアントデバイス１０２は、クライアントデバイス１０２によりアップロードされるデータ１１８に対応するハッシュ１２０を要求するように構成され得る。ハッシュ１２０が、サーバコンピュータ１１６から受信され、キャッシュ１１０内に記憶され得る。したがって、後続の要求側が、サーバコンピュータ１１６からデータ１１８をダウンロードすることを試み、サーバコンピュータ１１６からハッシュ１２０を受信するとき、要求側は、キャッシュ１１０内のハッシュ１２０を識別し、ローカルでデータ１１８を取得することが可能である。
【００３６】
[0040]図１は、１つのクライアントデバイス１０２、１つのネットワーク１０４、複数のクライアントピア１１２、および、１つのサーバコンピュータ１１６を例示する。これに対して、動作環境１００の一部の実装形態は、複数のクライアントデバイス１０２、複数のネットワーク１０４、単一のクライアントピア１１２、および／または、複数のサーバコンピュータ１１６を含むということが理解されるべきである。このように、例示される実施形態は例示的であると理解されるべきであり、決して限定的であると解釈されるべきではない。
【００３７】
[0041]次に図２に移り、統合型キャッシュを管理するための方法２００の態様が、例示的な実施形態によって詳細に説明される。本明細書で開示される方法の動作は必ずしも何らかの格別の順序で提示されるわけではないということ、および、代替的な順序での動作の一部またはすべての実行が可能であり企図されるということが理解されるべきである。動作は、説明および例示を容易にするために、明示される順序で提示されている。動作は、添付される特許請求の範囲の範囲から逸脱することなく、追加され、省略され、および／または、同時に実行される場合がある。
【００３８】
[0042]例示される方法は、任意の時間に終了され得るものであり、それらの方法が、それぞれそっくりそのまま実行される必要はないということもまた理解されるべきである。方法の一部もしくはすべての動作、および／または、実質的に同等の動作は、本明細書で定義されるような、コンピュータ記憶媒体上に含まれるコンピュータ可読命令の実行により実行され得る。本説明および特許請求の範囲において使用されるような、用語「コンピュータ可読命令」およびその異形は、ルーチン、アプリケーション、アプリケーションモジュール、プログラムモジュール、プログラム、コンポーネント、データ構造、アルゴリズム等々を含むように、本明細書では拡張的に使用される。コンピュータ可読命令は、シングルプロセッサまたはマルチプロセッサのシステム、ミニコンピュータ、メインフレームコンピュータ、パーソナルコンピュータ、ハンドヘルドコンピューティングデバイス、マイクロプロセッサベースのプログラマブルな家電、それらの組み合わせ等々を含む、様々なシステム構成上で実装され得る。
【００３９】
[0043]このように、本明細書で説明される論理動作は、（１）コンピューティングシステム上で走る一連のコンピュータ実装作用もしくはプログラムモジュールとして、および／または、（２）コンピューティングシステム内部の相互接続された機械論理回路もしくは回路モジュールとして実装されるということが十分認識されるべきである。実装形態は、コンピューティングシステムの性能および他の要件によって決まる選定の問題である。したがって、本明細書で説明される論理動作は、状態、動作、構造的デバイス、作用、またはモジュールと様々に呼ばれる。これらの動作、構造的デバイス、作用、およびモジュールは、ソフトウェアで、ファームウェアで、専用デジタル論理、およびそれらの任意の組み合わせで実装され得る。
【００４０】
[0044]本開示の概念を例示および説明する目的で、方法２００は、キャッシュモジュール１０８の実行によってクライアントデバイス１０２により実行されるとして説明される。この実施形態は例示的であり、決して限定的であるとみなされるべきではないということが理解されるべきである。特に、クライアントデバイス１０２を含む、ただしそれに限定されない様々なデバイスが、キャッシュモジュール１０８を含む、ただしそれに限定されない様々なソフトウェアモジュールの実行によって、方法２００に関して本明細書で説明される機能性を提供するように構成され得る。
【００４１】
[0045]方法２００は動作２０２で始まり、クライアントデバイス１０２は、サーバコンピュータ１１６によりホストされるデータ１１６を求める要求を受信する。データ１１６を求める要求は、ディレクトリ内のファイルにたどり着くことを含む、ただしそれに限定されない、ファイルにアクセスすることのための、データ１１６に関連するリンクもしくは他の識別子の選択物を検出するための、および／または、他の方法でデータ１１６を求める要求を受信するための、クライアントデバイス１０２で受信される入力を含み得る。動作２０２で要求されるデータ１１６は、ウェブページ、ウェブアプリケーション、ウェブサイト、ドキュメント、テキスト、スプレッドシート、メールデータ、ビデオ、音声、もしくは他のメディアコンテンツ、他のデータ、および／またはそれらの組み合わせを含む、ただしそれらに限定されない、ほぼ任意のタイプのデータに対応し得る。
【００４２】
[0046]動作２０２から、方法２００は動作２０４に進み、クライアントデバイス１０２は、キャッシングが使用可能にされているかどうかを決定する。一部の実施形態では、キャッシングが使用可能にされているかどうかを決定することは、ユーザ、アドミニストレータ、または他の権限を与えられたユーザがキャッシュモードを使用可能にしているかどうかを決定することを含む。このように、一部の実施形態では、動作２０４の機能性は、クライアントデバイス１０２での「加入」または「脱退」動作に対応し得るものであり、クライアントデバイス１０２は、キャッシュモードを使用することに決め（加入）、またはキャッシュモードを使用しないことに決める（脱退）。このように一部の実施形態では動作２０４は、クライアントデバイス１０２およびサーバコンピュータ１１６の両方がハッシュ１２０を使用することに同意するかどうかを決定することを含む。クライアントデバイス１０２またはサーバコンピュータ１１６のいずれかがハッシュ１２０を使用することを拒否するならば、クライアントデバイス１０２は、ハッシュモードが使用可能にされていないと決定することが可能であり、代わりに実際のデータ１１８を共有することに依拠することが可能である。他の実施形態では、キャッシングが使用可能にされているかどうかを決定することは、ソフトウェアの設定値または機能性がキャッシュモードの使用を含むかどうかを決定することを含む。１つの企図される実施形態では、クライアントデバイス１０２は、動作２０４で、クライアントデバイス１０２および／またはサーバコンピュータ１１６が、Ｒｅｄｍｏｎｄ、ＷａｓｈｉｎｇｔｏｎのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ製のオペレーティングシステムのＷＩＮＤＯＷＳ（登録商標）およびＷＩＮＤＯＷＳ（登録商標）  ＳＥＲＶＥＲ  ＣＯＭＰＵＴＥＲの一群の一部の構成物により提供される、ＢＲＡＮＣＨ  ＣＡＣＨＥサービスを提供するように構成されているかどうかを決定することが可能である。これらの実施形態は例示的であり、決して限定的であると解釈されるべきではないということが理解されるべきである。
【００４３】
[0047]クライアントデバイス１０２が、動作２０４で、キャッシングが使用可能にされていないと決定するならば、方法２００は動作２０６に進む。動作２０６でクライアントデバイス１０２は、サーバコンピュータ１１６からデータ１１８を取得する。したがって、動作２０６でクライアントデバイス１０２は、従前の様式でデータ１１８を要求することが可能であるということが十分認識され得る。同様に、図２には示されないが、サーバコンピュータ１１６は従前の様式で要求に応答することが可能である。
【００４４】
[0048]クライアントデバイス１０４が、動作２０４で、キャッシングが使用可能にされていると決定するならば、方法２００は動作２０８に進む。動作２０８でクライアントデバイス１０２は、サーバコンピュータ１１６に対してハッシュ１２０を求める要求を生成する。ハッシュ１２０を求める要求は、データ１１８を求める要求に含まれ得る。したがってクライアントデバイス１０２は、データ１１８が要求されるということ、および、ハッシュ１２０が、入手可能であるならば提供されるべきであるということをサーバコンピュータ１１６に効果的に通知する、フラグ、フィールド、または他の指示子を伴って、データ１１８を要求するように構成され得る。一部の他の実施形態ではクライアントデバイス１０２は、ハッシュ１２０を求める要求を生成することが可能であり、サーバコンピュータ１１６は、要求に応答して提供されるべきであるのが、ハッシュ１２０であるか、それともデータ１１８であるかを決定することが可能である。提供されるべきであるのが、データ１１８であるか、それともハッシュ１２０であるかを決定するための、サーバコンピュータ１１６の機能性の一部の態様が、図３を参照してより詳細に下記で説明される。
【００４５】
[0049]動作２０８から、方法２００は動作２１０に進み、クライアントデバイス１０２は、動作２０８で要求されるハッシュ１２０がサーバコンピュータ１１６により返送されるかどうかを決定する。したがってクライアントデバイス１０２は、動作２１０で、要求されるハッシュ１２０がサーバコンピュータ１１６で入手可能であったか、それとも入手可能でなかったかを決定することが可能である。クライアントデバイス１０２が、動作２１０で、ハッシュ１２０がサーバコンピュータ１１６により返送されないと決定するならば、方法２００は、上記で説明された動作２０６に進むことが可能である。したがってクライアントデバイス１０２は、ハッシュ１２０がサーバコンピュータ１１６により返送されなかったと決定することに応答して、サーバコンピュータ１１６に対してデータ１１８を要求するように構成され得る。このようにクライアントデバイス１０２は、ハッシュ１２０と比べて、クライアントデバイス１０２にデータ１１８を提供することがより効率的であるとサーバコンピュータ１１６が決定したかどうかを決定するように構成され得る。このことは、図３を参照して下記でより詳細に解説される。
【００４６】
[0050]クライアントデバイス１０２が、動作２１０で、ハッシュ１２０がサーバコンピュータ１１６により返送されると決定するならば、方法２００は動作２１２に進む。動作２１２でクライアントデバイス１０２は、キャッシュ１１０に、返送されたハッシュ１２０を追加する。したがってクライアントデバイス１０２は、サーバコンピュータ１１６からデータを受信することに応答して、キャッシュ１１０を整備および／または更新するように構成され得る。このようにキャッシュ１１０は、データ１１８がサーバコンピュータ１１６から探し出されるときに更新され得る。
【００４７】
[0051]動作２１２から、方法２００は動作２１４に進み、クライアントデバイス１０２は、キャッシュ１１０を調査して、キャッシュ１１０が、動作２１０で取得されたハッシュ１２０に対応するデータ１１８を含むかどうかを決定する。このように、クライアントデバイス１０２は、動作２１４で、キャッシュ１１０を共有または提供する、クライアントピア１１２または他のデバイスの、１つまたは複数が、動作２０２で要求されたデータ１１８を以前に探し出したかどうかを決定することが可能であるということが十分認識され得る。
【００４８】
[0052]クライアントデバイス１０２が、動作２１４で、動作２１０で取得されたハッシュ１２０に対応するデータ１１８が入手可能でないと決定するならば、方法２００は動作２１６に進むことが可能である。動作２１６でクライアントデバイス１０２は、サーバコンピュータ１１６に対してハッシュ１２０に対応するデータ１１８を求める新しい要求を生成することが可能である。したがってクライアントデバイス１０２は、キャッシュ１１０を使用する、またはキャッシュ１１０にアクセスする、クライアントデバイス１０２、クライアントピア１１２、および／または他のデバイスにより、データ１１８が以前にアクセスまたはダウンロードされなかったと決定することが可能である。このようにクライアントデバイス１０２は、データ１１８をダウンロードし、キャッシュ１１０内にデータを記憶することが可能である。
【００４９】
[0053]動作２１６から、方法２００は動作２１８に進むことが可能である。動作２１８でクライアントデバイス１０２は、上記で述べられたように、キャッシュ１１０内にデータ１１８を記憶することが可能である。クライアントデバイス１０２は、キャッシュライブラリ内に、および／またはキャッシュ１１０内に、動作２１０で受信されたハッシュ１２０を記憶することもまた可能である。このように、クライアントデバイス１０２または他のデバイスが、方法２００の後続の繰り返しにおいてハッシュ１２０を求めてキャッシュ１１０を検索するとき、データ１１８は、サーバコンピュータ１１６からデータ１１８を取得する代わりに、位置特定され使用され得る。
【００５０】
[0054]データ１１８の特定のインスタンスがサーバコンピュータ１１６に対して要求される最初の回に、待ち時間および／または非効率性がクライアントコンピュータ１０２により経験され得るということが、図２の上記の説明から十分認識され得る。これに対して、データ１１８を求める後続の要求において、キャッシュ管理に関する本明細書で開示される概念および技術が、本明細書で説明されるように、サーバコンピュータ１１６と、クライアントデバイス１０２またはクライアントピア１１２の、１つまたは複数との間で、より少ない帯域幅または他の資源を使用し、より少ない待ち時間を伴って、データ１１８を取得する際の改善された効率を現実化するために使用され得る。
【００５１】
[0055]特に動作２１４で、クライアントデバイス１０２が、動作２１０で取得されたハッシュ１２０に対応するデータ１１８が入手可能であると決定するならば、方法２００は動作２２０に進む。動作２２０でクライアントデバイス１０２は、キャッシュ１１０からデータ１１８を取得する。したがってクライアントデバイス１０２は、クライアントピア１１２などのローカルピアからデータ１１８を取得することが可能であり、したがって、サーバコンピュータ１１６からデータ１１８をダウンロードする必要がない場合がある。本明細書で開示される概念および技術が、支所または他の同様の場所などの企業地点に拡大されるとき、キャッシュ管理に関する本明細書で開示される概念および技術を使用する影響力が十分認識され得る。
【００５２】
[0056]１つの企図される例では、プレゼンテーションが、支所に関連するユーザにより修正され、様々なピアによる配布および／またはダウンロードのためにサーバコンピュータ１１６に保存される場合がある。この例では、支所は２５人のユーザを含み、プレゼンテーションに対する修正は、２０メガバイトのサイズを有するビデオファイルの埋め込みを含み得る。したがって、支所でのユーザのすべてがプレゼンテーションの自分のバージョンを更新するならば、最低量で５００メガバイトの帯域幅が消費されることになる。本明細書で開示される概念および技術の様々な実施形態によれば、これらのユーザは代わりに、サーバコンピュータ１１６にデータを元々アップロードした、支所でのピアからデータを取得することが可能である。ハッシュ１２０のみがサーバコンピュータ１１６とピアとの間で送信されているので、相当により少ない帯域幅が使用され得る。
【００５３】
[0057]上記の例では、アップロードするピアは、図４を参照して下記でより詳細に解説されるように、キャッシュ１１０内にデータ１１８を、アップロードされるときに記憶することが可能であるので、２５のピアのどれも、サーバコンピュータ１１６からビデオデータをダウンロードすることを必要とされない場合がある。このように、２５人のユーザは代わりに、サーバコンピュータ１１６からハッシュ１２０を取得することが可能であり、引き続いてキャッシュ１１０からデータ１１８を取得することが可能である。一般的に理解されているように、ハッシュ１２０は、メガバイトではなくビットまたはバイトの観点からサイズ設定され得る。このように、この例での、キャッシュ１１０からビデオデータの２５のインスタンスをダウンロードするために情報を交換するときの、ピアとサーバコンピュータ１１６との間の総帯域幅は、５００メガバイトを超える状態から数百キロバイトに低減され得る。このように、キャッシュ管理に関する本明細書で開示される概念および技術は、この例での支所に関連する帯域幅消費の、および結果として運転費の相当な低減を現実化するのに役立ち得るということが十分認識され得る。
【００５４】
[0058]動作２２０から、方法２００は動作２２２に進む。同様に方法２００は、動作２０６から動作２２２に進むことが可能である。方法２００は、動作２１８から動作２２２に進むこともまた可能である。方法２００は動作２２２で終了する。
【００５５】
[0059]次に図３に移り、統合型キャッシュを使用してデータを提供するための方法３００の態様が、例示的な実施形態によって提示される。本開示の概念を例示および説明する目的で、方法３００は、本明細書で説明されるキャッシュサービス１１４を提供するためのコンピュータ実行可能命令の実行によってサーバコンピュータ１１６により実行されるとして説明される。この実施形態は例示的であり、決して限定的であるとみなされるべきではないということが理解されるべきである。特に、サーバコンピュータ１１６を含む、ただしそれに限定されない様々なデバイスが、キャッシュサービス１１４を含む、ただしそれに限定されない様々なソフトウェアモジュールの実行によって、方法３００に関して本明細書で説明される機能性を提供するように構成され得る。
【００５６】
[0060]方法３００は動作３０２で始まり、サーバコンピュータ１１６は、ハッシュ１２０を求める要求を受信する。一部の実施形態では、動作３０２で受信される要求は、図２の動作２０８を参照して上記で説明されたものなどの、クライアントデバイス１０２により生成される要求に対応し得るが、必ずしもそうではない。一部の実施形態では、クライアントデバイス１０２または他のデバイスは、ハッシュ１２０を求める明示的な要求によってハッシュ１２０を要求し、他の実施形態ではハッシュ１２０は、データ１１８を求める要求の部分として要求される。このように、動作３０２で受信される要求は、ハッシュ１２０を要求するためのフラグまたは他の機能性を伴う、データ１１８を求める要求を含み得る。
【００５７】
[0061]動作３０２から、方法３００は動作３０４に進み、サーバコンピュータ１１６は、動作３０２で要求されるハッシュ１２０が送出されるべきであるかどうかを決定する。様々な実施形態によればサーバコンピュータ１１６は、例えば、ハッシュ１２０のサイズ、ハッシュ１２０に関連するデータ１１８のサイズ、（ハッシュがサーバコンピュータ１１６によりまだ記憶されていない場合の）ハッシュ１２０を生成するために必要とされる時間、および／または他の情報を決定することが可能である。このようにサーバコンピュータ１１６は、データ１１８および／またはハッシュ１２０のサイズだけでなく、データ１１８および／またはハッシュ１２０を提供するために必要とされる時間もまた考慮することが可能である。
【００５８】
[0062]サーバコンピュータ１１６は、ハッシュ１２０を生成および／または提供することに関連するサイズおよび時間を、データ１１８を提供することに対して比較することが可能である。この比較および／または他の情報に基づいて、サーバコンピュータ１１６は、ハッシュ１２０を提供することがより効率的であるか、それともデータ１１８を提供することがより効率的であるかを決定するように構成され得る。さらに上記で言及されたように、ハッシュ１２０は、クライアントデバイス１０２に提供される場合、データ１１８を求めてキャッシュ１１０を検索するために使用されることになる。したがってサーバコンピュータ１１６は、データ１１８がキャッシュ１１０で記憶されていない場合に、クライアントデバイス１０２とサーバコンピュータ１１６との間で複数の通信が必要とされ得るということを考慮に入れることもまた可能である。例えば、データ１１８がサイズにおいてハッシュ１２０のサイズに近いならば、サーバコンピュータ１１６は、データ１１８を提供することがより効率的になるという想定に基づいて、ハッシュ１２０の代わりに、またはハッシュ１２０に加えて、データ１１８を提供するように構成され得る。サーバコンピュータ１１６は、ハッシュ１２０が将来提供されることになるかどうかを指示するための、データ１１８に関連するデータまたはフラグを記憶するようにもまた構成され得る。
【００５９】
[0063]サーバコンピュータ１１６が、動作３０４で、ハッシュ１２０が送出されるべきでないと決定するならば、方法３００は動作３０６に進む。動作３０６でサーバコンピュータ１１６は、ハッシュ１２０の代わりにクライアントデバイス１０２にデータ１１８を送出することが可能である。上記で述べられたように、サーバコンピュータ１１６は、所望であれば、ハッシュ１２０およびデータ１１８がキャッシュ１１０で記憶され得るように、データ１１８とともにハッシュ１２０を送出することもまた可能であるが、このことは必ずしも実情ではない。
【００６０】
[0064]サーバコンピュータ１１６が、動作３０４で、ハッシュ１２０が送出されるべきであると決定するならば、方法３００は動作３０８に進む。動作３０８でサーバコンピュータ１１６は、クライアントデバイス１０２にハッシュ１２０を送出することが可能である。動作３０８から、方法３００は動作３１０に進む。方法３００は、動作３０６から動作３１０に進むこともまた可能である。方法３００は動作３１０で終了する。
【００６１】
[0065]次に図４に移り、キャッシュサービスにデータをアップロードするための方法４００の態様が、例示的な実施形態によって提示される。本開示の概念を例示および説明する目的で、方法４００は、キャッシュモジュール１０８の実行によってクライアントデバイス１０２により実行されるとして説明される。この実施形態は例示的であり、決して限定的であるとみなされるべきではないということが理解されるべきである。特に、クライアントデバイス１０２を含む、ただしそれに限定されない様々なデバイスが、キャッシュモジュール１０８を含む、ただしそれに限定されない様々なソフトウェアモジュールの実行によって、方法４００に関して本明細書で説明される機能性を提供するように構成され得る。
【００６２】
[0066]方法４００は動作４０２で始まり、クライアントデバイス１０２は、クライアントデバイス１０２で生成されたデータ１１８のアップロードが要求または着手されたということを、検出または決定する。このように例えばクライアントデバイス１０２は、例えば、サーバコンピュータ１１６にファイルまたは他のタイプのデータ１１８を保存することなどの、クライアントデバイス１０２からのファイル転送の始動を検出することが可能である。様々な実施形態によればクライアントデバイス１０２は、データ１１８の転送を検出するように構成され得る。一部の他の実施形態ではクライアントデバイス１０２は、データ１１８がアップロードされる、または他の方法で転送されるとき、キャッシュ管理に関する本明細書で説明される機能性を使用するための、クライアントデバイス１０２に関連するユーザに対しての選択肢を提供するように構成され得る。したがって動作４０２は、図４を参照して本明細書で説明される機能性を提供するために、選択肢の選択物または他の機能性を受信することを含み得る。
【００６３】
[0067]動作４０２から、方法４００は動作４０４に進み、クライアントデバイス１０２は、キャッシングが使用可能にされているかどうかを決定する。一部の実施形態では、動作４０４に示されるような、キャッシングが使用可能にされているかどうかを決定することは、図２の動作４０４に関して上記で説明された機能性と同様であり得る、または同一でさえあり得るが、必ずしもそうではない。クライアントデバイス１０２が、動作４０４で、キャッシングが使用可能にされていないと決定するならば、方法４００は動作４０６に進む。動作４０６でクライアントデバイス１０２は、サーバコンピュータ１１６に動作４０２で生成されたデータ１１８をプッシュすることが可能である。このように、クライアントデバイス１０２が、キャッシングが使用可能にされていないと決定するならば、データ１１８が、所望であれば従前の様式でサーバコンピュータ１１６に送信され得る。
【００６４】
[0068]クライアントデバイス１０２が、動作４０４で、キャッシングが使用可能にされていると決定するならば、方法４００は動作４０８に進む。動作４０８でクライアントデバイス１０２は、データ１１８に対応するハッシュ１２０を生成し返送するための要求とともに、サーバコンピュータ１１６に動作４０２で生成されたデータ１１８をプッシュする。ハッシュ１２０を返送するための要求は、データ１１８を記憶するための要求に関連するフラグまたは他の指示子としてデータ１１８とともに含まれ得る。一部の他の実施形態では、ハッシュ１２０を求める要求は、別々の要求としてクライアントデバイス１０２により生成され得る。要求がサーバコンピュータ１１６にどのように送出されるかにかかわらず、サーバコンピュータ１１６は、ハッシュ１２０を求める要求を認識し、要求に応答してハッシュ１２０を生成するように構成され得る。
【００６５】
[0069]動作４０８から、方法４００は動作４１０に進み、クライアントデバイス１０２は、サーバコンピュータ１１６からハッシュ１２０を受信する。動作４１０から、方法４００は動作４１２に進み、クライアントデバイス１０２は、キャッシュ１１０に、動作４０８で受信されたハッシュ１２０を追加する。上記で解説されたように、ハッシュ１２０、ならびに／または、ハッシュ１２０をデータ１１８に関連付けるための、および／もしくは、データ１１８が記憶される場所を識別するためのデータもまた、キャッシュ１１０に関連するキャッシュライブラリ内に記憶され得る。したがって、クライアントデバイス１０２は、図２を参照して上記で説明されたように、サーバコンピュータ１１６からのデータ１１８の最初のダウンロードの間とともに、またはそのダウンロードの間の代わりに、データ１１８の創出の間にキャッシュ１１０を整備するように構成され得るということが十分認識され得る。
【００６６】
[0070]このように、本明細書で開示される概念および技術の一部の実施形態は、上記で説明されたように、データ１１８のアップロードの間に、データ１１８およびハッシュ１２０によってキャッシュ１１０を更新し、そのことにより、データ１１８の最初のダウンロード、ハッシュ１２０を求める要求、ならびに／または、データ１１８および／もしくはハッシュの記憶を不要にすることが可能であるということが十分認識され得る。動作４１２から、方法４００は動作４１４に進む。方法４００は、動作４０６から動作４１４に進むこともまた可能である。方法４００は動作４１４で終了する。
【００６７】
[0071]上記の説明ではクライアントデバイス１０２からのデータ１１８を求める要求を引き合いに出したが、この実施形態は、本明細書で開示される概念および技術の単なる１つの例であるということが理解されるべきである。特に一部の実施形態ではクライアントデバイス１０２は、データ１１８を取得および／またはキャッシュするためのプロキシデバイスであり得る。したがって、一部の実施形態ではクライアントデバイス１０２は、一部の背景状況においてサービスとして機能し得る。このように、図１を参照して上記で言及されたように、クライアントデバイス１０２の機能性は、現実または仮想のサーバコンピュータにより提供され得る。したがって、説明された実施形態は例示的であると理解されるべきであり、決して限定的であると解釈されるべきではない。
【００６８】
[0072]図５は、キャッシュ管理に関する本明細書で説明されるソフトウェアコンポーネントを実行することが可能なデバイスに関する、例示的なコンピュータ・アーキテクチャ５００を例示する。したがって、図５に例示されるコンピュータ・アーキテクチャ５００は、サーバコンピュータ、携帯電話、ＰＤＡ、スマートフォン、デスクトップコンピュータ、ネットブックコンピュータ、タブレットコンピュータ、および／またはラップトップコンピュータに関するアーキテクチャを例示する。コンピュータ・アーキテクチャ５００は、本明細書で提示されるソフトウェアコンポーネントの任意の態様を実行するために利用され得る。
【００６９】
[0073]図５に例示されるコンピュータ・アーキテクチャ５００は、中央処理装置５０２（「ＣＰＵ」）、ランダムアクセスメモリ５０６（「ＲＡＭ」）およびリードオンリーメモリ（「ＲＯＭ」）５０８を含むシステムメモリ５０４、ならびに、ＣＰＵ５０２にメモリ５０４を結合するシステムバス５１０を含む。スタートアップの間などに、コンピュータ・アーキテクチャ５００内部の要素間で情報を転送するのに役立つ基本ルーチンを包含する基本入出力システムが、ＲＯＭ５０８内に記憶される。コンピュータ・アーキテクチャ５００は、オペレーティングシステム１０６およびキャッシュモジュール１０８を記憶するための大容量記憶デバイス５１２をさらに含む。図５には示されないが、大容量記憶デバイス５１２は、所望であれば、キャッシュ１１０、キャッシュサーバコンピュータ１１４、データ１１８、ハッシュ１２０、および／または他のデータを記憶するようにもまた構成され得る。
【００７０】
[0074]大容量記憶デバイス５１２は、バス５１０に接続される（示されない）大容量記憶コントローラによってＣＰＵ５０２に接続される。大容量記憶デバイス５１２およびその関連するコンピュータ可読媒体は、コンピュータ・アーキテクチャ５００に不揮発性記憶を提供する。本明細書に包含されるコンピュータ可読媒体の説明では、ハードディスクまたはＣＤ−ＲＯＭドライブなどの大容量記憶デバイスを引き合いに出すが、コンピュータ可読媒体は、コンピュータ・アーキテクチャ５００によりアクセスされ得る、任意の利
用可能なコンピュータ記憶媒体または通信媒体であり得るということが、当業者により十分認識されるはずである。
【００７１】
[0075]通信媒体は、搬送波または他の移送機構などの変調されたデータ信号内の、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを含み、任意の配信媒体を含む。用語「変調されたデータ信号」は、信号であって、その特性の１つまたは複数が、信号内に情報を符号化するような様式で変更または設定された信号を意味する。例として、および限定としてではなく、通信媒体は、有線ネットワークまたは直接有線接続などの有線媒体、ならびに、音響、ＲＦ、赤外線、および他のワイヤレス媒体などのワイヤレス媒体を含む。上記の任意のものの組み合わせもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
【００７２】
[0076]例として、および限定としてではなく、コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報の記憶のために、任意の方法または技術で実装される、揮発性および不揮発性の、リムーバブルおよび非リムーバブルの媒体を含み得る。例えばコンピュータ媒体は、所望の情報を記憶するために使用され得る、および、コンピュータ・アーキテクチャ５００によりアクセスされ得る、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、もしくは他のソリッドステートメモリ技術、ＣＤ−ＲＯＭ、デジタル・バーサタイル・ディスク（「ＤＶＤ」）、ＨＤ−ＤＶＤ、ＢＬＵ−ＲＡＹ（登録商標）、もしくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶デバイス、または任意の他の媒体を含むが、それらに限定されない。特許請求の範囲のために、語句「コンピュータ記憶媒体」およびその変形形態は、本質的に、波、信号、ならびに／または、他の一時的な、および／もしくは無形の通信媒体を含まない。
【００７３】
[0077]様々な実施形態によればコンピュータ・アーキテクチャ５００は、ネットワーク１０４などのネットワークによるリモートコンピュータへの論理接続を使用して、ネットワーキングされた環境で動作することが可能である。コンピュータ・アーキテクチャ５００は、バス５１０に接続されるネットワーク・インタフェース・ユニット５１４によって、ネットワーク１０４に接続することが可能である。ネットワーク・インタフェース・ユニット５１４は、他のタイプのネットワークおよびリモートコンピュータシステム、例えばクライアントピア１１２および／または他のデバイスに接続するためにもまた利用され得るということが十分認識されるべきである。コンピュータ・アーキテクチャ５００は、（図５には示されない）キーボード、マウス、または電子スタイラスを含む、いくつかの他のデバイスからの入力を受信および処理するための入出力コントローラ５１６もまた含み得る。同様に入出力コントローラ５１６は、（やはり図５には示されない）表示画面、プリンタ、または他のタイプの出力デバイスに出力を提供することが可能である。
【００７４】
[0078]本明細書で説明されるソフトウェアコンポーネントは、ＣＰＵ５０２内にロードされ実行されるとき、ＣＰＵ５０２および全体的なコンピュータ・アーキテクチャ５００を、汎用コンピューティングシステムから、本明細書で提示される機能性を容易にするようにカスタマイズされた専用コンピューティングシステムに転換することが可能であるということが十分認識されるべきである。ＣＰＵ５０２は、個々に、または集合的に任意の数の状態をとり得る、任意の数のトランジスタまたは他の個別回路要素から構築され得る。より具体的にはＣＰＵ５０２は、本明細書で開示されるソフトウェアモジュール内部に包含される実行可能命令に応答して、有限状態機械として動作し得る。これらのコンピュータ実行可能命令は、ＣＰＵ５０２が状態間をどのように遷移するかを指定し、そのことにより、ＣＰＵ５０２を構成するトランジスタまたは他の個別ハードウェア要素を転換することにより、ＣＰＵ５０２を転換することが可能である。
【００７５】
[0079]本明細書で提示されるソフトウェアモジュールを符号化することが、本明細書で提示されるコンピュータ可読媒体の物理構造を転換する場合もある。物理構造の具体的な転換は、本説明の異なる実装形態において様々な要因によって決まり得るものである。そのような要因の例は、コンピュータ可読媒体を実装するために使用される技術、コンピュータ可読媒体が１次記憶装置として特徴付けられるか、それとも２次記憶装置として特徴付けられるか等々を含み得るが、それらに限定されない。例えばコンピュータ可読媒体が、半導体ベースのメモリとして実装されるならば、本明細書で開示されるソフトウェアは、半導体メモリの物理状態を転換することによりコンピュータ可読媒体上で符号化され得る。例えばソフトウェアは、半導体メモリを構成するトランジスタ、コンデンサ、または他の個別回路要素の状態を転換することが可能である。ソフトウェアは、そのようなコンポーネントの物理状態を、それらのコンポーネント上にデータを記憶するために転換することもまた可能である。
【００７６】
[0080]別の例として、本明細書で開示されるコンピュータ可読媒体は、磁気または光学の技術を使用して実装され得る。そのような実装形態では、本明細書で提示されるソフトウェアは、磁気または光学の媒体の物理状態を、ソフトウェアがそれらの媒体内に符号化されるときに転換することが可能である。これらの転換は、所与の磁気媒体内部の特定の場所の磁気特性を変えることを含み得る。これらの転換は、所与の光学媒体内部の特定の場所の物理的な特徴または特性を変えて、それらの場所の光学特性を変更することもまた含み得る。物理媒体の他の転換が、本考察を容易にするためにのみ提供される前述の例によって、本説明の範囲および趣旨から逸脱することなく可能である。
【００７７】
[0081]上記に鑑みて、多くのタイプの物理的な転換が、本明細書で提示されるソフトウェアコンポーネントを記憶および実行するために、コンピュータ・アーキテクチャ５００において行われるということが十分認識されるべきである。コンピュータ・アーキテクチャ５００は、当業者に知られている、ハンドヘルドコンピュータ、組み込み型コンピュータシステム、携帯情報端末、および他のタイプのコンピューティングデバイスを含む、他のタイプのコンピューティングデバイスを含み得るということもまた十分認識されるべきである。コンピュータ・アーキテクチャ５００が、図５に示されるコンポーネントのすべてを含むとは限らない場合がある、図５に明示的に示されない他のコンポーネントを含む場合がある、または、図５に示されるものとは完全に異なるアーキテクチャを利用する場合があるということもまた企図される。
【００７８】
[0082]前述のことに基づいて、キャッシュ管理に関する技術が本明細書で開示されたということが十分認識されるべきである。本明細書で提示された主題は、コンピュータの構造的特徴、方法論的および転換的な作用、具体的な計算機、ならびにコンピュータ可読媒体に対しての具体的な文言で説明されたが、添付される特許請求の範囲において定義される発明は、本明細書で説明された具体的な特徴、作用、または媒体に必ずしも限定されないということが理解されるべきである。むしろ具体的な特徴、作用、および媒体は、特許請求の範囲を実装する例の形式として開示されるものである。
【００７９】
[0083]上記で説明された主題は、単に例示として提供されるものであり、限定的であると解釈されるべきではない。様々な修正および変更が、例示および説明された、例の実施形態および応用例にしたがうことなく、ならびに、以下の特許請求の範囲において記載される本発明の真の趣旨および範囲から逸脱することなく、本明細書で説明された主題に対して行われ得る。
【図１】
2018049653.tif 000003
【図２】
2018049653.tif 000004
【図３】
2018049653.tif 000005
【図４】
2018049653.tif 000006
【図５】
2018049653.tif 000007
【手続補正書】
【提出日】平成29年11月22日(2017.11.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データのキャッシュを管理するための、サーバが実行する方法であって、
ハッシュを求める要求をクライアントデバイスから受けるステップと、
キャッシングが前記クライアントデバイスにおいて使用可能であると、ユーザ選択可能なキャッシュモードが使用可能であることに基づいて判定するステップと、
前記ハッシュを送るべきか前記ハッシュに対応するデータを送るべきかを、前記ハッシュのサイズと比較しての前記データのサイズと、前記ハッシュが前記サーバに記憶されていない場合に前記ハッシュを生成するのに必要な時間と、前記データが前記クライアントデバイスにおけるキャッシュに記憶されていない場合に前記クライアントデバイスと前記サーバとの間で必要な通信の回数と、ハッシュのみを前記クライアントデバイスに提供すべきであるとのフラグまたは他の指示とのうちの少なくとも１つに基づき判定するステップと、
前記ハッシュを送るべきと判定した場合に、前記ハッシュを前記クライアントデバイスに送るステップと、
前記データを送るべきと判定した場合に、前記データを前記クライアントデバイスに送るステップと
を含む方法。
【請求項２】
請求項１に記載の方法であって、前記クライアントデバイスからの前記ハッシュを求める前記要求は、ハッシュを送るべきであることを示すフラグを含む、方法。
【請求項３】
請求項１に記載の方法であって、前記ハッシュを送るべきか前記ハッシュに対応するデータを送るべきかを判定する前記ステップは、
前記ハッシュのサイズを前記データのサイズと比較するステップと、
前記ハッシュを送るよりも効率的である場合に、前記データを送るべきと判定するステップと、
前記データを送るよりも効率的である場合に、前記ハッシュを送るべきと判定するステップと、
を含む、方法。
【請求項４】
請求項３に記載の方法であって、前記データのサイズが前記ハッシュのサイズである場合に、前記データを送るステップをさらに含む方法。
【請求項５】
請求項１に記載の方法であって、前記ハッシュを送るべきか前記ハッシュに対応するデータを送るべきかを判定する前記ステップは、
前記ハッシュが前記サーバに記憶されていない場合に、前記ハッシュを生成するのに必要な時間を求めるステップと、
前記データを送るよりも時間的に効率的である場合に、前記ハッシュを生成し、前記ハッシュを送るべきと判定するステップと、
前記ハッシュを生成して送るよりも時間的に効率的である場合に、前記データを送るべきと判定するステップと
を含む、方法。
【請求項６】
請求項１に記載の方法であって、前記ハッシュを送るべきか前記ハッシュに対応するデータを送るべきかを判定する前記ステップは、
前記データが前記キャッシュに記憶されていない場合に、前記クライアントデバイスと前記サーバとの間で必要な通信の回数を求めるステップと、
前記データが前記キャッシュに記憶されていない場合に、ある複数回の通信が必要なときに、前記データを送るべきと判定するステップと、
前記データが前記キャッシュに記憶されていない場合に、前記複数回より少ない回数の通信が必要なときに、前記ハッシュを送るべきと判定するステップと
を含む、方法。
【請求項７】
請求項３に記載の方法であって、前記クライアントデバイスからの将来の要求に応答して前記ハッシュを提供すべきことを示すためのフラグを記憶するステップをさらに含む方法。
【外国語明細書】
2018049653000001.pdf