JP6506374B2 - キャッシュ管理 - Google Patents

キャッシュ管理 Download PDF

Info

Publication number
JP6506374B2
JP6506374B2 JP2017221774A JP2017221774A JP6506374B2 JP 6506374 B2 JP6506374 B2 JP 6506374B2 JP 2017221774 A JP2017221774 A JP 2017221774A JP 2017221774 A JP2017221774 A JP 2017221774A JP 6506374 B2 JP6506374 B2 JP 6506374B2
Authority
JP
Japan
Prior art keywords
data
hash
client device
cache
server computer
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
JP2017221774A
Other languages
English (en)
Other versions
JP2018049653A (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 JP2018049653A publication Critical patent/JP2018049653A/ja
Application granted granted Critical
Publication of JP6506374B2 publication Critical patent/JP6506374B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • 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
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

[0001]一部の組織は、大量の資源を費やして、地理的に分散した場所間の広域ネットワーク(「WAN」)を得て整備する。例えば一部の組織は、高価な地下の、無線経由の、および/または海底の接続媒体を、設置および/または整備して、場所間の通信をサポートする。一部の事例では、大量の帯域幅が、場所での作業をサポートするために利用可能でなければならず、帯域幅をサポートするために選定される媒体、および/または場所間の距離に応じて、整備するのが高価である場合がある。これらのケーブルを設置および整備することが高価となり得る一方で、分散した場所にサービス提供するための複数のデータセンタを開設しホストするという考えは、さらに高価となり得るものであり、したがって実用的であり得ない。これらおよび他の懸念に対処するために、一部の組織は、ファイルの増分更新を用いて、様々な場所間で必要とされる帯域幅を低減する。
[0002]ファイルを増分更新するとき、コンピュータは、ファイル全体、および/またはファイルの新しいバージョンをダウンロードする代わりに、ファイルに対する増分更新を指示するデータをダウンロードするように構成され得る。この手法は送信されるデータの量を低減することが可能であるが、様々なファイルに対する増分更新を行うユーザにより消費される帯域幅は、依然として相当なものとなり得る。特に、増分変更を反映するデータは、更新されるファイルの新しいバージョン全体より少ないデータを消費し得るが、それでも、これらの増分変更を反映するデータのサイズは相当なものとなり得る。例えばファイルの増分更新が、ファイル内の埋め込みデータを含む場合がある。ファイル内に埋め込まれるデータは、例えばビデオデータ、画像データ等々を含み得る。したがって、このファイルに対する増分更新は、ユーザに配布するために大量の帯域幅を消費し得る、ビデオ、画像、または他のデータを含む場合がある。同様に、画像およびビデオなどの一部のタイプのデータは、増分の小片に容易に分割されない場合があり、したがって、何らかの変更が行われるときに、画像またはビデオに対応するファイル全体を送信することが必要である場合がある。
[0003]ユーザが、サーバコンピュータにアクセスして増分更新を取得するとき、大量のデータがユーザに送信される場合がある。さらに、組織により消費されるデータは、複数のユーザにより配布または消費されることが多いので、増分更新が多数のユーザに配布される場合がある。このように、増分更新を行うためにユーザにより消費される帯域幅の量は、依然として相当なものとなり得る。例えば、上記のシナリオでファイルを更新する各々のユーザは、ファイル内に埋め込まれたビデオまたは画像のデータをダウンロードし、現在埋め込まれているデータを含むようにファイルのそのユーザのバージョンを更新する場合がある。そのような「増分」変更は、多数のユーザにより増殖されるときに、大量のデータおよび/または帯域幅を消費し得るものであり、したがって、帯域幅、送信時間等々の観点から高価となり得る。
[0004]本明細書で行われる開示が提示されるのは、これらおよび他の考慮事項に関してである。
[0005]概念および技術が、キャッシュ管理に関して本明細書で説明される。本明細書で開示される概念および技術によれば、サーバコンピュータは、分散型キャッシュ管理サービス(「キャッシュサービス」)をホストする。サーバコンピュータは、支所(bran
ch office)または他の場所での、1つまたは複数の、クライアントデバイスおよび/またはクライアントピアと通信するように構成され得る。一部の実施形態では、クライアントデバイスおよびクライアントピアの各々は、キャッシュモジュールを実行して、キャッシュを生成および/または整備することが可能である。キャッシュは、クライアントデバイスおよび/またはクライアントピアの、1つまたは複数により、サーバコンピュータからダウンロードされる、および/または、サーバコンピュータにアップロードされるデータを記憶するために使用され得る。様々な実施形態によればキャッシュは、支所でのデバイスに関連する分散型キャッシュにより提供され、したがって、支所での様々なデバイスに関連する、メモリデバイスおよび/または他の記憶デバイスを含み得る。一部の他の実施形態ではキャッシュは、支所または他の場所での、データベース、サーバコンピュータ、および/または他のデバイスなどのデータ記憶要素により提供される。
[0006]サーバコンピュータ、および/または、サーバコンピュータにより実行されるキャッシュサービスは、サーバコンピュータで記憶されるデータを求める要求を受信するように構成され得る。要求は、データのハッシュを求める要求を含み得る。サーバコンピュータは、要求側および/またはサーバコンピュータが、本明細書で説明されるようにキャッシュするように構成されているかどうかを決定するようにもまた構成され得る。サーバコンピュータおよび要求側が両方とも、キャッシュするように構成されているならば、サーバコンピュータは、要求されるデータに対応するハッシュによって要求に応答することが可能である。一部の実施形態ではサーバコンピュータは、ハッシュを求める要求にもかかわらず、ハッシュを提供することが要求されるデータを提供することより効率的であるか、それとも効率的でないかを決定するようにさらに構成される。ハッシュを提供することがデータを提供することより効率的でないことになるならば、サーバコンピュータは、代わりにデータによって、ハッシュを求める要求に応答するように構成され得る。
[0007]そうでない場合、サーバコンピュータは、要求されるハッシュによって、ハッシュを求める要求に応答することが可能である。ハッシュを受信する際に、クライアントデバイス、クライアントピア、および/または別の要求側は、分散型キャッシュ(「キャッシュ」)を検索して、支所または他の場所での誰かユーザが、ハッシュに関連するデータに以前にアクセスしたかどうかを決定することが可能である。このように、本明細書での説明ではキャッシュを検索することを引き合いに出すが、ハッシュおよび/またはデータが、支所または他の場所での、1つまたは複数のデバイスにより記憶されているかどうかを決定するために、キャッシュライブラリまたは他のデータが検索される場合もあるということが理解されるべきである。ハッシュおよび/またはデータがキャッシュ内に存在すると決定されるならば、クライアントデバイス、クライアントピア、または他の要求するデバイスは、データを記憶するデバイスにアクセスし、そのデバイスからデータを取得することが可能である。したがって、サーバコンピュータで受信されるデータを求める要求は、サーバコンピュータからデータをダウンロードする代わりに、データのローカルコピーを位置特定するために使用され得るハッシュによって応答され得る。
[0008]クライアントデバイス、クライアントピア、および/または他の要求側が、キャッシュ内のハッシュおよび/またはデータを識別しないならば、要求側は、別の要求によってサーバコンピュータに応答することが可能である。第2の要求は、サーバコンピュータに対してデータを要求することが可能である。一部の実施形態では第2の要求は、要求されるデータに対応するハッシュを求める要求を含む、または、そのハッシュを求める要求により付随される。このように要求側は、キャッシュでデータおよび/またはハッシュを記憶するように構成され得る。したがって、本明細書で開示される概念および技術の実施形態は、キャッシュを更新および/または整備することを含み得る。
[0009]本明細書で開示される概念および技術の別の態様によれば、支所または他の場所
でのデバイスは、サーバコンピュータにデータをアップロードする際に、キャッシュを更新するように構成され得る。したがって例えば、クライアントデバイスがサーバコンピュータに更新されたファイルをアップロードする場合、クライアントデバイスは、データに対応するハッシュを要求し、サーバコンピュータからハッシュを受信し、キャッシュおよび/または関連するキャッシュライブラリ内にハッシュを記憶するように構成され得る。したがって、最初の要求側が、更新されたデータをダウンロードすることを試みるとき、データ、ハッシュを取得するための、ならびに/または、キャッシュ内にデータおよびハッシュを記憶するための上記で説明された動作がなくとも、サーバコンピュータにより提供されるハッシュはキャッシュ内で見つかり得るものであり、データはローカルで取得され得る。
[0010]上記で説明された主題は、コンピュータ制御の装置、コンピュータプロセス、コンピューティングシステムとして、または、コンピュータ可読記憶媒体などの製造品として実装され得るということが十分認識されるべきである。これらおよび様々な他の特徴が、以下の詳細な説明を読み、関連する図面を再検討することから明らかとなろう。
[0011]この概要は、下記の詳細な説明においてさらに説明される概念の選択物を、単純化された形式で紹介するために提供されるものである。この概要は、請求される主題の主要な特徴または本質的な特徴を識別することは意図されず、この概要は、請求される主題の範囲を限定するために使用されることもまた意図されない。さらに請求される主題は、本開示の任意の部分で言及される、いずれかまたはすべての欠点を解決する実装形態に限定されない。
[0012]本明細書で開示される様々な実施形態に対する例示的な動作環境を例示するシステム図である。 [0013]例示的な実施形態による、統合型キャッシュを管理するための方法の態様を示すフロー図である。 [0014]例示的な実施形態による、統合型キャッシュを使用してデータを提供するための方法の態様を示すフロー図である。 [0015]例示的な実施形態による、キャッシュサービスにデータをアップロードするための方法の態様を示すフロー図である。 [0016]本明細書で提示される実施形態の態様を実装することが可能なコンピューティングシステムに関する、例示的なコンピュータのハードウェアおよびソフトウェアのアーキテクチャを例示するコンピュータ・アーキテクチャ図である。
[0017]以下の詳細な説明は、キャッシュ管理に関する概念および技術に向けられたものである。本明細書で説明される概念および技術によれば、サーバコンピュータは、キャッシュ管理サービス(「キャッシュサービス」)をホストする。サーバコンピュータは、キャッシュサービスの実行によって、制限または制約された帯域幅によって、支所または他の場所での、1つまたは複数の、クライアントデバイスおよび/またはクライアントピアと通信するように構成され得る。一部の実施形態では、クライアントデバイスまたはクライアントピアの、1つまたは複数は、キャッシュモジュールを実行するように構成され得る。キャッシュモジュールは、キャッシュを生成および/または整備するために、クライアントデバイスおよび/またはクライアントピアにより実行可能であり得る。キャッシュは、クライアントデバイスおよび/またはクライアントピアの、1つまたは複数により、サーバコンピュータからダウンロードされる、および/または、サーバコンピュータにアップロードされるデータを記憶するために使用され得る。様々な実施形態によればキャッシュは、支所または他の場所でのデバイスに関連する分散型キャッシュにより提供される。したがって、本明細書で説明されるキャッシュの機能性は、支所での様々なデバイスに関連する、1つまたは複数の、メモリデバイスまたは他の記憶デバイスにより提供され得る。一部の他の実施形態ではキャッシュの機能性は、支所または他の場所に関連する、データベース、サーバコンピュータ、および/または他のデータ記憶デバイスなどのデータ記憶要素により提供され得る。
[0018]サーバコンピュータ、および/または、サーバコンピュータにより実行されるキャッシュサービスは、サーバコンピュータで記憶されるデータを求める要求を受信するように構成され得る。要求は、データに対応するハッシュを求める要求を含み得る、および/または、そのハッシュを求める要求により付随され得る。サーバコンピュータは、要求側および/またはサーバコンピュータが、キャッシュするように構成されているかどうかを決定するようにもまた構成され得る。サーバコンピュータおよび要求側が、キャッシュするように構成されているならば、サーバコンピュータは、要求されるデータに対応するハッシュによって要求に応答することが可能である。サーバコンピュータは、要求されるハッシュによって、ハッシュを求める要求に応答することが可能である。一部の実施形態ではサーバコンピュータは、ハッシュを生成するように、および/または、ハッシュを提供することが要求されるデータを提供することより効率的でないかどうかを決定するようにさらに構成される。サーバコンピュータが、要求されるハッシュを提供することがデータ自体を提供することより効率的でないことになると決定するならば、サーバコンピュータは、代わりにデータによって、ハッシュを求める要求に応答するように構成され得る。
[0019]クライアントデバイス、クライアントピア、および/または別の要求側は、キャッシュを検索して、支所または他の場所での誰かユーザが、ハッシュに関連するデータに以前にアクセスしたかどうかを決定することが可能である。本明細書での説明ではキャッシュを検索することを引き合いに出すが、ハッシュおよび/またはデータが、支所または他の場所での、1つまたは複数のデバイスにより記憶されているかどうかを決定するために、キャッシュライブラリまたは他のデータが検索される場合もあるということが理解されるべきである。ハッシュおよび/またはデータがキャッシュ内に存在すると決定されるならば、クライアントデバイス、クライアントピア、または他の要求するデバイスは、データを記憶するデバイスにアクセスし、そのデバイスからデータを取得することが可能である。したがって、サーバコンピュータで受信されるデータを求める要求は、サーバコンピュータからデータをダウンロードする代わりに、データのローカルコピーを位置特定するために使用され得るハッシュによって応答され得る。
[0020]クライアントデバイス、クライアントピア、および/または他の要求側が、キャッシュ内のハッシュおよび/またはデータを識別しないならば、要求側は、別の要求によってサーバコンピュータに応答することが可能である。第2の要求は、サーバコンピュータに対してデータを要求することが可能である。一部の実施形態では第2の要求は、要求されるデータに対応するハッシュを求める要求を含む、または、そのハッシュを求める要求により付随される。このように要求側は、キャッシュでデータおよび/またはハッシュを記憶するように構成され得る。したがって、本明細書で開示される概念および技術の実施形態は、キャッシュを更新および/または整備することを含み得る。
[0021]支所または他の場所での、クライアントデバイス、クライアントピア、および/または他のデバイスは、サーバコンピュータにデータをアップロードする際に、キャッシュを更新するようにもまた構成され得る。したがって、キャッシングが使用可能にされた状態のクライアントデバイスまたは他のデバイスが、サーバコンピュータに更新されたファイルをアップロードするとき、クライアントデバイスまたは他のデバイスは、データに対応するハッシュを要求するように構成され得る。ハッシュが、サーバコンピュータから受信され、キャッシュおよび/または関連するキャッシュライブラリ内に記憶され得る。したがって、最初の要求側が、更新されたデータをダウンロードすることを試みるとき、データ、ハッシュを取得するための、ならびに/または、分散型キャッシュ内にデータおよびハッシュを記憶するための上記で説明された動作がなくとも、サーバコンピュータにより提供されるハッシュはキャッシュ内で見つかり得るものであり、データはローカルで取得され得る。
[0022]本明細書で説明される主題は、コンピュータシステム上のオペレーティングシステムおよびアプリケーションプログラムの実行に連関して実行するプログラムモジュールの一般的な背景状況において提示されるが、当業者であれば、他の実装形態が他のタイプのプログラムモジュールと組み合わせて実行され得るということを認識するであろう。一般的にプログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装する、ルーチン、プログラム、コンポーネント、データ構造、および他のタイプの構造を含む。さらに当業者は、本明細書で説明される主題は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースの、またはプログラマブルな家電、ミニコンピュータ、メインフレームコンピュータ等々を含む、他のコンピュータシステム構成によって実践され得るということを十分認識するであろう。
[0023]以下の詳細な説明では、参照が、本明細書の部分を形成する付随する図面に対して行われ、それらの図面には、例示として、具体的な実施形態または例が示される。次に、いくつかの図の全体を通して類似の数字が類似の要素を表す図面を参照して、キャッシュ管理に関するコンピューティングシステム、コンピュータ可読記憶媒体、およびコンピュータ実装方法論の態様が提示される。
[0024]次に図1を参照して、本明細書で提示される様々な実施形態に対する1つの動作環境100の態様が説明される。図1に示される動作環境100は、クライアントデバイス102を含む。様々な実装形態によればクライアントデバイス102は、通信ネットワーク(「ネットワーク」)104の部分として、またはネットワーク104と通信して動作するように構成され得る。様々な実装形態によればクライアントデバイス102の機能性は、例えば、デスクトップ、タブレット、またはラップトップのコンピュータシステムなどのパーソナルコンピュータ(「PC」)などの、コンピューティングデバイスにより提供される。クライアントデバイス102の機能性は、サーバコンピュータ、ハンドヘルドコンピュータ、ネットブックコンピュータ、組み込み型コンピュータシステム、携帯情報端末、携帯電話、スマートフォン、または他のコンピューティングデバイスを含む、ただしそれらに限定されない、他のタイプのコンピューティングデバイスにより提供される場合もある。このように、クライアントデバイス102は、デスクトップまたはラップトップのコンピュータなどのパーソナルコンピューティングデバイスとして本明細書で説明されるが、この実施形態は例示的であり、決して限定的であると解釈されるべきではないということが理解されるべきである。
[0025]クライアントデバイス102は、オペレーティングシステム106、ならびに、例えばキャッシュモジュール108および/または他のアプリケーションプログラムなどの、1つまたは複数のアプリケーションプログラムを実行するように構成され得る。オペレーティングシステム106は、クライアントデバイス102の動作を制御するためのコンピュータプログラムである。アプリケーションプログラムは、本明細書で説明される機能性を提供することを、オペレーティングシステム106の上部で実行するように構成される実行可能プログラムである。キャッシュモジュール108はクライアントデバイス102のコンポーネントとして例示されるが、キャッシュモジュール108は、他のスタンドアローンのデバイスもしくはそのデバイスのコンポーネントとして、または、他のスタンドアローンのデバイスもしくはそのデバイスのコンポーネント内で実施され得るということが理解されるべきである。さらに、下記の説明を参照して理解されることになるように、クライアントデバイス102に加えて、またはクライアントデバイス102の代わりに、他のデバイスがキャッシュモジュール108を実行することが可能である。このように、例示される実施形態は例示的であり、決して限定的であると解釈されるべきではない。
[0026]キャッシュモジュール108は、キャッシュ110内にデータを保存するように、およびキャッシュ110からデータを探し出す(retrieve)ように構成され得る。キャッシュ110、またはキャッシュ110の一部分は、クライアントデバイス102で記憶されるデータにより、および/または、クライアントデバイス102から離れて記憶されるデータにより実施され得る。他の実施形態では、キャッシュ110の一部分またはコンポーネントは、分散型キャッシュとして複数のデバイスにより提供される。例えば図1に示されるように、クライアントデバイス102、および、1つまたは複数のクライアントピア112A〜N(以降では集合的および/または包括的に「クライアントピア112」と呼ばれる)は、支所、法人事務所、または、広域ネットワーク(「WAN」)の他の支部もしくは一部分に関連する分散型キャッシュとして、キャッシュ110を集合的に格納するように構成され得る。このように、キャッシュモジュール108およびキャッシュ110は、クライアントデバイス102に関してのみ例示されるが、クライアントピア112の1つまたは複数が、キャッシュモジュール108を実行するように、および/または、キャッシュ110に関連するデータ記憶を提供するように構成され得るということが理解されるべきである。したがって、例示される実施形態は例示的であると理解されるべきであり、決して限定的であると解釈されるべきではない。
[0027]キャッシュモジュール108は、ネットワーク104の部分として、またはネットワーク104と通信して動作するサーバコンピュータ116によりホストされるキャッシュサービス114と通信するようにもまた構成され得る。サーバコンピュータ116は、キャッシュサービス114の実行によって、キャッシュモジュール108と通信して、キャッシュ管理に関する本明細書で説明される機能性を提供するように構成され得る。様々な実施形態によればサーバコンピュータ116は、データ118および/またはハッシュ120を記憶するようにもまた構成され得る。
[0028]サーバコンピュータ116により記憶されるデータ118は、サーバコンピュータ116によりホストされる任意のデータを含み得る。したがってデータ118は、例えばインターネットコンテンツ、イントラネットコンテンツ、ウェブページ、ウェブサイト、アプリケーション、ファイル、メディアコンテンツ、他のデータ等々を含み得る。本明細書で開示される概念および技術の様々な実装形態によれば、データ118はデータ要素を含む。本明細書では用語「データ要素」は、ファイルまたは他のデータの、チャンクまたは一部分を含むが、それらに限定されない。例えばデータ要素は、Redmond、WashingtonのMicrosoft Corporation製のMS−FSSHTTPプロトコルによって生成され得る。この実施形態は例示的であり、決して限定的であると解釈されるべきではないということが理解されるべきである。
[0029]MS−FSSHTTPプロトコルは、データ118などのファイルまたは他のデータを、ファイルおよび/または関連するメタデータに対応するバイナリデータの、不変チャンクまたは一部分に分けるために使用され得る。上記で言及されたように、これらのチャンクまたは一部分は、「データ要素」と、および/またはデータ118と本明細書では呼ばれる。データ118などのファイルが要求されるとき、サーバコンピュータ116は、個々に要求側に提供され得る、および/または、要求側により要求されるファイルもしくは他のデータ118を形成するために再集成され得る複数のデータ要素を、識別および取得することが可能である。したがって、ビデオファイルなどの単一のファイルが、単一のファイルを集合的に表す複数のデータ要素に分割され得る。このように、変更がファイルに対して行われる際に、クライアントデバイス102およびクライアントピア112は、ファイル全体をダウンロードする代わりに、変化しているデータ118にアクセスすることが可能である。
[0030]一部の他の実施形態ではサーバコンピュータ116は、データ要素を使用して、ファイルまたは他のデータ118の増分更新をサポートするように構成され得る。したがってファイルが更新されるとき、サーバコンピュータ116は、変更されているファイルの一部分を反映するデータ要素を識別するように構成され得るものであり、サーバコンピュータ116により記憶されるファイルの以前のバージョンの対応するデータ要素を置換するように構成され得る。このように、要求側デバイスでファイルを更新することは、変更されたデータ要素のみを提供することにより実現される増分更新を含み得る。ファイルの増分更新は一般的に理解されているので、ファイルを増分更新すること、および/またはMS−FSSHTTPプロトコル、および/または他のプロトコルの、これらおよび他の態様は、本明細書ではさらに詳細に説明されない。
[0031]本明細書で開示される概念および技術の一部の実施形態によれば、サーバコンピュータ116は、キャッシュ管理に関する本明細書で説明される機能性を提供するために、データ要素に対応するハッシュ120などの暗号ハッシュを生成するように、および、サーバコンピュータ116でハッシュ120を記憶するように構成される。特にキャッシュサービス114は、サーバコンピュータ116によりホストされるデータ118を求める要求を受信するように構成され得る。上記で言及されたように、データ118を求める要求は、1つまたは複数のデータ要素を求めるものに、効果的または明示的に対応し得るものである。したがって、本明細書で説明されるような「データ118」は、データ要素を含むと理解されなければならない。要求が、クライアントデバイス102および/またはクライアントピア112から受信され得る。本明細書で開示される概念および技術の様々な実施形態によれば、要求は、要求されるデータ118に対応する1つまたは複数のハッシュ120を求める要求を含む。
[0032]サーバコンピュータ116は、要求されるデータ118に関連するハッシュ120を識別するように、ならびに、クライアントデバイス102および/またはクライアントピア112などの要求するデバイスにハッシュ120を、クライアントデバイス102および/またはクライアントピア112に実際のデータ118を提供する代わりに提供するように構成され得る。クライアントデバイス102および/またはクライアントピア112は、キャッシュモジュール108を実行して、サーバコンピュータ116から受信されたハッシュ120を参照するデータを求めて、キャッシュ110および/またはキャッシュライブラリ(例示されない)を検索することが可能である。このようにキャッシュモジュール108は、クライアントデバイス102、および/または、クライアントピア112の1つが、ハッシュ120に関連するデータ118、および/または、ハッシュ120をデータ118に関連付ける記憶されたデータについて、以前にダウンロードした、アップロードした、および/または、他の方法でアクセスしたかどうかを決定するように構成され得る。
[0033]キャッシュモジュール108が、キャッシュ110またはキャッシュライブラリ内の、データ118および/またはハッシュ120を識別するならば、キャッシュモジュール108は、キャッシュ110内のデータ118にアクセスするように構成され得る。上記で言及されたようにキャッシュ110は、クライアントデバイス102、および、クライアントピア112の1つまたは複数により提供される分散型キャッシュを含み得る。したがって、キャッシュモジュール108は、クライアントデバイス102および/またはクライアントピア112の、1つまたは複数からデータ118を取得することにより、データ118にアクセスするように構成され得るということが理解されるべきである。この実施形態は例示的であり、決して限定的であると解釈されるべきではないということが理解されるべきである。
[0034]キャッシュモジュール108は、キャッシュ110を築造および整備するようにもまた構成され得る。したがって例えばキャッシュモジュール108が、ハッシュ120および/または関連するデータ118を見つけないならば、キャッシュモジュール108は、データ118を求める要求を生成し、サーバコンピュータ116に要求を送信するように構成され得る。要求に応答してサーバコンピュータ116は、クライアントデバイス102にデータ118を送信することが可能である。サーバコンピュータ116は、データ118とともにハッシュ120を送信することもまた可能であるが、このことは必ずしも実情ではない。特に図3を参照して、下記でより詳細に解説されるように、サーバコンピュータ116は、ハッシュ120を提供することがデータ118を提供することより効率的でないかどうかを決定するように、および、適切であるならば、代わりにデータ118によってハッシュ120を求める要求に応答するようにもまた構成され得る。
[0035]データ118および/またはハッシュ120を受信する際に、キャッシュモジュール108は、キャッシュ110内にデータ118および/またはハッシュ120を記憶するように構成され得る。一部の実施形態ではキャッシュモジュール108は、上記で言及されたように、キャッシュ110に関連するキャッシュライブラリ内にハッシュ120を記憶することもまた可能である。したがって、データ118を求める将来の要求側は、要求に応答してサーバコンピュータ116により識別されるハッシュ120を求めてキャッシュ110を検索する際に、キャッシュ110内でハッシュを識別し、データ118を取得することが可能である。ハッシュ120、データ118を取得するための、およびキャッシュ110を管理するための方法の例の実施形態が、図2〜4を参照して下記でより詳細に説明される。
[0036]様々な実施形態によればキャッシュモジュール108は、サーバコンピュータ116にデータ118をアップロードする際に、キャッシュ110を更新するようにもまた構成され得る。1つの実施形態ではキャッシュモジュール108は、サーバコンピュータ116にデータ118をアップロードする際に、サーバコンピュータ116に対してハッシュ120を要求し、そのハッシュ120を受信するように構成され得る。キャッシュモジュール108は、キャッシュ110内に、アップロードされたデータ118および受信されたハッシュ120を記憶するようにもまた構成され得る。したがって、本明細書で開示される概念および技術の一部の実施形態は、創出の際に、キャッシュ110内にデータ118および/またはハッシュ120を記憶し、そのことにより、最初の後続の要求側がデータ118をダウンロードしキャッシュ110内に記憶することを不必要にすることを含む。したがって一部の実施形態は、ラウンドトリップの数が一部の事例では同じ、またはより大きい場合があるにもかかわらず、支所とサーバコンピュータ116との間の通信により消費される帯域幅をさらに低減するために使用され得る。この実施形態は例示的であり、決して限定的であると解釈されるべきではないということが理解されるべきである。
[0037]本明細書で説明される概念および技術によれば、サーバコンピュータ102は、支所または他の場所での、クライアントデバイス102およびクライアントピア112と通信するように構成され得る。クライアントデバイス102、および、クライアントピア112の1つまたは複数は、キャッシュモジュール108を実行するように構成され得る。キャッシュモジュール108は、キャッシュ110および/またはキャッシュライブラリを、生成および/または整備するように実行可能であり得る。キャッシュ110は、サーバコンピュータ116からダウンロードされる、および/または、サーバコンピュータ116にアップロードされるデータ118を記憶するために使用され得るものであり、クライアントデバイス102およびクライアントピア112により提供される分散型キャッシュであり得る。
[0038]サーバコンピュータ116は、サーバコンピュータ116で記憶されるデータ118を求める要求を受信するように構成され得る。要求は、データ118に対応するハッシュ120を求める要求を含み得る、および/または、そのハッシュ120を求める要求により付随され得る。サーバコンピュータ116は、上記で解説されたように、要求されるデータ118に対応するハッシュ120によって要求に応答することを、この応答が、データ118を提供することより効率的でないことにならない限り、行うことが可能である。クライアントデバイス102は、キャッシュ110を検索して、支所または他の場所でのいずれかのデバイスが、ハッシュ120に関連するデータ118に以前にアクセスしたかどうかを決定することが可能である。ハッシュ120および/またはデータ118がキャッシュ110内に存在すると決定されるならば、クライアントデバイス102は、データ118を記憶するデバイスにアクセスし、データ118を取得することが可能である。したがって、サーバコンピュータ116で受信されるデータ118を求める要求は、サーバコンピュータ116からデータ118をダウンロードする代わりに、データ118のローカルコピーを位置特定するためにクライアントデバイス102により使用され得るハッシュ120によって応答され得る。
[0039]クライアントデバイス102が、キャッシュ110内のハッシュ120および/またはデータ118を識別しないならば、クライアントデバイス102は、データ118を求める要求を生成し、サーバコンピュータ116に要求を送信することが可能である。一部の実施形態では第2の要求は、要求されるデータ118に対応するハッシュ120を求める要求を含む、または、そのハッシュ120を求める要求により付随される。このようにクライアントデバイス102は、キャッシュ110でデータ118および/またはハッシュ120を記憶して、キャッシュ110を整備および/または管理するように構成され得る。様々な実施形態によればクライアントデバイス102は、サーバコンピュータ116にデータ118をアップロードする際に、キャッシュ110を更新するようにもまた構成され得る。クライアントデバイス102は、クライアントデバイス102によりアップロードされるデータ118に対応するハッシュ120を要求するように構成され得る。ハッシュ120が、サーバコンピュータ116から受信され、キャッシュ110内に記憶され得る。したがって、後続の要求側が、サーバコンピュータ116からデータ118をダウンロードすることを試み、サーバコンピュータ116からハッシュ120を受信するとき、要求側は、キャッシュ110内のハッシュ120を識別し、ローカルでデータ118を取得することが可能である。
[0040]図1は、1つのクライアントデバイス102、1つのネットワーク104、複数のクライアントピア112、および、1つのサーバコンピュータ116を例示する。これに対して、動作環境100の一部の実装形態は、複数のクライアントデバイス102、複数のネットワーク104、単一のクライアントピア112、および/または、複数のサーバコンピュータ116を含むということが理解されるべきである。このように、例示される実施形態は例示的であると理解されるべきであり、決して限定的であると解釈されるべきではない。
[0041]次に図2に移り、統合型キャッシュを管理するための方法200の態様が、例示的な実施形態によって詳細に説明される。本明細書で開示される方法の動作は必ずしも何らかの格別の順序で提示されるわけではないということ、および、代替的な順序での動作の一部またはすべての実行が可能であり企図されるということが理解されるべきである。動作は、説明および例示を容易にするために、明示される順序で提示されている。動作は、添付される特許請求の範囲の範囲から逸脱することなく、追加され、省略され、および/または、同時に実行される場合がある。
[0042]例示される方法は、任意の時間に終了され得るものであり、それらの方法が、それぞれそっくりそのまま実行される必要はないということもまた理解されるべきである。方法の一部もしくはすべての動作、および/または、実質的に同等の動作は、本明細書で定義されるような、コンピュータ記憶媒体上に含まれるコンピュータ可読命令の実行により実行され得る。本説明および特許請求の範囲において使用されるような、用語「コンピュータ可読命令」およびその異形は、ルーチン、アプリケーション、アプリケーションモジュール、プログラムモジュール、プログラム、コンポーネント、データ構造、アルゴリズム等々を含むように、本明細書では拡張的に使用される。コンピュータ可読命令は、シングルプロセッサまたはマルチプロセッサのシステム、ミニコンピュータ、メインフレームコンピュータ、パーソナルコンピュータ、ハンドヘルドコンピューティングデバイス、マイクロプロセッサベースのプログラマブルな家電、それらの組み合わせ等々を含む、様々なシステム構成上で実装され得る。
[0043]このように、本明細書で説明される論理動作は、(1)コンピューティングシステム上で走る一連のコンピュータ実装作用もしくはプログラムモジュールとして、および/または、(2)コンピューティングシステム内部の相互接続された機械論理回路もしくは回路モジュールとして実装されるということが十分認識されるべきである。実装形態は、コンピューティングシステムの性能および他の要件によって決まる選定の問題である。したがって、本明細書で説明される論理動作は、状態、動作、構造的デバイス、作用、またはモジュールと様々に呼ばれる。これらの動作、構造的デバイス、作用、およびモジュールは、ソフトウェアで、ファームウェアで、専用デジタル論理、およびそれらの任意の組み合わせで実装され得る。
[0044]本開示の概念を例示および説明する目的で、方法200は、キャッシュモジュール108の実行によってクライアントデバイス102により実行されるとして説明される。この実施形態は例示的であり、決して限定的であるとみなされるべきではないということが理解されるべきである。特に、クライアントデバイス102を含む、ただしそれに限定されない様々なデバイスが、キャッシュモジュール108を含む、ただしそれに限定されない様々なソフトウェアモジュールの実行によって、方法200に関して本明細書で説明される機能性を提供するように構成され得る。
[0045]方法200は動作202で始まり、クライアントデバイス102は、サーバコンピュータ116によりホストされるデータ116を求める要求を受信する。データ116を求める要求は、ディレクトリ内のファイルにたどり着くことを含む、ただしそれに限定されない、ファイルにアクセスすることのための、データ116に関連するリンクもしくは他の識別子の選択物を検出するための、および/または、他の方法でデータ116を求める要求を受信するための、クライアントデバイス102で受信される入力を含み得る。動作202で要求されるデータ116は、ウェブページ、ウェブアプリケーション、ウェブサイト、ドキュメント、テキスト、スプレッドシート、メールデータ、ビデオ、音声、もしくは他のメディアコンテンツ、他のデータ、および/またはそれらの組み合わせを含む、ただしそれらに限定されない、ほぼ任意のタイプのデータに対応し得る。
[0046]動作202から、方法200は動作204に進み、クライアントデバイス102は、キャッシングが使用可能にされているかどうかを決定する。一部の実施形態では、キャッシングが使用可能にされているかどうかを決定することは、ユーザ、アドミニストレータ、または他の権限を与えられたユーザがキャッシュモードを使用可能にしているかどうかを決定することを含む。このように、一部の実施形態では、動作204の機能性は、クライアントデバイス102での「加入」または「脱退」動作に対応し得るものであり、クライアントデバイス102は、キャッシュモードを使用することに決め(加入)、またはキャッシュモードを使用しないことに決める(脱退)。このように一部の実施形態では動作204は、クライアントデバイス102およびサーバコンピュータ116の両方がハッシュ120を使用することに同意するかどうかを決定することを含む。クライアントデバイス102またはサーバコンピュータ116のいずれかがハッシュ120を使用することを拒否するならば、クライアントデバイス102は、ハッシュモードが使用可能にされていないと決定することが可能であり、代わりに実際のデータ118を共有することに依拠することが可能である。他の実施形態では、キャッシングが使用可能にされているかどうかを決定することは、ソフトウェアの設定値または機能性がキャッシュモードの使用を含むかどうかを決定することを含む。1つの企図される実施形態では、クライアントデバイス102は、動作204で、クライアントデバイス102および/またはサーバコンピュータ116が、Redmond、WashingtonのMicrosoft Corporation製のオペレーティングシステムのWINDOWS(登録商標)およびWINDOWS(登録商標) SERVER COMPUTERの一群の一部の構成物により提供される、BRANCH CACHEサービスを提供するように構成されているかどうかを決定することが可能である。これらの実施形態は例示的であり、決して限定的であると解釈されるべきではないということが理解されるべきである。
[0047]クライアントデバイス102が、動作204で、キャッシングが使用可能にされていないと決定するならば、方法200は動作206に進む。動作206でクライアントデバイス102は、サーバコンピュータ116からデータ118を取得する。したがって、動作206でクライアントデバイス102は、従前の様式でデータ118を要求することが可能であるということが十分認識され得る。同様に、図2には示されないが、サーバコンピュータ116は従前の様式で要求に応答することが可能である。
[0048]クライアントデバイス104が、動作204で、キャッシングが使用可能にされていると決定するならば、方法200は動作208に進む。動作208でクライアントデバイス102は、サーバコンピュータ116に対してハッシュ120を求める要求を生成する。ハッシュ120を求める要求は、データ118を求める要求に含まれ得る。したがってクライアントデバイス102は、データ118が要求されるということ、および、ハッシュ120が、入手可能であるならば提供されるべきであるということをサーバコンピュータ116に効果的に通知する、フラグ、フィールド、または他の指示子を伴って、データ118を要求するように構成され得る。一部の他の実施形態ではクライアントデバイス102は、ハッシュ120を求める要求を生成することが可能であり、サーバコンピュータ116は、要求に応答して提供されるべきであるのが、ハッシュ120であるか、それともデータ118であるかを決定することが可能である。提供されるべきであるのが、データ118であるか、それともハッシュ120であるかを決定するための、サーバコンピュータ116の機能性の一部の態様が、図3を参照してより詳細に下記で説明される。
[0049]動作208から、方法200は動作210に進み、クライアントデバイス102は、動作208で要求されるハッシュ120がサーバコンピュータ116により返送されるかどうかを決定する。したがってクライアントデバイス102は、動作210で、要求されるハッシュ120がサーバコンピュータ116で入手可能であったか、それとも入手可能でなかったかを決定することが可能である。クライアントデバイス102が、動作210で、ハッシュ120がサーバコンピュータ116により返送されないと決定するならば、方法200は、上記で説明された動作206に進むことが可能である。したがってクライアントデバイス102は、ハッシュ120がサーバコンピュータ116により返送されなかったと決定することに応答して、サーバコンピュータ116に対してデータ118を要求するように構成され得る。このようにクライアントデバイス102は、ハッシュ120と比べて、クライアントデバイス102にデータ118を提供することがより効率的であるとサーバコンピュータ116が決定したかどうかを決定するように構成され得る。このことは、図3を参照して下記でより詳細に解説される。
[0050]クライアントデバイス102が、動作210で、ハッシュ120がサーバコンピュータ116により返送されると決定するならば、方法200は動作212に進む。動作212でクライアントデバイス102は、キャッシュ110に、返送されたハッシュ120を追加する。したがってクライアントデバイス102は、サーバコンピュータ116からデータを受信することに応答して、キャッシュ110を整備および/または更新するように構成され得る。このようにキャッシュ110は、データ118がサーバコンピュータ116から探し出されるときに更新され得る。
[0051]動作212から、方法200は動作214に進み、クライアントデバイス102は、キャッシュ110を調査して、キャッシュ110が、動作210で取得されたハッシュ120に対応するデータ118を含むかどうかを決定する。このように、クライアントデバイス102は、動作214で、キャッシュ110を共有または提供する、クライアントピア112または他のデバイスの、1つまたは複数が、動作202で要求されたデータ118を以前に探し出したかどうかを決定することが可能であるということが十分認識され得る。
[0052]クライアントデバイス102が、動作214で、動作210で取得されたハッシュ120に対応するデータ118が入手可能でないと決定するならば、方法200は動作216に進むことが可能である。動作216でクライアントデバイス102は、サーバコンピュータ116に対してハッシュ120に対応するデータ118を求める新しい要求を生成することが可能である。したがってクライアントデバイス102は、キャッシュ110を使用する、またはキャッシュ110にアクセスする、クライアントデバイス102、クライアントピア112、および/または他のデバイスにより、データ118が以前にアクセスまたはダウンロードされなかったと決定することが可能である。このようにクライアントデバイス102は、データ118をダウンロードし、キャッシュ110内にデータを記憶することが可能である。
[0053]動作216から、方法200は動作218に進むことが可能である。動作218でクライアントデバイス102は、上記で述べられたように、キャッシュ110内にデータ118を記憶することが可能である。クライアントデバイス102は、キャッシュライブラリ内に、および/またはキャッシュ110内に、動作210で受信されたハッシュ120を記憶することもまた可能である。このように、クライアントデバイス102または他のデバイスが、方法200の後続の繰り返しにおいてハッシュ120を求めてキャッシュ110を検索するとき、データ118は、サーバコンピュータ116からデータ118を取得する代わりに、位置特定され使用され得る。
[0054]データ118の特定のインスタンスがサーバコンピュータ116に対して要求される最初の回に、待ち時間および/または非効率性がクライアントコンピュータ102により経験され得るということが、図2の上記の説明から十分認識され得る。これに対して、データ118を求める後続の要求において、キャッシュ管理に関する本明細書で開示される概念および技術が、本明細書で説明されるように、サーバコンピュータ116と、クライアントデバイス102またはクライアントピア112の、1つまたは複数との間で、より少ない帯域幅または他の資源を使用し、より少ない待ち時間を伴って、データ118を取得する際の改善された効率を現実化するために使用され得る。
[0055]特に動作214で、クライアントデバイス102が、動作210で取得されたハッシュ120に対応するデータ118が入手可能であると決定するならば、方法200は動作220に進む。動作220でクライアントデバイス102は、キャッシュ110からデータ118を取得する。したがってクライアントデバイス102は、クライアントピア112などのローカルピアからデータ118を取得することが可能であり、したがって、サーバコンピュータ116からデータ118をダウンロードする必要がない場合がある。本明細書で開示される概念および技術が、支所または他の同様の場所などの企業地点に拡大されるとき、キャッシュ管理に関する本明細書で開示される概念および技術を使用する影響力が十分認識され得る。
[0056]1つの企図される例では、プレゼンテーションが、支所に関連するユーザにより修正され、様々なピアによる配布および/またはダウンロードのためにサーバコンピュータ116に保存される場合がある。この例では、支所は25人のユーザを含み、プレゼンテーションに対する修正は、20メガバイトのサイズを有するビデオファイルの埋め込みを含み得る。したがって、支所でのユーザのすべてがプレゼンテーションの自分のバージョンを更新するならば、最低量で500メガバイトの帯域幅が消費されることになる。本明細書で開示される概念および技術の様々な実施形態によれば、これらのユーザは代わりに、サーバコンピュータ116にデータを元々アップロードした、支所でのピアからデータを取得することが可能である。ハッシュ120のみがサーバコンピュータ116とピアとの間で送信されているので、相当により少ない帯域幅が使用され得る。
[0057]上記の例では、アップロードするピアは、図4を参照して下記でより詳細に解説されるように、キャッシュ110内にデータ118を、アップロードされるときに記憶することが可能であるので、25のピアのどれも、サーバコンピュータ116からビデオデータをダウンロードすることを必要とされない場合がある。このように、25人のユーザは代わりに、サーバコンピュータ116からハッシュ120を取得することが可能であり、引き続いてキャッシュ110からデータ118を取得することが可能である。一般的に理解されているように、ハッシュ120は、メガバイトではなくビットまたはバイトの観点からサイズ設定され得る。このように、この例での、キャッシュ110からビデオデータの25のインスタンスをダウンロードするために情報を交換するときの、ピアとサーバコンピュータ116との間の総帯域幅は、500メガバイトを超える状態から数百キロバイトに低減され得る。このように、キャッシュ管理に関する本明細書で開示される概念および技術は、この例での支所に関連する帯域幅消費の、および結果として運転費の相当な低減を現実化するのに役立ち得るということが十分認識され得る。
[0058]動作220から、方法200は動作222に進む。同様に方法200は、動作206から動作222に進むことが可能である。方法200は、動作218から動作222に進むこともまた可能である。方法200は動作222で終了する。
[0059]次に図3に移り、統合型キャッシュを使用してデータを提供するための方法300の態様が、例示的な実施形態によって提示される。本開示の概念を例示および説明する目的で、方法300は、本明細書で説明されるキャッシュサービス114を提供するためのコンピュータ実行可能命令の実行によってサーバコンピュータ116により実行されるとして説明される。この実施形態は例示的であり、決して限定的であるとみなされるべきではないということが理解されるべきである。特に、サーバコンピュータ116を含む、ただしそれに限定されない様々なデバイスが、キャッシュサービス114を含む、ただしそれに限定されない様々なソフトウェアモジュールの実行によって、方法300に関して本明細書で説明される機能性を提供するように構成され得る。
[0060]方法300は動作302で始まり、サーバコンピュータ116は、ハッシュ120を求める要求を受信する。一部の実施形態では、動作302で受信される要求は、図2の動作208を参照して上記で説明されたものなどの、クライアントデバイス102により生成される要求に対応し得るが、必ずしもそうではない。一部の実施形態では、クライアントデバイス102または他のデバイスは、ハッシュ120を求める明示的な要求によってハッシュ120を要求し、他の実施形態ではハッシュ120は、データ118を求める要求の部分として要求される。このように、動作302で受信される要求は、ハッシュ120を要求するためのフラグまたは他の機能性を伴う、データ118を求める要求を含み得る。
[0061]動作302から、方法300は動作304に進み、サーバコンピュータ116は、動作302で要求されるハッシュ120が送出されるべきであるかどうかを決定する。様々な実施形態によればサーバコンピュータ116は、例えば、ハッシュ120のサイズ、ハッシュ120に関連するデータ118のサイズ、(ハッシュがサーバコンピュータ116によりまだ記憶されていない場合の)ハッシュ120を生成するために必要とされる時間、および/または他の情報を決定することが可能である。このようにサーバコンピュータ116は、データ118および/またはハッシュ120のサイズだけでなく、データ118および/またはハッシュ120を提供するために必要とされる時間もまた考慮することが可能である。
[0062]サーバコンピュータ116は、ハッシュ120を生成および/または提供することに関連するサイズおよび時間を、データ118を提供することに対して比較することが可能である。この比較および/または他の情報に基づいて、サーバコンピュータ116は、ハッシュ120を提供することがより効率的であるか、それともデータ118を提供することがより効率的であるかを決定するように構成され得る。さらに上記で言及されたように、ハッシュ120は、クライアントデバイス102に提供される場合、データ118を求めてキャッシュ110を検索するために使用されることになる。したがってサーバコンピュータ116は、データ118がキャッシュ110で記憶されていない場合に、クライアントデバイス102とサーバコンピュータ116との間で複数の通信が必要とされ得るということを考慮に入れることもまた可能である。例えば、データ118がサイズにおいてハッシュ120のサイズに近いならば、サーバコンピュータ116は、データ118を提供することがより効率的になるという想定に基づいて、ハッシュ120の代わりに、またはハッシュ120に加えて、データ118を提供するように構成され得る。サーバコンピュータ116は、ハッシュ120が将来提供されることになるかどうかを指示するための、データ118に関連するデータまたはフラグを記憶するようにもまた構成され得る。
[0063]サーバコンピュータ116が、動作304で、ハッシュ120が送出されるべきでないと決定するならば、方法300は動作306に進む。動作306でサーバコンピュータ116は、ハッシュ120の代わりにクライアントデバイス102にデータ118を送出することが可能である。上記で述べられたように、サーバコンピュータ116は、所望であれば、ハッシュ120およびデータ118がキャッシュ110で記憶され得るように、データ118とともにハッシュ120を送出することもまた可能であるが、このことは必ずしも実情ではない。
[0064]サーバコンピュータ116が、動作304で、ハッシュ120が送出されるべきであると決定するならば、方法300は動作308に進む。動作308でサーバコンピュータ116は、クライアントデバイス102にハッシュ120を送出することが可能である。動作308から、方法300は動作310に進む。方法300は、動作306から動作310に進むこともまた可能である。方法300は動作310で終了する。
[0065]次に図4に移り、キャッシュサービスにデータをアップロードするための方法400の態様が、例示的な実施形態によって提示される。本開示の概念を例示および説明する目的で、方法400は、キャッシュモジュール108の実行によってクライアントデバイス102により実行されるとして説明される。この実施形態は例示的であり、決して限定的であるとみなされるべきではないということが理解されるべきである。特に、クライアントデバイス102を含む、ただしそれに限定されない様々なデバイスが、キャッシュモジュール108を含む、ただしそれに限定されない様々なソフトウェアモジュールの実行によって、方法400に関して本明細書で説明される機能性を提供するように構成され得る。
[0066]方法400は動作402で始まり、クライアントデバイス102は、クライアントデバイス102で生成されたデータ118のアップロードが要求または着手されたということを、検出または決定する。このように例えばクライアントデバイス102は、例えば、サーバコンピュータ116にファイルまたは他のタイプのデータ118を保存することなどの、クライアントデバイス102からのファイル転送の始動を検出することが可能である。様々な実施形態によればクライアントデバイス102は、データ118の転送を検出するように構成され得る。一部の他の実施形態ではクライアントデバイス102は、データ118がアップロードされる、または他の方法で転送されるとき、キャッシュ管理に関する本明細書で説明される機能性を使用するための、クライアントデバイス102に関連するユーザに対しての選択肢を提供するように構成され得る。したがって動作402は、図4を参照して本明細書で説明される機能性を提供するために、選択肢の選択物または他の機能性を受信することを含み得る。
[0067]動作402から、方法400は動作404に進み、クライアントデバイス102は、キャッシングが使用可能にされているかどうかを決定する。一部の実施形態では、動作404に示されるような、キャッシングが使用可能にされているかどうかを決定することは、図2の動作404に関して上記で説明された機能性と同様であり得る、または同一でさえあり得るが、必ずしもそうではない。クライアントデバイス102が、動作404で、キャッシングが使用可能にされていないと決定するならば、方法400は動作406に進む。動作406でクライアントデバイス102は、サーバコンピュータ116に動作402で生成されたデータ118をプッシュすることが可能である。このように、クライアントデバイス102が、キャッシングが使用可能にされていないと決定するならば、データ118が、所望であれば従前の様式でサーバコンピュータ116に送信され得る。
[0068]クライアントデバイス102が、動作404で、キャッシングが使用可能にされていると決定するならば、方法400は動作408に進む。動作408でクライアントデバイス102は、データ118に対応するハッシュ120を生成し返送するための要求とともに、サーバコンピュータ116に動作402で生成されたデータ118をプッシュする。ハッシュ120を返送するための要求は、データ118を記憶するための要求に関連するフラグまたは他の指示子としてデータ118とともに含まれ得る。一部の他の実施形態では、ハッシュ120を求める要求は、別々の要求としてクライアントデバイス102により生成され得る。要求がサーバコンピュータ116にどのように送出されるかにかかわらず、サーバコンピュータ116は、ハッシュ120を求める要求を認識し、要求に応答してハッシュ120を生成するように構成され得る。
[0069]動作408から、方法400は動作410に進み、クライアントデバイス102は、サーバコンピュータ116からハッシュ120を受信する。動作410から、方法400は動作412に進み、クライアントデバイス102は、キャッシュ110に、動作408で受信されたハッシュ120を追加する。上記で解説されたように、ハッシュ120、ならびに/または、ハッシュ120をデータ118に関連付けるための、および/もしくは、データ118が記憶される場所を識別するためのデータもまた、キャッシュ110に関連するキャッシュライブラリ内に記憶され得る。したがって、クライアントデバイス102は、図2を参照して上記で説明されたように、サーバコンピュータ116からのデータ118の最初のダウンロードの間とともに、またはそのダウンロードの間の代わりに、データ118の創出の間にキャッシュ110を整備するように構成され得るということが十分認識され得る。
[0070]このように、本明細書で開示される概念および技術の一部の実施形態は、上記で説明されたように、データ118のアップロードの間に、データ118およびハッシュ120によってキャッシュ110を更新し、そのことにより、データ118の最初のダウンロード、ハッシュ120を求める要求、ならびに/または、データ118および/もしくはハッシュの記憶を不要にすることが可能であるということが十分認識され得る。動作412から、方法400は動作414に進む。方法400は、動作406から動作414に進むこともまた可能である。方法400は動作414で終了する。
[0071]上記の説明ではクライアントデバイス102からのデータ118を求める要求を引き合いに出したが、この実施形態は、本明細書で開示される概念および技術の単なる1つの例であるということが理解されるべきである。特に一部の実施形態ではクライアントデバイス102は、データ118を取得および/またはキャッシュするためのプロキシデバイスであり得る。したがって、一部の実施形態ではクライアントデバイス102は、一部の背景状況においてサービスとして機能し得る。このように、図1を参照して上記で言及されたように、クライアントデバイス102の機能性は、現実または仮想のサーバコンピュータにより提供され得る。したがって、説明された実施形態は例示的であると理解されるべきであり、決して限定的であると解釈されるべきではない。
[0072]図5は、キャッシュ管理に関する本明細書で説明されるソフトウェアコンポーネントを実行することが可能なデバイスに関する、例示的なコンピュータ・アーキテクチャ500を例示する。したがって、図5に例示されるコンピュータ・アーキテクチャ500は、サーバコンピュータ、携帯電話、PDA、スマートフォン、デスクトップコンピュータ、ネットブックコンピュータ、タブレットコンピュータ、および/またはラップトップコンピュータに関するアーキテクチャを例示する。コンピュータ・アーキテクチャ500は、本明細書で提示されるソフトウェアコンポーネントの任意の態様を実行するために利用され得る。
[0073]図5に例示されるコンピュータ・アーキテクチャ500は、中央処理装置502(「CPU」)、ランダムアクセスメモリ506(「RAM」)およびリードオンリーメモリ(「ROM」)508を含むシステムメモリ504、ならびに、CPU502にメモリ504を結合するシステムバス510を含む。スタートアップの間などに、コンピュータ・アーキテクチャ500内部の要素間で情報を転送するのに役立つ基本ルーチンを包含する基本入出力システムが、ROM508内に記憶される。コンピュータ・アーキテクチャ500は、オペレーティングシステム106およびキャッシュモジュール108を記憶するための大容量記憶デバイス512をさらに含む。図5には示されないが、大容量記憶デバイス512は、所望であれば、キャッシュ110、キャッシュサーバコンピュータ114、データ118、ハッシュ120、および/または他のデータを記憶するようにもまた構成され得る。
[0074]大容量記憶デバイス512は、バス510に接続される(示されない)大容量記憶コントローラによってCPU502に接続される。大容量記憶デバイス512およびその関連するコンピュータ可読媒体は、コンピュータ・アーキテクチャ500に不揮発性記憶を提供する。本明細書に包含されるコンピュータ可読媒体の説明では、ハードディスクまたはCD−ROMドライブなどの大容量記憶デバイスを引き合いに出すが、コンピュータ可読媒体は、コンピュータ・アーキテクチャ500によりアクセスされ得る、任意の利
用可能なコンピュータ記憶媒体または通信媒体であり得るということが、当業者により十分認識されるはずである。
[0075]通信媒体は、搬送波または他の移送機構などの変調されたデータ信号内の、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを含み、任意の配信媒体を含む。用語「変調されたデータ信号」は、信号であって、その特性の1つまたは複数が、信号内に情報を符号化するような様式で変更または設定された信号を意味する。例として、および限定としてではなく、通信媒体は、有線ネットワークまたは直接有線接続などの有線媒体、ならびに、音響、RF、赤外線、および他のワイヤレス媒体などのワイヤレス媒体を含む。上記の任意のものの組み合わせもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
[0076]例として、および限定としてではなく、コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報の記憶のために、任意の方法または技術で実装される、揮発性および不揮発性の、リムーバブルおよび非リムーバブルの媒体を含み得る。例えばコンピュータ媒体は、所望の情報を記憶するために使用され得る、および、コンピュータ・アーキテクチャ500によりアクセスされ得る、RAM、ROM、EPROM、EEPROM、フラッシュメモリ、もしくは他のソリッドステートメモリ技術、CD−ROM、デジタル・バーサタイル・ディスク(「DVD」)、HD−DVD、BLU−RAY(登録商標)、もしくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶デバイス、または任意の他の媒体を含むが、それらに限定されない。特許請求の範囲のために、語句「コンピュータ記憶媒体」およびその変形形態は、本質的に、波、信号、ならびに/または、他の一時的な、および/もしくは無形の通信媒体を含まない。
[0077]様々な実施形態によればコンピュータ・アーキテクチャ500は、ネットワーク104などのネットワークによるリモートコンピュータへの論理接続を使用して、ネットワーキングされた環境で動作することが可能である。コンピュータ・アーキテクチャ500は、バス510に接続されるネットワーク・インタフェース・ユニット514によって、ネットワーク104に接続することが可能である。ネットワーク・インタフェース・ユニット514は、他のタイプのネットワークおよびリモートコンピュータシステム、例えばクライアントピア112および/または他のデバイスに接続するためにもまた利用され得るということが十分認識されるべきである。コンピュータ・アーキテクチャ500は、(図5には示されない)キーボード、マウス、または電子スタイラスを含む、いくつかの他のデバイスからの入力を受信および処理するための入出力コントローラ516もまた含み得る。同様に入出力コントローラ516は、(やはり図5には示されない)表示画面、プリンタ、または他のタイプの出力デバイスに出力を提供することが可能である。
[0078]本明細書で説明されるソフトウェアコンポーネントは、CPU502内にロードされ実行されるとき、CPU502および全体的なコンピュータ・アーキテクチャ500を、汎用コンピューティングシステムから、本明細書で提示される機能性を容易にするようにカスタマイズされた専用コンピューティングシステムに転換することが可能であるということが十分認識されるべきである。CPU502は、個々に、または集合的に任意の数の状態をとり得る、任意の数のトランジスタまたは他の個別回路要素から構築され得る。より具体的にはCPU502は、本明細書で開示されるソフトウェアモジュール内部に包含される実行可能命令に応答して、有限状態機械として動作し得る。これらのコンピュータ実行可能命令は、CPU502が状態間をどのように遷移するかを指定し、そのことにより、CPU502を構成するトランジスタまたは他の個別ハードウェア要素を転換することにより、CPU502を転換することが可能である。
[0079]本明細書で提示されるソフトウェアモジュールを符号化することが、本明細書で提示されるコンピュータ可読媒体の物理構造を転換する場合もある。物理構造の具体的な転換は、本説明の異なる実装形態において様々な要因によって決まり得るものである。そのような要因の例は、コンピュータ可読媒体を実装するために使用される技術、コンピュータ可読媒体が1次記憶装置として特徴付けられるか、それとも2次記憶装置として特徴付けられるか等々を含み得るが、それらに限定されない。例えばコンピュータ可読媒体が、半導体ベースのメモリとして実装されるならば、本明細書で開示されるソフトウェアは、半導体メモリの物理状態を転換することによりコンピュータ可読媒体上で符号化され得る。例えばソフトウェアは、半導体メモリを構成するトランジスタ、コンデンサ、または他の個別回路要素の状態を転換することが可能である。ソフトウェアは、そのようなコンポーネントの物理状態を、それらのコンポーネント上にデータを記憶するために転換することもまた可能である。
[0080]別の例として、本明細書で開示されるコンピュータ可読媒体は、磁気または光学の技術を使用して実装され得る。そのような実装形態では、本明細書で提示されるソフトウェアは、磁気または光学の媒体の物理状態を、ソフトウェアがそれらの媒体内に符号化されるときに転換することが可能である。これらの転換は、所与の磁気媒体内部の特定の場所の磁気特性を変えることを含み得る。これらの転換は、所与の光学媒体内部の特定の場所の物理的な特徴または特性を変えて、それらの場所の光学特性を変更することもまた含み得る。物理媒体の他の転換が、本考察を容易にするためにのみ提供される前述の例によって、本説明の範囲および趣旨から逸脱することなく可能である。
[0081]上記に鑑みて、多くのタイプの物理的な転換が、本明細書で提示されるソフトウェアコンポーネントを記憶および実行するために、コンピュータ・アーキテクチャ500において行われるということが十分認識されるべきである。コンピュータ・アーキテクチャ500は、当業者に知られている、ハンドヘルドコンピュータ、組み込み型コンピュータシステム、携帯情報端末、および他のタイプのコンピューティングデバイスを含む、他のタイプのコンピューティングデバイスを含み得るということもまた十分認識されるべきである。コンピュータ・アーキテクチャ500が、図5に示されるコンポーネントのすべてを含むとは限らない場合がある、図5に明示的に示されない他のコンポーネントを含む場合がある、または、図5に示されるものとは完全に異なるアーキテクチャを利用する場合があるということもまた企図される。
[0082]前述のことに基づいて、キャッシュ管理に関する技術が本明細書で開示されたということが十分認識されるべきである。本明細書で提示された主題は、コンピュータの構造的特徴、方法論的および転換的な作用、具体的な計算機、ならびにコンピュータ可読媒体に対しての具体的な文言で説明されたが、添付される特許請求の範囲において定義される発明は、本明細書で説明された具体的な特徴、作用、または媒体に必ずしも限定されないということが理解されるべきである。むしろ具体的な特徴、作用、および媒体は、特許請求の範囲を実装する例の形式として開示されるものである。
[0083]上記で説明された主題は、単に例示として提供されるものであり、限定的であると解釈されるべきではない。様々な修正および変更が、例示および説明された、例の実施形態および応用例にしたがうことなく、ならびに、以下の特許請求の範囲において記載される本発明の真の趣旨および範囲から逸脱することなく、本明細書で説明された主題に対して行われ得る。

Claims (8)

  1. データのキャッシュを管理するための、サーバが実行する方法であって、
    ハッシュを求める要求をクライアントデバイスから受けるステップと、
    キャッシングが前記クライアントデバイスにおいて使用可能であると、ユーザ選択可能なキャッシュモードが使用可能であることに基づいて判定するステップと、
    前記ハッシュを送るべきか前記ハッシュに対応するデータを送るべきかを前記ハッシュが前記サーバに記憶されていない場合に前記ハッシュを生成するのに必要な時間と、前記データが前記クライアントデバイスにおけるキャッシュに記憶されていない場合に前記クライアントデバイスと前記サーバとの間で必要な通信の回数と、ハッシュのみを前記クライアントデバイスに提供すべきであるとのフラグまたは他の指示とのうちの少なくとも1つに基づき判定するステップと、
    前記ハッシュを送るべきと判定した場合に、前記ハッシュを前記クライアントデバイスに送るステップと、
    前記データを送るべきと判定した場合に、前記データを前記クライアントデバイスに送るステップと
    を含む方法。
  2. 請求項1に記載の方法であって、前記クライアントデバイスからの前記ハッシュを求める前記要求は、ハッシュを送るべきであることを示すフラグを含む、方法。
  3. 請求項2に記載の方法であって、
    ハッシュを送るべきであることを示す前記フラグが存在する場合に、前記ハッシュを送るべきか前記ハッシュに対応するデータを送るべきかを判定する前記ステップに進むステップと、
    ハッシュを送るべきであることを示す前記フラグが存在しない場合に、前記データを前記クライアントデバイスに送るステップと
    を更に含む方法。
  4. 請求項1に記載の方法であって、前記ハッシュを送るべきか前記ハッシュに対応するデータを送るべきかを判定する前記ステップは、
    前記ハッシュのサイズを前記データのサイズと比較するステップと、
    前記ハッシュを送るよりも効率的である場合に、前記データを送るべきと判定するステップと、
    前記データを送るよりも効率的である場合に、前記ハッシュを送るべきと判定するステップと、
    を含む、方法。
  5. 請求項に記載の方法であって、前記データのサイズが前記ハッシュのサイズである場合に、前記データを送るステップをさらに含む方法。
  6. 請求項1に記載の方法であって、前記ハッシュを送るべきか前記ハッシュに対応するデータを送るべきかを判定する前記ステップは、
    前記ハッシュが前記サーバに記憶されていない場合に、前記ハッシュを生成するのに必要な時間を求めるステップと、
    前記データを送るよりも時間的に効率的である場合に、前記ハッシュを生成し、前記ハッシュを送るべきと判定するステップと、
    前記ハッシュを生成して送るよりも時間的に効率的である場合に、前記データを送るべきと判定するステップと
    を含む、方法。
  7. 請求項1に記載の方法であって、前記ハッシュを送るべきか前記ハッシュに対応するデータを送るべきかを判定する前記ステップは、
    前記データが前記キャッシュに記憶されていない場合に、前記クライアントデバイスと前記サーバとの間で必要な通信の回数を求めるステッ
    を含む、方法。
  8. 請求項に記載の方法であって、前記クライアントデバイスからの将来の要求に応答して前記ハッシュを提供すべきことを示すためのフラグを記憶するステップをさらに含む方法。
JP2017221774A 2012-04-05 2017-11-17 キャッシュ管理 Active JP6506374B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/439,873 US10198462B2 (en) 2012-04-05 2012-04-05 Cache management
US13/439,873 2012-04-05

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2015504692A Division JP2015514274A (ja) 2012-04-05 2013-04-03 キャッシュ管理

Publications (2)

Publication Number Publication Date
JP2018049653A JP2018049653A (ja) 2018-03-29
JP6506374B2 true JP6506374B2 (ja) 2019-04-24

Family

ID=48142964

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2015504692A Pending JP2015514274A (ja) 2012-04-05 2013-04-03 キャッシュ管理
JP2017221774A Active JP6506374B2 (ja) 2012-04-05 2017-11-17 キャッシュ管理

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2015504692A Pending JP2015514274A (ja) 2012-04-05 2013-04-03 キャッシュ管理

Country Status (6)

Country Link
US (2) US10198462B2 (ja)
EP (1) EP2834758A1 (ja)
JP (2) JP2015514274A (ja)
KR (1) KR102098415B1 (ja)
CN (2) CN111273863B (ja)
WO (1) WO2013152057A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10015012B2 (en) * 2013-07-03 2018-07-03 Red Hat, Inc. Precalculating hashes to support data distribution
US20150350369A1 (en) * 2014-05-30 2015-12-03 Qualcomm Incorporated Method For Reducing Pre-Fetching Of Multimedia Streaming Data With Minimal Impact On Playback User Experience
CN106445403B (zh) * 2015-08-11 2020-11-13 张一凡 针对海量数据成对存储的分布式存储方法和系统
US10540136B2 (en) * 2016-05-24 2020-01-21 Dell Products, L.P. Faster frame buffer rendering over a network
US10382552B2 (en) * 2016-12-12 2019-08-13 Verizon Patent And Licensing Inc. User device ad-hoc distributed caching of content
US11023587B2 (en) * 2018-06-03 2021-06-01 Apple Inc. External trust cache
JP7282114B2 (ja) * 2021-02-12 2023-05-26 株式会社日立製作所 ストレージ装置

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10177510A (ja) 1996-12-18 1998-06-30 Casio Comput Co Ltd クライアント・サーバ・システム
JP2001014209A (ja) 1999-06-25 2001-01-19 Sharp Corp 情報中継装置および情報中継方法、ならびに情報中継プログラムを記録したコンピュータ読み取り可能な記録媒体
US6772225B1 (en) 1999-09-30 2004-08-03 International Business Machines Corporation Policy enabled web caching
US7043524B2 (en) * 2000-11-06 2006-05-09 Omnishift Technologies, Inc. Network caching system for streamed applications
US7188145B2 (en) 2001-01-12 2007-03-06 Epicrealm Licensing Llc Method and system for dynamic distributed data caching
CN1290027C (zh) 2001-08-27 2006-12-13 皇家飞利浦电子股份有限公司 高速缓存方法
US6871270B2 (en) * 2001-12-03 2005-03-22 Samsung Electronics Co., Ltd. Device and method for minimizing puncturing-caused output delay
JP2003323381A (ja) 2002-05-07 2003-11-14 Fuji Photo Film Co Ltd マルチメディアコンテンツ作成装置およびマルチメディアコンテンツ作成方法
JP2004185263A (ja) 2002-12-03 2004-07-02 Oki Electric Ind Co Ltd 分散協調型コンテンツ配信システム
US7769881B2 (en) 2003-01-24 2010-08-03 Hitachi, Ltd. Method and apparatus for peer-to peer access
US7895338B2 (en) 2003-03-18 2011-02-22 Siemens Corporation Meta-search web service-based architecture for peer-to-peer collaboration and voice-over-IP
US20050015471A1 (en) * 2003-07-18 2005-01-20 Zhang Pu Paul Secure cluster configuration data set transfer protocol
WO2006055669A2 (en) * 2004-11-16 2006-05-26 Activegrid, Inc. Dynamic selection or modification of data management patterns
US7600125B1 (en) * 2004-12-23 2009-10-06 Symantec Corporation Hash-based data block processing with intermittently-connected systems
US7636767B2 (en) * 2005-11-29 2009-12-22 Cisco Technology, Inc. Method and apparatus for reducing network traffic over low bandwidth links
US7529785B1 (en) * 2006-02-28 2009-05-05 Symantec Corporation Efficient backups using dynamically shared storage pools in peer-to-peer networks
US8151323B2 (en) * 2006-04-12 2012-04-03 Citrix Systems, Inc. Systems and methods for providing levels of access and action control via an SSL VPN appliance
US7526530B2 (en) 2006-05-05 2009-04-28 Adobe Systems Incorporated System and method for cacheing web files
GB2440762B (en) 2006-08-11 2011-11-02 Cachelogic Ltd Content distribution network
US7617322B2 (en) * 2006-09-29 2009-11-10 Microsoft Corporation Secure peer-to-peer cache sharing
US8849793B2 (en) * 2007-06-05 2014-09-30 SafePeak Technologies Ltd. Devices for providing distributable middleware data proxy between application servers and database servers
US20090144388A1 (en) * 2007-11-08 2009-06-04 Rna Networks, Inc. Network with distributed shared memory
US8825758B2 (en) * 2007-12-14 2014-09-02 Microsoft Corporation Collaborative authoring modes
JP2009181344A (ja) 2008-01-30 2009-08-13 Canon It Solutions Inc 情報処理装置、描画命令生成装置、情報処理システム、情報処理装置の制御方法、描画命令生成装置の制御方法及びプログラム
US9747340B2 (en) * 2008-06-19 2017-08-29 Microsoft Technology Licensing, Llc Method and system of using a local hosted cache and cryptographic hash functions to reduce network traffic
US8019882B2 (en) 2008-06-27 2011-09-13 Microsoft Corporation Content identification for peer-to-peer content retrieval
US9065835B2 (en) 2008-07-23 2015-06-23 International Business Machines Corporation Redirecting web content
US9286293B2 (en) * 2008-07-30 2016-03-15 Microsoft Technology Licensing, Llc Populating and using caches in client-side caching
US8499120B2 (en) * 2008-10-17 2013-07-30 Seagate Technology Llc User selectable caching management
US8601213B2 (en) * 2008-11-03 2013-12-03 Teradata Us, Inc. System, method, and computer-readable medium for spool cache management
US8108620B2 (en) * 2009-03-10 2012-01-31 Hewlett-Packard Development Company, L.P. Cooperative caching technique
US20120089700A1 (en) * 2010-10-10 2012-04-12 Contendo, Inc. Proxy server configured for hierarchical caching and dynamic site acceleration and custom object and associated method
US8863204B2 (en) * 2010-12-20 2014-10-14 Comcast Cable Communications, Llc Cache management in a video content distribution network
US8874697B2 (en) * 2011-11-30 2014-10-28 Red Hat, Inc. Content download based on hashes

Also Published As

Publication number Publication date
US10198462B2 (en) 2019-02-05
EP2834758A1 (en) 2015-02-11
CN104221016A (zh) 2014-12-17
CN111273863B (zh) 2023-08-15
JP2018049653A (ja) 2018-03-29
CN111273863A (zh) 2020-06-12
US20130268614A1 (en) 2013-10-10
JP2015514274A (ja) 2015-05-18
US11226944B2 (en) 2022-01-18
KR20140143775A (ko) 2014-12-17
KR102098415B1 (ko) 2020-04-07
US20190155798A1 (en) 2019-05-23
WO2013152057A1 (en) 2013-10-10

Similar Documents

Publication Publication Date Title
JP6506374B2 (ja) キャッシュ管理
US11016749B1 (en) Architecture for incremental deployment
US9740435B2 (en) Methods for managing content stored in cloud-based storages
US8285925B1 (en) Management of object mapping information corresponding to a distributed storage system
US10515058B2 (en) Unified file and object data storage
US11403262B2 (en) Local networked storage linked to remote networked storage system
US8762456B1 (en) Generating prefetching profiles for prefetching data in a cloud based file system
US9639543B2 (en) Adaptive index for data deduplication
JP2010532526A (ja) 分散ファイルシステムのための効率的な更新
US8984162B1 (en) Optimizing performance for routing operations
US8583813B2 (en) Enabling peer-to-peer content retrieval in HTTP
US9229740B1 (en) Cache-assisted upload proxy
US20120296871A1 (en) File managing apparatus for processing an online storage service
WO2013143367A1 (en) Method and system for resource download
US8621182B1 (en) Management of object mapping information corresponding to a distributed storage system
US10146788B1 (en) Combined mirroring and caching network file system
US10402373B1 (en) Filesystem redirection
US11089100B2 (en) Link-server caching
KR101694301B1 (ko) 스토리지 시스템의 파일 처리 방법 및 그 방법에 따른 데이터 서버
CN110168513A (zh) 在不同存储系统中对大文件的部分存储
US8521771B1 (en) Management of class-associated object mapping information corresponding to a distributed storage system
Boian et al. Solving Storage Limitations Using a Peer-to-Peer Web File System

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180910

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180913

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20181212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190208

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: 20190227

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190328

R150 Certificate of patent or registration of utility model

Ref document number: 6506374

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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