JP6007246B2 - 予測マルチレイヤキャッシュアーキテクチャ - Google Patents

予測マルチレイヤキャッシュアーキテクチャ Download PDF

Info

Publication number
JP6007246B2
JP6007246B2 JP2014519071A JP2014519071A JP6007246B2 JP 6007246 B2 JP6007246 B2 JP 6007246B2 JP 2014519071 A JP2014519071 A JP 2014519071A JP 2014519071 A JP2014519071 A JP 2014519071A JP 6007246 B2 JP6007246 B2 JP 6007246B2
Authority
JP
Japan
Prior art keywords
images
image
proxy server
server
collection
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
JP2014519071A
Other languages
English (en)
Other versions
JP2014521150A (ja
JP2014521150A5 (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 JP2014521150A publication Critical patent/JP2014521150A/ja
Publication of JP2014521150A5 publication Critical patent/JP2014521150A5/ja
Application granted granted Critical
Publication of JP6007246B2 publication Critical patent/JP6007246B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5681Pre-fetching or pre-delivering data based on network characteristics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • G06F16/51Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/04815Interaction with a metaphor-based environment or interaction object displayed as three-dimensional, e.g. changing the user viewpoint with respect to the environment or object
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • G06T15/205Image-based rendering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/2885Hierarchically arranged intermediate devices, e.g. for hierarchical caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • H04N21/23106Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion involving caching operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/433Content storage operation, e.g. storage operation in response to a pause request, caching operations
    • H04N21/4331Caching operations, e.g. of an advertisement for later insertion during playback
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/16Indexing scheme for image data processing or generation, in general involving adaptation to the client's capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/18Information format or content conversion, e.g. adaptation by the network of the transmitted or received information for the purpose of wireless delivery to users or terminals

Description

本発明は、予測マルチレイヤキャッシュアーキテクチャに関する。
ある特定のソフトウェアアプリケーションは、デジタル写真を特定のシーンから分析して、そのシーンの3次元(3D)の復元又はモデルを生成する。そのようなアプリケーションのユーザは、したがって、そのソフトウェアを使用してモデルを生成し、次いで、後にユーザが見るため又はウェブサイトの他のユーザが見るために、そのモデルをウェブサイトにアップロードすることができる。例えば、ユーザは、パリのエッフェル塔に関する一連の写真を、カメラを使用してキャプチャし、後にこれらの写真をユーザのパーソナルコンピュータに送ることがある。写真がパーソナルコンピュータ上に置かれると、ユーザは、写真の3Dモデルを生成し、次いでこの3Dモデルを指定のウェブサイトにアップロードすることができる。その後、このユーザ又は他のユーザは、指定のウェブサイトを介してこのエッフェル塔の3Dモデルを見ることができる。
クライアントコンピューティングデバイス上で例示の3Dモデルを見るために、クライアントデバイスはまず、集合的に3Dモデルを定義する、複数のイメージに関連付けられるレイアウトを指定するファイルを要求する。クライアントデバイスは、3Dモデルの開始点として、当該デバイスのディスプレイ上でレンダリングするための1つ又は複数のイメージも要求する。その後、ユーザが3Dモデルの異なる部分内へとナビゲートすると、クライアントデバイスは、ユーザがナビゲートする位置に関連付けられるイメージを要求する。しかしながら、クライアントデバイスは、ユーザが所望のイメージを見ることを要求した後に、これらのイメージを要求するので、クライアントデバイスがこれらのイメージを要求して受信するのを待つ間、ユーザはしばしば、望ましくない待ち時間を経験する。さらに、ユーザが、待機性の高いネットワークを介してコレクションを見るとき、又は限られたメモリ若しくは処理能力しか有さないデバイス(例えばモバイルフォン)上でコレクションを見るとき、ユーザが経験することとなる待ち時間は顕著なものとなり得る。
本明細書は、一部分では、所定のレイアウトに関連付けられたイメージのコレクション内においてユーザがナビゲートする可能性が最も高いイメージを予測し、これに応じて、ユーザのクライアントデバイスに対するこれらのイメージのアクセス性を高めるための技術を説明する。例えば、これらの技術は、予測されるイメージを格納する、予測マルチレイヤキャッシュアーキテクチャを用いて、予測した手法でユーザがコレクション内をナビゲートする場合に、これらのイメージをレンダリングする待ち時間を低減する。
一部の例において、以下で説明される技術は、イメージコレクションのイメージを、予測サーバと接続するストレージサーバに格納する。予測サーバはプロキシサーバに接続し、このプロキシサーバは、イメージコレクションの一部をレンダリングするクライアントデバイスと接続する。当該クライアントデバイスのユーザが、クライアントデバイス上でイメージのコレクションのうち特定のイメージを見ていると決定したことに応答して、予測サーバは、(1)現在レンダリングされている特定のイメージに直接隣接する第1のイメージのセットと、(2)その直接隣接するイメージに直接隣接している第2のイメージのセットとを取り出して、プロキシサーバに送信することができる。これらの2つのイメージのセットを受信したことに応答して、プロキシサーバは、第1のセットをクライアントデバイスのキャッシュに格納するためにクライアントデバイスに送信し、一方、第2のセットはプロキシサーバ自身のキャッシュに格納する。ユーザがコレクション内の別のイメージにナビゲートすることに応答して、予測サーバは、予測を再び繰り返して、クライアントデバイスとプロキシサーバが確実に予測イメージを個々のキャッシュ内に格納できるようにする。クライアントデバイスに近接する予測イメージを区別することによって、この技術は、ユーザがイメージのコレクション内をナビゲートすることによって経験する待ち時間を低減することができる。
この発明の概要の項における記載は、ユーザが所定のレイアウトを有するイメージのコレクションをナビゲートするための待ち時間を低減することに関する概念を紹介するのに提供されている。これらの技術は、下記の発明を実施するための形態の項においてさらに説明される。この発明の概要の項の記載は、本件特許請求される主題の本質的特徴を識別するようには意図されておらず、また特許請求される主題の範囲を決定する際に使用されるように意図されていない。
発明を実施するための形態の項は、添付の図面を参照して記載されている。これらの図面において、参照番号の左端の桁は、その参照番号が初めに現れる図面を識別する。同じ番号は、図を通じて同様の特徴及び構成要素を指すのに使用されている。
所定のレイアウトに関連づけられたイメージのコレクションの一部をレンダリングする、ユーザが操作するクライアントデバイスを含む例示のコンピューティングアーキテクチャを示す図である。図1においてコレクションは、ネットワークを介して及びイメージサービスからクライアントデバイスに利用可能になっている。このアーキテクチャにおいて、予測サーバは、コレクション内のどのイメージが、ユーザが次に見る可能性が最も高いかを予測し、これに応じて、これらの予測されたイメージをクライアントのより近く(例えば、クライアントデバイスのキャッシュ及び/又はプロキシサーバのキャッシュ)に配信する。 図1のアーキテクチャにおける動作の例示的なフローを示す図である。ユーザは、レンダリングされたイメージのコレクション内の新たなイメージにナビゲートし、これに応じて、予測サーバが、ユーザが次にナビゲートする可能性が最も高いのはコレクション内のどのイメージかを予測する。さらに、予測サーバは、これらの予測されたイメージを、プロキシサーバのキャッシュ及び/又はクライアントデバイスのキャッシュに格納するために送信する。 図1のアーキテクチャにおける動作の例示的なフローを示す図である。ユーザは、レンダリングされたイメージのコレクション内の新たなイメージにナビゲートし、これに応じて、予測サーバが、ユーザが次にナビゲートする可能性が最も高いのはコレクション内のどのイメージかを予測する。さらに、予測サーバは、これらの予測されたイメージを、プロキシサーバのキャッシュ及び/又はクライアントデバイスのキャッシュに格納するために送信する。 図1のアーキテクチャにおける動作の例示的なフローを示す図である。ユーザは、レンダリングされたイメージのコレクション内の新たなイメージにナビゲートし、これに応じて、予測サーバが、ユーザが次にナビゲートする可能性が最も高いのはコレクション内のどのイメージかを予測する。さらに、予測サーバは、これらの予測されたイメージを、プロキシサーバのキャッシュ及び/又はクライアントデバイスのキャッシュに格納するために送信する。 図1のアーキテクチャにおける動作の例示的なフローを示す図である。ユーザは、レンダリングされたイメージのコレクション内の新たなイメージにナビゲートし、これに応じて、予測サーバが、ユーザが次にナビゲートする可能性が最も高いのはコレクション内のどのイメージかを予測する。さらに、予測サーバは、これらの予測されたイメージを、プロキシサーバのキャッシュ及び/又はクライアントデバイスのキャッシュに格納するために送信する。 図1のアーキテクチャにおける動作の例示的なフローを示す図である。ユーザは、レンダリングされたイメージのコレクション内の新たなイメージにナビゲートし、これに応じて、予測サーバが、ユーザが次にナビゲートする可能性が最も高いのはコレクション内のどのイメージかを予測する。さらに、予測サーバは、これらの予測されたイメージを、プロキシサーバのキャッシュ及び/又はクライアントデバイスのキャッシュに格納するために送信する。 予測サーバによる予測の例示的なプロセスを示すフロー図である。予測サーバは、クライアントデバイスのユーザがナビゲートする可能性が最も高いイメージを予測し、これに応じて、これらのイメージを、クライアントデバイスのキャッシュとクライアントデバイスと予測サーバとの間にあるプロキシサーバのキャッシュとにわたって格納する。 予測サーバによる予測の例示的なプロセスを示すフロー図である。予測サーバは、クライアントデバイスのユーザがナビゲートする可能性が最も高いイメージを予測し、これに応じて、これらのイメージを、クライアントデバイスのキャッシュとクライアントデバイスと予測サーバとの間にあるプロキシサーバのキャッシュとにわたって格納する。 予測サーバによる予測の例示的なプロセスを示すフロー図である。予測サーバは、クライアントデバイスのユーザがナビゲートする可能性が最も高いイメージを予測し、これに応じて、これらのイメージを、クライアントデバイスのキャッシュとクライアントデバイスと予測サーバとの間にあるプロキシサーバのキャッシュとにわたって格納する。 図1のプロキシサーバに存在するキャッシュロジックの例を示す図である。 図1の予測サーバに存在するキャッシュロジックの例を示す図である。 図1のクライアントデバイス、サイトサーバ、ストレージサーバ、予測サーバ及び/又はプロキシサーバに存在するいくつかの例示的な構成要素を示す図である。
本明細書は、一部分において、所定のレイアウトに関連付けられた要素のコレクション内においてユーザがナビゲートする可能性が最も高い要素を予測し、これに応じて、ユーザのクライアントデバイスに対するこれらの要素のアクセス性を高めるための技術を説明する。例えば、これらの技術は、予測される要素を格納するための予測マルチレイヤキャッシュアーキテクチャを用いて、予測した手法で、ユーザがコレクション内をナビゲートする場合にこれらの要素をレンダリングする待ち時間を低減する。以下の実施例では、これらの技術をイメージコレクションとの関連で説明するが、これらの技術を同様に他の要素のコレクションに用いることができる。この点において、要素のコレクションは、イメージ(例えば3次元(3D)モデル、オンライン地図、ビデオゲーム等)、ビデオファイル、オーディオファイル、テキストファイル及びクライアントデバイス上で使用可能で所定のレイアウトを有する任意の他のタイプのファイルを含む。
例えば、ユーザはクライアントデバイスを操作して、地図(例えばオンライン地図)、シーンの3Dモデル又は所定のレイアウトに関連付けられる任意の他のイメージのコレクションをレンダリングすることができる。これらの例ではそれぞれ、クライアントデバイスはネットワークを介して、そのコレクションを格納するイメージサービスからのイメージにアクセスすることができる。一部の例において、既存の技術は、クライアントデバイスのユーザが初めにイメージコレクションを見ることを要求したときに、ユーザイメージコレクションの全体をクライアントデバイスに提供する。しかしながら、ネットワーク制約、イメージコレクションのサイズ、及び一部の例ではクライアントデバイスの限られた能力のために、他の既存の技術は、クライアントデバイスに、イメージをオンデマンドで提供する。すなわち、クライアントデバイスは、クライアントデバイスのユーザがコレクション内のイメージにナビゲートした後に、対応するイメージを要求する(したがってこれらのイメージを受信してレンダリングする)ことができる。しかしながら、上述のようにこの手法では、イメージを取り出すのに、クライアントデバイスがイメージをイメージサービスからネットワークを介して受信するのを待つ間、ユーザに対して望ましくない待ち時間が発生することとなる。
これらの従来のアプローチとは対照的に、本明細書では、クライアントデバイスのより近くにイメージコレクションのイメージをキャッシュし、イメージコレクション内をナビゲートすることに関連する待ち時間を低減することができるアーキテクチャを説明する。例えば、例示的なアーキテクチャは、イメージコレクションをその全体に格納するストレージサーバと、ユーザがナビゲートする可能性が最も高いイメージはどのイメージか、現在閲覧されているイメージに基づいて予測する予測サーバと、これらの予測されたイメージの一部を格納するプロキシサーバとを含むことができる。イメージサービスに加えて、このアーキテクチャは、コレクションの一部をレンダリングすることと、これらの予測されたイメージの異なる部分を格納することとの双方を行うクライアントデバイスも含むことができる。一部の例において、プロキシサーバは、クライアントデバイスと、予測サーバ及びストレージサーバとの間に存在するので、プロキシサーバに格納されるイメージは、ストレージサーバに格納されるイメージよりもクライアントデバイスの近くにあることとなる。
例示のために、モバイルフォンのユーザが、ウェブサイトにナビゲートして、3Dモデル、地図又は所定のレイアウトを有する別のイメージのコレクションを見ることを要求すると想定する。この要求に応答して、ウェブサイトは、レイアウトファイル(例えばJavaScript(登録商標)Object Notation(JSON)ファイル)をストレージサーバから取り出して、このファイルをクライアントデバイスに供給する。このレイアウトファイルは、コレクションのイメージの互いに対する位置を記述し、ストレージサーバ上でコレクションの各イメージが置かれる場所を指定する。一部の例において、クライアントデバイスとのこの通信及び後続の通信は、予測サーバとプロキシサーバとの双方を通じて渡されるが、他の例では、これらの通信は、ストレージサーバとクライアントデバイスとの間で直接又は任意の他の方法で行われる。
レイアウトファイルを受信することに加えて、イメージサービスは、クライアントデバイス上でレンダリングする、コレクションの1つ又は複数の初期イメージも提供することができる。さらに、イメージサービスは、レンダリングされたイメージに直接隣接する1つ又は複数のイメージを提供することができる。クライアントデバイスは、この直接隣接するイメージをクライアントのキャッシュに格納することができるので、ユーザがイメージコレクション内でこれらの隣接イメージにナビゲートする場合には、これらのイメージはクライアントデバイスによって容易に取り出し可能であり、レンダリング可能である。
さらに、ユーザが、イメージコレクションを受信及びレンダリングする初期要求を行うと、イメージサービスは、1つ又は複数のイメージをプロキシサーバにも提供することができる。例えば、イメージサービスの予測サーバは、ストレージサーバから、クライアントデバイスのキャッシュに格納された上記の直接隣接イメージに直接隣接する1つ又は複数のイメージを、取り出すことができる。プロキシサーバは、ストレージサーバとクライアントデバイスとの間にあるので、クライアントデバイスは、ストレージサーバに格納されたイメージよりも早く、プロキシサーバに格納されたイメージにアクセスすることができる。
クライアントデバイスが、所定のレイアウトを有するイメージコレクションのレンダリングを開始した後、クライアントデバイスのユーザが、コレクション内をナビゲートすることがある。例えば、イメージコレクションが3Dモデルを備える場合、ユーザはこのモデルの異なる部分にナビゲートすることができる。あるいは、イメージコレクションが地図を備える場合、ユーザは地図の異なる部分にナビゲートすることができる。これらの例それぞれにおいて、ユーザはしばしば、イメージコレクション内においてユーザの現在の位置に直接隣接する方向にナビゲートすることがある。例えば、3Dモデルの例と地図の例の双方において、ユーザは、左右上下に移動することがある。
これらの例において、クライアントデバイスは、適切な直接隣接イメージをキャッシュから取り出して、この取り出したイメージをレンダリングすることができる。クライアントは以前にこのイメージをキャッシュ内に格納しているので、クライアントはこのイメージを、クライアントがイメージサービスからネットワークを介してイメージを要求していた場合よりもかなり早く、レンダリングすることができる。したがって、ユーザの経験する待ち時間は少なくなる。
さらに、ユーザがイメージコレクション内をこの手法でナビゲートするとき、クライアントデバイスはナビゲーションの指示をプロキシサーバに送信することができる。クライアントデバイスが新たなイメージをレンダリングしているとの指示を受信したことに応答して、プロキシサーバは、プロキシサーバのキャッシュ内に格納されたイメージの一部又は全てを取り出して、クライアントデバイスに送信することができる。この点において、ユーザは新たなイメージにナビゲートしているため、プロキシサーバのキャッシュからクライアントに送信されているこれらのイメージは、これらのイメージが、所定のレイアウト内で指定されたように現在レンダリングされているイメージに直接隣接しているので、「直接隣接するイメージ」である。
クライアントデバイスのキャッシュに格納するために、これらのイメージをクライアントデバイスに送信することに加えて、プロキシサーバは、受信した指示を予測サーバに伝える。これに応じて、予測サーバは、所定のレイアウト内において、現在レンダリングされているイメージの位置を識別することができる。この情報を用いて、予測サーバは、以下の2つのイメージのセットを識別することができる。すなわち、(1)現在レンダリングされているイメージに直接隣接するイメージと、(2)1つ目のセットのイメージに直接近接するイメージのセットとを識別することができる。予測サーバは次いで、予測サーバがこれらの2つのイメージのセットのうち、(もしあれば)いずれのイメージを以前にプロキシサーバ及び/又はクライアントデバイスに提供したかを識別し、次いで、第1及び第2のセットのうち予測サーバがさらに送信する必要があるイメージを、プロキシサーバに送信することができる。
この例において、予測サーバは、以前に第1のセットのイメージをプロキシサーバに送信したかどうかを判断するだけでなく、第2のセットの各イメージについても判断することとなる。したがって、予測サーバは、これらのイメージを予測サーバから取り出して、取り出したイメージをプロキシサーバに送信することとなる。これらのイメージを受信したことに応答して、プロキシサーバは、これらのイメージをプロキシサーバ自身のキャッシュ内に格納することとなる。
(クライアントデバイスとプロキシサーバによる)2つのレイヤ式のキャッシュアーキテクチャを用いることによって、上述の例示的なアーキテクチャは、ユーザがイメージコレクションをナビゲートするときに、イメージコレクションのより早いレンダリングをサポートすることができる。すなわち、ユーザが次にナビゲートする可能性が最も高いイメージ(すなわち、直接隣接するイメージ)は、クライアントデバイスのキャッシュに格納されているので、クライアントデバイスは、予測した手法でユーザがナビゲートした場合に、素早くこれらのイメージをレンダリングすることができる。
さらに、初めの予測ナビゲーションの後にユーザがナビゲートする可能性が最も高いイメージ(すなわち、上記の直接隣接するイメージに直接隣接しているイメージ)は、プロキシサーバのキャッシュに格納されているので、クライアントデバイスは、当該クライアントデバイスのキャッシュからの「直接隣接イメージ」をレンダリングした後、クライアントのキャッシュを素早く補充することができる。最終的に、予測サーバは、ユーザの過去のナビゲーションに基づいてユーザのナビゲーションを予測し続けるので、予測サーバは、プロキシサーバのキャッシュとクライアントデバイスのキャッシュの双方が、確実に、予測されるイメージを受信し、格納し続けるようにすることができる。全体として、このアーキテクチャは、ユーザがイメージコレクション内のビューを高い頻度で変更するとしても、ユーザがイメージコレクション内をナビゲートすることによって経験する待ち時間を低減する。さらに、このアーキテクチャは、ユーザがイメージコレクション内をどのようにナビゲートするか追跡するので、イメージコレクションを提供するエンティティは、ユーザが概してこれらのコレクションとどのように対話するのかを学習することができる。すなわち、これらのエンティティは、この情報を使用して、イメージコレクションの提案を提供し、特定の態様を強化することなどによって、ユーザ経験を向上させることができる。
詳細な検討を、下記の「例示的なコンピューティングアーキテクチャ」と題したセクションで開始する。このセクションでは、本明細書で説明される技術を実装するための例示的な予測マルチレイヤキャッシュアーキテクチャを詳細に説明する。このセクションは、ユーザが、所定のレイアウトを有する例示的なイメージコレクション内をナビゲートするときの、アーキテクチャ内における動作の例示的なフローも説明する。「例示的なイメージ予測プロセス」と題した第2のセクションが続き、その後に「例示的なキャッシュロジック」と題したセクションの検討に進む。後者の「例示的なキャッシュロジック」セクションでは、図1のプロキシサーバが用いる例示的なキャッシュロジック、並びに図1の予測サーバが用いる例示的なキャッシュロジックを詳細に説明する。次に「例示的なコンピューティングデバイスの構成要素」と題したセクションが続き、その後、簡単な結論により議論を終了する。
セクションのタイトル及び対応する要約を含め、この簡単な紹介は読者の利便性のために提供されるものであり、特許請求の範囲を限定するようには意図されておらず、また後続のセクションを限定するようにも意図されていない。
<例示的なコンピューティングアーキテクチャ>
図1は、例示的なコンピューティングアーキテクチャ100を図示している。例示的コンピューティングアーキテクチャ100は、(1)所定のレイアウトに関連付けられたイメージのコレクション内において、ユーザがどのイメージにナビゲートする可能性が最も高いかを予測し、及び(2)これに応じて、ユーザのクライアントデバイスに対するこれらのイメージのアクセス性を向上させるために、説明される技術を実装する。
この例において、アーキテクチャ100は、クライアントコンピューティングデバイス(又は「クライアントデバイス」)104を操作して、イメージコレクション106をデバイス104のディスプレイ108にレンダリングするユーザ102を含む。例えば、イメージコレクション106は、地図、一連のデジタル写真から作成されたシーンの3次元(3D)モデル、又は所定のレイアウトを有するイメージのコレクションを備える任意の他のタイプのビジュアルファイルを備える。この例において、イメージコレクション106は、フランスのパリにあるエッフェル塔を含むシーンの3Dモデルを含むことができ、この3Dモデルは、おそらくは、マイクロソフト(登録商標)社のPhotosynth(登録商標)ソフトウェアを使用して作成される。モバイルフォンとして図示されているが、クライアントコンピューティングデバイス104は、デスクトップコンピュータ、ラップトップコンピュータ、ポータブル音楽プレイヤ、ゲームコンソール、タブレットコンピューティングデバイス又は任意の他のタイプのモバイル若しくはモバイル以外のコンピューティングデバイスなど、任意の他の種類のコンピューティングデバイスを備えることもできる。
図示されるように、クライアントデバイス104は現在、イメージのコレクションのうち特定のイメージ110(1)をレンダリングしている。この例において、クライアントデバイス104は、イメージ110(2)、110(3)、110(4)及び110(5)もキャッシュ114内に、又はデバイス104の他の記憶装置に格納する。図示されるように、イメージ110(2)〜(5)はそれぞれ、以前に取得してデバイス104に格納したレイアウトファイル112によって指定される通りのイメージコレクション106の所定のレイアウトに従って、現在レンダリングされているイメージに直接隣接している。さらに、以下で詳細に検討するが、直接隣接するイメージ110(2)〜(5)をデバイス104のキャッシュ114に格納することによって、デバイス104は、ディスプレイ108が現在レンダリングしている3Dモデル内においてユーザが左右上下にナビゲートした場合に、これらのイメージのいずれか1つを素早くレンダリングすることができる。
上記簡単に述べたように、レイアウトファイル112は、イメージコレクション106の各イメージの互いに対する相対的な位置を指示するので、クライアントデバイスは、コレクション106のイメージを正しく要求してレンダリングすることができる。さらに、レイアウトファイル112は、(例えばユニフォームリソースロケータ(URL)により)イメージコレクション106の各イメージがストレージサーバ126上で存在する位置を指示することができる。クライアントデバイス104、プロキシサーバ130及び/又は予測サーバ128は、この情報を用いて、イメージコレクション106内におけるユーザ102のナビゲーションに応じたイメージを要求することができる。
3Dモデル(すなわち、例示的なイメージコレクション106)をレンダリングするために、クライアントデバイス104はビューアーアプリケーション116を格納することができる。このビューアーアプリケーション116は、キャッシュロジック118を当該ビューアーアプリケーション自身に格納するか、そうでなければ参照することができる。ビューアーアプリケーション(又はビューアーApp)116は、ブラウザ、コレクション106を見るのにデバイス104に以前にダウンロードされた指定のアプリケーション、又はデバイス104に対してネイティブ若しくは非ネイティブの任意の他のアプリケーションを備えることができる。一方、キャッシュロジック118は、現在レンダリングされているイメージ110(1)、並びに現在レンダリングされているイメージに直接隣接するイメージ110(2)〜(5)を識別する。さらに、ユーザ102がイメージコレクション106内をナビゲートすると、キャッシュロジック118は、以下で詳細に議論するように、どのイメージが現在レンダリングされているか、及びどのイメージが、現在レンダリングされているイメージに直接隣接するかを更新する。さらに、キャッシュロジック118は、直接隣接するイメージとして新たにラベル付けされるイメージが、デバイス104の異なる記憶装置に格納される場合、これらのイメージが「直接隣接するイメージ」として設定されるとき、これらの新たにラベル付けされた直接隣接するイメージをクライアントデバイス104のキャッシュ114に置く。
初めにイメージコレクション106をレンダリングするために、ユーザ102は、ビューアーアプリケーション116、ブラウザ又は別のアプリケーションを用いて、イメージサービス120上のイメージコレクション106を要求するか、そうではければアクセスする。図示されるように、イメージサービス120は、イメージサービス120のサイト(例えばウェブサイト)をホストするサイトサーバ124と、イメージコレクション106などの様々なイメージコレクションを格納するストレージサーバ126と、ある時において、コレクションのうちのどのイメージにユーザがナビゲートする可能性が最も高いかを予測する、予測サーバ128と、予測されたイメージの少なくとも一部を格納するプロキシサーバ130とを備えることができる。上記のサーバはそれぞれ、単数(例えば「予測サーバ128(単数)」)で列挙されているが、これらのサーバの一部又は各々に格納される機能を、複数の別個のサーバにわたって分散させてもよいことを理解されたい。さらに、一部の例において、アーキテクチャ100は、イメージサービス120の予測サーバ128とそれぞれ対話する、複数の異なるプロキシサーバを含むことができる。これらのプロキシサーバは、地理及び/又は待ち時間に基づいて、異なるクライアントデバイスに特有のものとすることができる。例えば、特定のクライアントデバイスに最も近いプロキシサーバは、その特定のクライアントデバイスのプロキシサーバとして機能することができる。
上記の例に戻ると、ユーザ102は、イメージコレクション106にアクセスしてレンダリングするために、まずブラウザアプリケーションを用いて、サイトサーバ124によってホストされるイメージサービス120のウェブサイトにアクセスする。例えば、サイトサーバ124によってホストされるウェブサイトにナビゲートすると、ユーザは、特定のイメージコレクション106に関連付けられたURLを選択することができる。これに応じて、URLは、サイトサーバに、イメージコレクション106に関連付けられたレイアウトファイル112を、クライアントコンピューティングデバイス104に提供するように指示する。さらに、この選択により、一部の例では、イメージコレクション106を見るためのビューアーアプリケーション116が起動される。図1は、イメージコレクションに関連付けられたレイアウトファイルが、サイトサーバの記憶装置132に格納される様子を図示しているが、他の例では、これらのレイアウトファイルを、ストレージサーバの記憶装置134若しくは他のエンティティ上に格納することができ、又はストレージサーバの記憶装置134若しくは他のエンティティによるアクセスを可能にすることができる。
いずれかの例において、レイアウトファイル112及びイメージコレクション106に関連付けられたURLが選択されると、イメージサービス120は、レイアウトファイル112をクライアントデバイス104に供給する。さらに、イメージサービス120は、初めの位置でイメージコレクション106をレンダリングするための1つ又は複数の初期イメージ、すなわち開始イメージを提供することができる。図示される例では、例えばイメージサービス120は、イメージ110(1)〜(5)をレイアウトファイル112とともに提供する。イメージ110(1)は、レンダリングするための初期イメージであり、イメージサービス120は、(イメージ110(1)に直接隣接する)イメージ110(2)〜(5)を、クライアントデバイス104のキャッシュ114に格納するために提供する。示されるように、最初にレンダリングするイメージ110(1)は、図示される例において、フランスのパリのエッフェル塔が中央に置かれたビューを備える。
レイアウトファイル112及びイメージ110(1)〜(5)を受信すると、クライアントデバイス104は、レイアウトファイル112を解析して、受信したイメージ110(1)〜(5)の位置を識別する。例えばクライアントデバイス104のキャッシュロジック118は、レイアウトファイル112を解析して、イメージ110(1)を最初にレンダリングすべきであり、イメージ110(2)〜(5)は、ユーザ102がイメージコレクション106内でこれらの直接隣接イメージ110(2)〜(5)のいずれか1つのイメージにナビゲートする場合のためにキャッシュ114に格納すべきである、と識別することができる。
一部の例において、イメージサービス120(例えば予測サーバ128)は、イメージコレクション106をレンダリングすることを求めるユーザ102の初期要求において、プロキシサーバ130に、レイアウトファイル112並びに1つ又は複数のイメージを提供することもできる。例えばイメージサービスは、イメージコレクション106に関連付けられたレイアウトファイル112の使用により、イメージ110(2)〜(5)に直接隣接するイメージを識別し、これらの識別したイメージ及びイメージ110(1)〜(5)を、プロキシサーバ130のキャッシュ136又は他の記憶装置に格納するために提供することができる。すなわち、イメージサービス120は、クライアントデバイス104によって最初にレンダリングされるイメージ110(1)に直接隣接するイメージに直接隣接しているイメージを提供することができる。
図示されるように、プロキシサーバ130は、(地理的に、待ち時間の観点で、又はその双方において)ストレージサーバ126よりもクライアントデバイスの近くに存在しているので、これらのイメージをプロキシサーバ130に提供することは、クライアントデバイス104に対するこれらのイメージのアクセス性を向上させる。図示される例において、イメージサービス120は、プロキシサーバ130のキャッシュ136に格納するためのイメージ138(1)〜(N)を提供しており、これらのイメージ138(1)〜(N)は、イメージ110(2)〜(5)に直接隣接している(及び潜在的にイメージ110(2)〜(5)を含んでいる)。これらのイメージ138(1)〜(N)を受信したことに応答して、プロキシサーバ130はこれらのイメージ138(1)〜(N)を、キーと値との辞書データ構造を使用してキャッシュ136内に格納するので、プロキシサーバ130は、ユーザがイメージコレクション106内の新たなイメージにナビゲートしたとの指示の受信に応答して、これらのイメージを素早く取り出して供給することができる。
クライアントデバイス104がレイアウトファイル112を解析して、開始イメージ110(1)をレンダリングした後、ユーザ102はイメージコレクション106の他の部分へのナビゲーションを開始することができる。例えば、ユーザ102が「左へ」のナビゲートを要求すると想定する。これに応じて、クライアントデバイス104は、イメージ110(5)を、クライアントデバイス104のキャッシュ114から取り出して、このイメージ110(5)をディスプレイ108上にレンダリングすることができる。このイメージ110(5)はキャッシュ114に格納されていたので、クライアントデバイス104は、ユーザ102に過度の待ち時間を経験させることなく、このイメージ110(5)を素早く取り出してレンダリングすることができる。
このナビゲーションの後、キャッシュロジック118はその後、イメージ110(5)が現在レンダリングされているイメージであることを指示し、イメージ110(5)に直接隣接するイメージを識別して指示することができる。さらに、キャッシュロジック118は、これらの新たな直接隣接イメージをキャッシュ114に格納することができる。一部の例において、キャッシュロジックは、キャッシュ114から、イメージ110(5)に直接隣接しない任意の他のイメージを除去することもできる。例えば、キャッシュロジック118はこれらの他のイメージを、クライアントデバイス104の異なる記憶装置に格納してもよく、又はこれらの他のイメージをクライアントデバイス104のメモリから除去してもよい。
さらに、このナビゲーションの後、キャッシュロジック118は、ナビゲーションの指示を、ネットワーク122を介してプロキシサーバ130に送信することができる。この指示は、クライアントデバイス104のキャッシュ114内に格納するための追加のイメージを求める要求の形式をとることができる。さらに、この指示は、クライアントデバイス104だけでなく、クライアントデバイス104が現在レンダリングしている特定のイメージコレクション106も識別することができる。この指示を受信すると、プロキシサーバ上に格納されているか、又はプロキシサーバによってアクセス可能なキャッシュロジック140は、クライアントデバイス104上で現在レンダリングされているイメージ(ここではイメージ110(5))を識別することができ、そして、レイアウトファイル112を使用により、イメージ110(5)に現在直接隣接する1つ又は複数のイメージを識別することができる。この例において、プロキシサーバ130のキャッシュ136に以前に格納されたイメージ138(1)〜(N)の一部が、イメージ110(5)に直接隣接するイメージとなる。したがって、プロキシサーバ130は、イメージ138(1)〜(N)のこの部分を、クライアントデバイス104のキャッシュ114に格納するために、クライアントデバイス104に送信することができる。
一部の例において、プロキシサーバ130は、プロキシサーバ130(及び/又はイメージサービス120の別のエンティティ)が以前にどのイメージをクライアントデバイス104に送信したかを示す、テーブル142を保持することができる。そのようにすることによって、プロキシサーバ130は、イメージを複数回クライアントデバイスに送信することを避けることができる。この例において、例えばプロキシサーバは、以前に送信したイメージを除いて、イメージ110(5)に直接隣接するイメージを送信する。例えば、テーブル142は、クライアントデバイス104が、イメージコレクション106のレンダリングを最初に要求したときにイメージ110(1)を既に受け取っていることを示しているので、プロキシサーバ130はイメージ110(1)を送信することを回避することができる。クライアントデバイス104が既に格納しているイメージの送信を回避することによって、キャッシュロジック140は、ネットワーク122を介してクライアントデバイス104に送信されるパッケージのサイズを減少させることができ、ユーザが経験する待ち時間もさらに減少させることができる。
プロキシサーバ130からイメージを受信すると、キャッシュロジック118は、これらのイメージが、現在レンダリングされているイメージ(イメージ110(5))に直接隣接している、と識別することができ、したがって、これらのイメージをキャッシュ114に格納することができる。このようにすることによって、クライアントデバイス104は、ユーザ102が、イメージコレクションによりイメージ110(5)に直接隣接するイメージにナビゲートする場合において適切なイメージを素早く取り出してレンダリングするための準備を整える。
プロキシサーバ130に戻ると、直接隣接イメージを識別してクライアントデバイス104に送信することに加えて、プロキシサーバ130のキャッシュロジック140は、先程クライアントデバイス104に送信したイメージに直接隣接しているイメージを、プロキシサーバ130のキャッシュ136に補充しようと試みることができる。したがって、キャッシュロジック140は、ナビゲーションの指示を予測サーバ128に送信することができる。イメージサービス120の各サーバ及び/又は構成要素は、1つ又は複数のネットワークを介して相互に通信することができ、これらの1つ又は複数のネットワークは、クライアントデバイス104がプロキシサーバ130と通信するネットワーク122と同じものであっても、異なるものであってもよい。各例において、これらのネットワークは、インターネット、ケーブルネットワーク、セルラネットワーク、無線ネットワーク及び有線ネットワークなどの複数の異なるタイプのネットワークのいずれか1つ又は組み合わせを備えることができる。クライアントデバイス104がモバイルフォン又は他のモバイルコンピューティングデバイスである例において、ネットワーク122はセルラネットワーク又は他の無線ネットワークを備えることができる。
プロキシサーバ130からナビゲーションの指示を受信した後、予測サーバ128上に格納されているか、予測サーバ128によってアクセス可能なキャッシュロジック144は、クライアントデバイス104と、クライアントデバイス104が現在レンダリングしているイメージコレクション106とを識別することができる。さらに、キャッシュロジック144は、クライアントデバイス104が現在レンダリングしている特定のイメージ(ここではイメージ110(5))を、受信した指示に基づいて識別することができる。加えて、キャッシュロジック144は、レイアウトファイル112を参照して、予測サーバ128がプロキシサーバ及び/又はクライアントデバイス104に送信したイメージの1つ又は複数のセットを識別することができる。
例えば、キャッシュロジック144は、クライアントデバイス104のキャッシュ114に格納するための第1のイメージのセットと、プロキシサーバ130のキャッシュ136に格納するための第2のイメージのセットとを識別する。一例において、第1のイメージのセットは、イメージコレクション106内において、現在レンダリングされているイメージ110(5)に直接隣接するイメージを備え、一方、第2のイメージのセットは、イメージコレクション106内の第1のイメージのセットに直接隣接するイメージである。
これらのイメージのセットの一方又は双方を識別した後、キャッシュロジック144は、テーブル146を参照することができる。テーブル146は、予測サーバ128及び/又はイメージサービス120の任意の他のエンティティによってプロキシサーバ130及び/又はクライアントデバイス104に以前に送信されたイメージの指示を格納している。テーブル146を参照した後、キャッシュロジック144は、ストレージサーバ126の記憶装置134から、上記の第1及び第2のセットのうち、プロキシサーバ130及び/又はクライアントデバイス104に以前に送信されていなかったイメージを取り出し、これらの取り出したイメージを(一時的又は持続的に)予測サーバ128の記憶装置148に格納することができる。キャッシュロジック144は次いで、これらのイメージをプロキシサーバ130及び/又はクライアントデバイス104に送信する。
この例では、例えばキャッシュロジック144は、クライアントデバイス104が現在イメージ110(5)をレンダリングしていると識別する。加えて、キャッシュロジック144は、テーブル146から、プロキシサーバ130がイメージコレクション106のうち、イメージ110(5)に直接隣接するイメージを以前に受信している、と識別する。したがって、キャッシュロジック144は、これらの直接隣接するイメージをプロキシサーバ130に提供することを回避することができる。しかしながら、次にキャッシュロジック144は、これらの直接隣接するイメージに直接隣接しているイメージの一部が、まだプロキシサーバ130に送信されていないと識別することがある。したがって、キャッシュロジック144は、これらのイメージ(イメージ110(5)に直接隣接するイメージに直接隣接しているイメージ)をストレージサーバ126から取り出して、これらの取り出したイメージをプロキシサーバ130に送信する。さらに、予測サーバ128は、これらのイメージが今プロキシサーバ130に送信されたことを示すように、テーブル146を更新することができる。
これらのイメージを予測サーバ128から受信すると、プロキシサーバ130は、受信したイメージをキャッシュ136に格納することができ、一方で、ユーザがイメージコレクション内で再びまたナビゲートをしているとの別の指示を受信しない限り、これらのイメージをクライアントデバイス104に送信することを回避することができる。このようにすることによって、プロキシサーバ130は、よりアクセス性の高いキャッシュに、クライアントデバイス104によって現在レンダリングされているイメージ110(5)に直接隣接するイメージに直接隣接しているイメージを、格納することができる。したがって、ユーザがイメージコレクション106内をナビゲートしていた場合、プロキシサーバ130に格納されるイメージは、ユーザ102がナビゲートする新たなイメージに直接隣接するものとなり、このためプロキシサーバ130は、これらのイメージを、クライアントデバイス104のキャッシュ114内に記憶するために提供することができる。
全体として、このアーキテクチャ100は、マルチレベルキャッシュシステムを提供し、このマルチレベルキャッシュシステムにより、イメージコレクションのどのイメージに、ユーザがナビゲートする可能性が最も高いかを予測することが可能になり、これらのイメージをインテリジェントな手法により、アーキテクチャにわたって配信することが可能になる。例えば、アーキテクチャ100は、予測されるイメージの第1のセットを、イメージコレクションをレンダリングしているクライアントデバイス104のキャッシュ内に格納し、一方、予測されるイメージの第2のセットを、ストレージサーバ126よりもクライアントデバイス104に近いプロキシサーバ130のキャッシュに格納する。イメージをこのような手法で格納することは、したがって、ユーザ102がクライアントデバイス104上でイメージコレクション106内をナビゲートするときに、ユーザ102が経験する待ち時間を低減することができる。
当然、1つの例示的なアーキテクチャ100を図示して説明したが、複数の他のアーキテクチャが本明細書で説明される技術を実装することができることを認識されたい。
図2A〜2Eは、ユーザ102がイメージコレクション106を見ることを要求した後の図1のアーキテクチャにおける動作200の例示的なフローを図示している。したがって、動作のフローは、クライアントデバイス104がレイアウトファイル112を受信して解析し、初期イメージ110(1)をクライアントデバイス104のディスプレイ108上にレンダリングし、キャッシュ114内にイメージ110(1)に直接隣接するイメージ110(2)〜(5)を格納した後に起こる。加えて、予測サーバ128は、プロキシサーバ130に、イメージ110(2)〜(5)に直接隣接するイメージをキャッシュ136に格納するために提供することができる。
図2Aは、まず、ユーザ102がクライアントデバイスを操作して、矢印202によって示されるように、初期イメージ110(1)から、イメージ110(1)に直接隣接する後続イメージ110(5)にナビゲートする様子を図示している。これに応じて、クライアントデバイス104は、要求されたイメージ110(5)をキャッシュ114から取り出して、イメージ110(5)をディスプレイ上にレンダリングする。加えて、クライアントデバイス104は、このナビゲーションの指示204をプロキシサーバ130に送信する。
図2Bは、プロキシサーバ130が指示204をクライアントデバイス104から受信した後の動作200を図示している。これに応じて、プロキシサーバ130はまず、クライアントデバイス104と、イメージコレクション106と、ユーザ102がイメージコレクション106内でナビゲートしたイメージ110(5)とを識別する。さらに、プロキシサーバ130は、レイアウト内においてイメージ110(5)に直接隣接するイメージのセットを識別し、さらにこのセットのうち、クライアントデバイス104に以前に送信されたイメージを識別する。この例では、プロキシサーバ130は、識別されたセットの4つのイメージのうち、3つのイメージがまだクライアントデバイス104に送信されていないと決定する。したがって、プロキシサーバ130はこれら3つのイメージを備えるパッケージ206を、キャッシュ114への格納のためにクライアントデバイス104に送信する。加えて、プロキシサーバ130は、指示204を予測サーバ128に向けて送信する。
図2Cは、クライアントデバイス104がプロキシサーバ130からのイメージを受信した後であって、予測サーバ128がプロキシサーバ130からの指示を受信した後の動作200のフローを図示している。図示されるように、パッケージ206をプロキシサーバ130から受信したことに応答して、クライアントデバイス104は、このパッケージ206の3つのイメージをキャッシュ114内に格納する。これらの3つのイメージを、以前にレンダリングされた初期イメージ110(1)と結合すると、クライアントデバイス104のキャッシュ114は、現在レンダリングされているイメージ110(5)に直接隣接する各イメージを格納する。したがって、ユーザ102がさらに別の直接隣接するイメージにナビゲートすると、クライアントデバイス104は、このイメージをキャッシュ114から素早く取り出して、このイメージをディスプレイ108上にレンダリングすることが可能になる。
指示204をプロキシサーバ130から受信したことに応答して、予測サーバ128は、クライアントデバイス104と、クライアントデバイス104によってレンダリングされているイメージコレクション106と、さらに、ユーザ102がナビゲートしたイメージ110(5)とを識別している。この情報を用いて、予測サーバ128は、イメージ110(5)に直接隣接しているイメージを備える第1のイメージのセット、並びに当該第1のセットのイメージに直接隣接しているイメージの第2のイメージのセットを識別することができる。加えて、予測サーバ128は、第1及び第2のセットのうちのどのイメージが、プロキシサーバ130及び/又はクライアントデバイス104によって以前に受信されたかを識別している。予測サーバ128は次いで、第1及び第2のセットのうち、以前に送信されたイメージを除くイメージを求める要求208を生成する。図示した要求208は、予測サーバ128が、イメージを求める要求をストレージサーバ126に対して送信すること、又は単に予測サーバ128が所望のイメージをストレージサーバ126から取り出すことを表している。
この例において、予測サーバ128は、クライアントデバイス104が第1のイメージのセットの各イメージ(すなわち、直接隣接するイメージ)を既に受信しており、プロキシサーバ130が第2のイメージのセットのイメージのうちの一部(すなわち、第1のセットのイメージに直接隣接するイメージ)を受信している、と決定することとなる。したがって、予測サーバ128は、第2のセットのうちの残りのイメージを求める要求をストレージサーバ126に送信することとなる。
図2Dは、要求208を送信したことに応答して、予測サーバ128が第2のセットのイメージ(プロキシサーバ130が既に手元に有しているイメージを除く)を備えるパッケージ210を受信する様子を図示している。図2Dはまた、予測サーバ128が、このパッケージ210をプロキシサーバ130に送信することも図示している。上述のように、このパッケージ210のイメージは、ストレージサーバ126よりもクライアントデバイス104の(地理的に及び/又は待ち時間の観点から)近くに存在するプロキシサーバ130のキャッシュ136に格納するためのものである。
図2Eは、プロキシサーバ130がパッケージ210を受信した後の動作200のフローを図示している。図示されるように、プロキシサーバ130は、このパッケージ210内のイメージをキャッシュ136に格納する。さらに、キャッシュ136内に以前に格納されたイメージと結合すると、プロキシサーバ130はここで、(1)現在レンダリングされているイメージ110(5)に直接隣接する各イメージ、又は(2)これらの直接隣接するイメージに直接隣接している各イメージを格納する。したがって、ユーザ102がイメージコレクション106内を、イメージ110(5)に直接隣接しているイメージへとナビゲートする場合、及びこのようにナビゲートしたとき、プロキシサーバ130は、この(ナビゲートされる)直接隣接しているイメージのパッケージを、クライアント104のキャッシュ114に格納するために、クライアント104に送信することができる。
<例示的なイメージ予測プロセス>
図3A〜3Cは、所定のレイアウトに関連付けられたイメージのコレクション内において、ユーザがどのイメージにナビゲートする可能性が最も高いかを予測し、これに応じて、ユーザのクライアントデバイスに対するこれらのイメージのアクセス性を向上させるための例示的なプロセス300のフロー図である。このプロセス300は、クライアントデバイス104のユーザ102が、一連の写真や地図等の3次元(3D)モデルなど、所定のレイアウトを有するイメージのコレクションを要求してレンダリングを開始した後に行われる。
プロセス300は、論理フローグラフで動作のコレクションとして示されており、これは、ハードウェア、ソフトウェア又はこれらの組み合わせで実装される一連の動作を表す。ソフトウェアのコンテキストでは、ブロックは、1つ又は複数のプロセッサによって実行されると記載された動作を実行する、1つ又は複数のコンピュータ読取可能な媒体に格納されるコンピュータ命令を表す。プロセスが記載される順序は、限定として解釈されることは意図されておらず、また、説明される動作のうちの任意の数の動作を、任意の順序で組み合わせてこのプロセス又は代替的なプロセスを実装することができる。さらに、説明される主題の精神及び範囲から逸脱することなく、個々のブロックを相互に並行して実装してもよく、あるいはプロセスから完全に削除してもよい。さらに、クライアントコンピューティングデバイス104、プロキシサーバ130及び予測サーバ128の下で実行される動作は、実装に応じて、これらの個々の主体によって実行されても、又は他の主体によって実行されてもよい。
図3Aは、まず302において、クライアントデバイス104が、所定のレイアウトを有するイメージのコレクションのうち特定のイメージをレンダリングするよう求める要求を受信する。例えば、クライアントデバイス104を操作するユーザ102は、第1のイメージから、レイアウト内において当該第1のイメージに直接隣接する第2のイメージにナビゲートすることができる。レンダリングされている「イメージ」は、単一のイメージ(例えば3Dモデルの単一のデジタル写真)であってよいが、他の例では、「イメージ」又は「特定のイメージ」は複数のイメージをともに備えることができることを認識されたい。例えば3Dモデルの例において、特定のイメージは、ディスプレイ上にまとめてレンダリングされる複数の異なるデジタル写真の結合を備えることができる。これらの例において、この結合をまとめて、上記の「イメージ」又は「特定のイメージ」として扱うことができる。
304において、クライアントデバイス104は、当該クライアントデバイス104のキャッシュ114から、要求に関連付けられた特定のイメージを取り出す。上述のように、特定のイメージは、当該特定のイメージがユーザによってナビゲートされたイメージに直接隣接しているために、クライアントのキャッシュ114に格納されている。
一方、306において、クライアントデバイス104は、特定のイメージをクライアントデバイス104のディスプレイ上にレンダリングする。クライアントデバイス104はイメージを当該クライアントのキャッシュ114から取り出したので、このレンダリングは、従来技術によって実施されるようにクライアントデバイス104が特定のイメージを求める要求を、ネットワークを介してイメージサービス120に送信する場合よりも、かなり早く行われる。
308において、クライアントデバイス104は、特定のイメージをレンダリングするよう求める要求の指示をプロキシサーバ130にも送信する。上述のように、この指示は、無線ネットワーク、有線ネットワーク又はこれらの組み合わせの任意の種類のネットワークを介して送信される。
310において、プロキシサーバ130は指示を受信する。プロキシサーバ130はまた、この指示を解析して、クライアントデバイス104と、レンダリングされているイメージコレクションと、ユーザ102がナビゲートしているコレクション内の特定のイメージとを識別する。
312において、プロキシサーバ130は、この情報及びレイアウトファイル112を使用して、ユーザ102がナビゲートした特定のイメージに直接隣接するイメージを識別する。例えば、プロキシサーバ130は、イメージコレクションに関連付けられたレイアウトファイル112を参照して、ユーザが特定のイメージから単一のユーザ入力でナビゲートすることができるこれらのイメージ(すなわち、レイアウト内において特定のイメージからの単一のホップ(hop)内にあるイメージ)を識別する。
314において、プロキシサーバ130は、直接隣接するイメージのうち、クライアントデバイスに以前に送信されたイメージを識別する。例えば、プロキシサーバ130は、クライアントデバイス104に関連付けられたテーブル142を参照して、クライアントデバイス104が、クライアントデバイス104のキャッシュ114又は該クライアントデバイスの異なる記憶装置に既に格納しているのはどのイメージか決定することができる。
図3Bは、プロセス300の図の続きであり、316において、プロキシサーバ130が、以前に送信されたイメージを除く、直接隣接するイメージをクライアントコンピューティングデバイス104に送信する。さらに、プロキシサーバ130は、送信されたイメージを示すようにテーブル142を更新することもでき、これによりこれらの同じイメージが後で再送されることを回避することができる。
318において、クライアントデバイス104は、追加のイメージをプロキシサーバから受信する。デバイス104はこれらのイメージを、ネットワークを介して単一のパッケージ又は複数のパッケージとして受信することができる。
320において、クライアントデバイス104は、受信したイメージを当該クライアントデバイス104のキャッシュ114に格納することができる。このようにすることによって、クライアントデバイス104は、その手元に、該クライアントデバイスが現在レンダリングしているイメージに直接隣接する各イメージを有する。したがって、ユーザ102がこれらの直接隣接するイメージのうちの1つにナビゲートすると、デバイス104は、ユーザに多くの待ち時間を経験させることなく、このイメージを素早く取り出してレンダリングすることができる。
一方、322において、プロキシサーバ130は、最初に受信した指示を予測サーバ128に渡す。プロキシサーバ130はこの指示を、クライアントデバイス104とプロキシサーバ130との間の通信に使用されるものと同じネットワーク又は異なるネットワークを介して送信することができる。一部の例において、イメージサービス120の諸サーバは、クライアントデバイス104がプロキシサーバ130と通信する際のネットワークよりも高帯域幅で待ち時間の少ないネットワークを介して通信する。
324において、予測サーバ128は、イメージ要求の指示を受信する。上記のプロキシサーバ130と同様に、予測サーバ128は、この指示を解析してクライアントデバイス104と、レンダリングされているイメージコレクションと、レンダリングされているコレクションの特定のイメージとを識別することができる。
326において、予測サーバ128は、特定のイメージに隣接する複数のイメージを識別する。上述のように、この第1のイメージのセットは、クライアントデバイス104のキャッシュ114に格納するイメージとすることができる。予測サーバ128は、レイアウトファイル112を用いてこの識別を行うことができる。
328において、予測サーバ128は上記の直接隣接するイメージに直接隣接しているイメージも識別することができる。上述のように、この第2のイメージのセットは、プロキシサーバ130のキャッシュ136に格納するためのイメージとすることができる。この場合も、予測サーバ128はレイアウトファイル112を用いてこの識別を行うことができる。
330において、予測サーバ128は、第1及び第2のセットのうち、プロキシサーバ130及びクライアント104に以前に提供されたイメージをそれぞれ識別する。この例において、予測サーバ128は、クライアントデバイス104が、第1のセットの各イメージを受信している(又は受信しているはずである)が、プロキシサーバ130が、第2のセットのイメージの一部をさらに受信する必要があると決定する。予測サーバ128は、一部の例において、クライアントデバイス104に関連付けられたテーブル146を参照して、この決定を行うことができる。
図3Cによりプロセス300の例が完結する。332において、予測サーバ128は、プロキシサーバ130に、プロキシサーバ130がさらに受信する必要がある第2のセットのイメージを送信する。
334において、プロキシサーバ130は、これらの追加のイメージを予測サーバ128から受信する。この場合、これらのイメージは、クライアントデバイス104においてレンダリングされている特定のイメージに直接隣接するイメージに直接隣接しているイメージの一部又は全てを備える。
336において、プロキシサーバ130は、これらの追加のイメージを当該プロキシサーバ130のキャッシュ136に格納する。このようにすることによって、イメージサービス120は(プロキシサーバ130を介して)、ユーザが現在レンダリングされているイメージに直接隣接しているイメージへのナビゲーションを継続する場合に、これらのイメージを素早くクライアントデバイス104に提供することができる。
図示されていないが、一部の例において、予測サーバ128は第1のイメージのセットのイメージを、クライアントデバイス104に送信すべきと決定することがある。例えばユーザ102が、イメージコレクション内の第1のイメージから、イメージコレクション内において、当該イメージコレクションの所定のレイアウト内で第1のイメージから1ホップ(hop)より遠く離れた第2のイメージに、ナビゲートすることを想定する。この例において、予測サーバ128は、クライアントデバイス104及びプロキシサーバ130のいずれも、第2のイメージに直接隣接するイメージを格納していないと決定する。したがって、予測サーバ128は、クライアントデバイスのキャッシュ114に格納するため、第1のセットのイメージ(すなわち、直接隣接するイメージ)を送信する。このようにするために、予測サーバ128は、これらのイメージを、直接クライアントデバイス104に、クライアントデバイス104への配信のためにプロキシサーバ130に、又は任意の他の方法で送信することができる。加えて、予測サーバ128は、プロキシサーバ130が第2のセットのいずれのイメージ(すなわち、第1のセットのイメージに直接隣接するイメージ)も格納していないと判断することがある。この場合、予測サーバ128はまた、第2のセットのイメージをプロキシサーバ130に送信する。
<例示的なキャッシュロジック>
図4は、プロキシサーバ130上に存在するキャッシュロジック140の例400である。一方、図5は、予測サーバ128上に存在するキャッシュロジック144の例500である。上記のプロセス300とともに、この例示のロジックは、1つ又はコンピュータ読取可能媒体に格納され、実行されると1つ又は複数のプロセッサに、記載される動作の一部又はそれぞれを実行させる、コンピュータ実行可能命令を備える。さらに、キャッシュロジック140及び144それぞれの一例を以下に提供するが、キャッシュロジック140及び144は複数の他の形式をとることができることを認識されたい。
402において、プロキシサーバ130の例示的なキャッシュロジック400は、1つ又は複数のイメージに対するクライアント要求を受信する。404において、ロジック400は、要求されたイメージが、プロキシサーバ130のキャッシュ136内に格納されているかどうかを問い合わせる。格納されている場合、406において、キャッシュロジック400は、要求されたイメージをクライアントデバイスに送信する。しかしながら、格納されていない場合、キャッシュロジック400は、408において、イメージが、予測サーバ128から要求されているイメージのキューに既に格納されているかどうかを問い合わせる。キューに格納されていない場合、410において、ロジック400はイメージをキューに追加する。そのようにした後(又はイメージが既にキュー内にあった場合)、プロキシサーバ130は、412において予測サーバからイメージを取得し、414においてプロキシサーバ130はこれらのイメージをプロキシサーバ130のキャッシュ136に格納する。次いで406において、プロキシサーバ130は、これらの写真をクライアントデバイスに送信する。
416において、例示的なロジック400は、要求された1つ又は複数のイメージが「T+2」セット内であるかどうかを問い合わせる。ここで、「T」は、クライアントデバイスが現在レンダリングしているイメージを示し、「T+1」は、「T」に直接隣接するイメージを示し、「T+2」は、「T+1」のイメージに直接近接しているイメージを示す。要求された1つ又は複数のイメージが「T+2」セット内でない場合、次いで418において、ロジック400は、プロキシサーバ130のキャッシュ136がいっぱいであるかどうか(すなわち、記憶空間の残り部分が閾値量よりも少ないかどうか)を問い合わせる。キャッシュ136がいっぱいでなければ、次いで420において、例示的なキャッシュロジック400は、追加のクライアント要求を継続して待つ。しかしながら、キャッシュ136がいっぱいである場合、次いで422において、キャッシュロジック400は、420においてクライアント要求を継続して待つ前に、所定のイメージ置換ポリシーに従ってキャッシュ136内のある特定のイメージを除去する。
決定ブロック416に戻ると、例示のロジック400が、要求されたイメージは「T+2」セット内であると判断した場合、次いでロジック400は、424において通知メッセージを予測サーバ128に送信する。これに応じて、426において、例示的なキャッシュロジック400は、予測サーバ128からのイメージを受信し、428においてこれらのイメージをキャッシュ136に格納する。この場合も、例示のキャッシュロジック400は次いで、キャッシュ136がいっぱいであるかどうかを判断し、その結果に従って動作して、最終的に420において追加のクライアント要求を継続して待つ。
図5は、予測サーバ128の例示的なキャッシュロジック500を図示している。502において、予測サーバ128は、クライアント要求を、潜在的にプロキシサーバ130から受信する。504において、ロジック500は、この要求がレイアウトファイル(例えばレイアウトファイル112)を求めるものであるかどうかを問い合わせる。レイアウトファイルを求める要求であるとき、ロジック500は、506において、要求されたレイアウトファイルが、予測サーバ128のキャッシュに格納されているかどうかを問い合わせる。予測サーバ128のキャッシュ内に格納されている場合、次いで508において、予測サーバ128はレイアウトファイルをプロキシサーバ130に送信する。しかしながら、予測サーバ128のキャッシュ内に格納されていない場合、次いで例示的なキャッシュロジック500は、510においてレイアウトファイルを取得して、このファイルを予測サーバのキャッシュに格納し、その後508においてファイルをプロキシサーバ130に送信する。
判断プロック504に戻ると、例示的なキャッシュロジック500が、クライアント要求はレイアウトファイルを求めるものではない(したがって、イメージコレクションの1つ又は複数のイメージを求めるものである)と決定した場合、次いで512において、例示ロジック500は、ユーザがナビゲートし得る1つ又は複数の可能性のあるイメージを予測する。例えば、例示的なキャッシュロジック500は、クライアントデバイスが現在レンダリングしているイメージに直接隣接するイメージの第1のセット、及び/又は第1のセットのイメージに直接隣接するイメージの第2のセットを識別することができる。514において、例示的なキャッシュロジック500は、予測したイメージの一部又は各々をプロキシサーバ130に送信することができる。これらのイメージの一部はプロキシサーバ130のキャッシュ136に格納するためのものであり、また一部は、クライアントデバイス104のキャッシュ114に格納するためのものであり、及び/又は一部は、双方のキャッシュに格納するためのものであってもよい。さらに、上述のように、一部の例において予測サーバ128は、第1のイメージのセット内のイメージを、プロキシサーバ130を介するのではなく、クライアントデバイスに直接送信しても、又は他の手法で送信してもよい。
<例示的なコンピューティングデバイスの構成要素>
図6は、図1のクライアントデバイス104、サイトサーバ124、ストレージサーバ126、予測サーバ128及び/又はプロキシサーバ130上に存在し得る幾つかの例示的な構成要素を図示している。この例では数個の例示的な構成要素を示しているが、当業者には認識されるように、これらのコンピューティングデバイスは、上記に説明及び図示された構成要素を含め、複数の他の構成要素を含んでもよいことを認識されたい。
図示されているように、図示されたコンピューティングデバイスの各々は、1つ又は複数のプロセッサ602とメモリ604を含む。メモリ604(及び本明細書で説明された他のメモリ)はコンピュータ読取可能媒体を備えることができる。このコンピュータ読取可能媒体は、少なくとも2つのタイプのコンピュータ読取可能媒体、すなわち、コンピュータ記憶媒体と通信媒体とを含む。
コンピュータ記憶媒体は、コンピュータ読取可能命令、データ構造、プログラムモジュール又は他のデータなどの情報を記憶するための任意の方法又は技術において実装される、揮発性及び非揮発性、取外し可能及び取外し不可能な媒体を含む。コンピュータ記憶媒体は、限定ではないが、RAM、ROM、EEPROM、フラッシュメモリ若しくは他のメモリ技術、CR−ROM、デジタル多用途ディスク(DVD)若しくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置若しくは他の磁気記憶デバイス、又はコンピューティングデバイスによるアクセスのために情報を格納するのに使用することができる任意の他の非伝送媒体を含む。
対照的に、通信媒体は、コンピュータ読取可能命令、データ構造、プログラムモジュール又は他のデータを、搬送波又は他の伝送機構などの変調データ信号に具現化する。本明細書で定義されるとき、コンピュータ記憶媒体は通信媒体を含まない。
さらに、メモリ604は、オペレーティングシステム(OS)606、並びにOS606の上で実行する様々なアプリケーション及びデータ608を格納することができる。デバイスはそれぞれ、他のデバイスとネットワークを介して通信するための1つ又は複数のネットワークインタフェース610を含むこともできる。最後に、各デバイスは、個々のデバイスを操作するための1つ又は複数の入出力(I/O)構成要素612を含むことができる。例えば、クライアントコンピューティングデバイス104は、キーボード若しくはキーパッド、タッチスクリーン及び/又は任意の他のタイプの入力デバイスを含むことができる。さらに、クライアントコンピューティングデバイスは、ディスプレイ、スピーカ及び/又は任意の他のタイプの出力構成要素を含むことができる。図6に図示されるサーバは同様に、当業者には認識されるように、これらのデバイスを操作するのに適切な他のI/O構成要素612を含む。
<結論>
本件主題を、構造的特徴及び/又は方法的動作に特有の言葉で説明してきたが、特許請求の範囲において定義される主題は、必ずしも説明された特有の特徴又は動作に限定されないことを理解されたい。むしろ、これらの特有の特徴及び動作は、特許請求の範囲を実装する例示の形式として開示されている。

Claims (10)

  1. 予測サーバと、モバイルコンピューティングデバイスとの間に存在するプロキシサーバによって少なくとも部分的に実行される方法であって、
    前記モバイルコンピューティングデバイスから、イメージコレクションの所定のレイアウトの第1のイメージから、該所定のレイアウト内で第1のイメージに直接隣接する第2のイメージへのナビゲーションを指示するデータを受信するステップと、
    前記データを受信したことに少なくとも部分的に応答して、
    前記モバイルコンピューティングデバイスに、前記所定のレイアウト内で前記第2のイメージに直接隣接する第1のセットのイメージを送信するステップと、
    前記予測サーバに、前記第1のセットのイメージに直接隣接する第2のセットのイメージを要求するステップと、
    前記第2のセットのイメージを受信するステップと、
    前記プロキシサーバに、前記予測サーバから受信した前記第2のセットのイメージを格納するステップと
    を含む、方法。
  2. ナビゲーションを指示する前記データを受信することは、前記所定のレイアウト内で前記第2のイメージに直接隣接する前記第1のセットのイメージを求める要求を受信することを含む、
    請求項1に記載の方法。
  3. 前記所定のレイアウト内で前記第2のイメージに直接隣接する前記第1のセットのイメージを送信するステップは、
    前記プロキシサーバに格納されている、前記所定のレイアウト内の前記第2のイメージに直接隣接する各イメージを識別することと、
    前記プロキシサーバに格納されている、前記所定のレイアウト内の前記第2のイメージに直接隣接するイメージのサブセットであって、前記モバイルコンピューティングデバイスに以前に送信されたイメージのサブセットを決定することと、
    前記プロキシサーバに格納されている、前記所定のレイアウト内の前記第2のイメージに直接隣接する各イメージのうち、前記モバイルコンピューティングデバイスに以前に送信されたイメージのサブセットを除くイメージを送信することと
    を含む、請求項1に記載の方法。
  4. プロセッサに、請求項1乃至3のいずれか1項に記載の方法を実行させるプログラム。
  5. 1つ又は複数のコンピューティングデバイスであって、
    1つ又は複数のプロセッサと;
    メモリと;
    前記メモリに格納され、前記1つ又は複数のプロセッサ上で実行可能なプログラムであって、前記1つ又は複数のプロセッサによって実行されると、該プロセッサに、
    クライアントコンピューティングデバイスが、所定のレイアウトに集合的に関連付けられる複数の異なるイメージのうち特定のイメージをレンダリングしている、との指示を受信することと、
    前記指示を受信したことに少なくとも部分的に応答して、
    前記クライアントコンピューティングデバイスに、前記所定のレイアウトにおいて前記特定のイメージに直接隣接する第1のセットのイメージを送信することと、
    予測サーバに、前記第1のセットのイメージに直接隣接する第2のセットのイメージを要求することと、
    前記第2のセットのイメージを受信することと、
    前記メモリ内に、前記予測サーバから受信した前記第2のセットのイメージを格納することと、
    を含む動作を実行させる、プログラムと;
    を備える、1つ又は複数のコンピューティングデバイス。
  6. 前記所定のレイアウトに集合的に関連付けられる前記複数の異なるイメージは、
    前記クライアントコンピューティングデバイスによってレンダリングされる地図、又は
    前記複数の異なるイメージによって表されるシーンの3次元モデルであって、前記クライアントコンピューティングデバイスがレンダリングする前記シーンの3次元モデル
    を定義する、
    請求項5に記載の1つ又は複数のコンピューティングデバイス。
  7. 前記特定のイメージに直接隣接する前記第1のセットのイメージを送信することは、前記所定のレイアウトにおいて前記特定のイメージに隣接する各イメージであって、前記クライアントコンピューティングデバイスに以前に送信された前記第1のセットのイメージのサブセットを除くイメージを送信することを含む、
    請求項5に記載の1つ又は複数のコンピューティングデバイス。
  8. 前記予測サーバから受信した前記第2のセットのイメージは、前記複数の異なるイメージのうちの1つ又は複数の隣接するイメージを備え、該1つ又は複数の隣接するイメージは、前記所定のレイアウト内で前記特定のイメージに直接隣接するイメージに隣接しており、前記予測サーバから以前に受信した1つ又は複数の隣接するイメージのサブセットを除く、
    請求項5に記載の1つ又は複数のコンピューティングデバイス。
  9. 予測サーバのプロセッサによって実行されると、該プロセッサに、
    前記予測サーバ及びクライアントコンピューティングデバイスに通信可能に結合されるプロキシサーバからのイメージ要求を受信するステップであって、前記イメージ要求は、あるシーンの地図又は3次元(3D)モデルを表すイメージコレクションであって、前記クライアントコンピューティングデバイスのユーザが地図又は3次元(3D)モデルへとナビゲートしたイメージコレクションのうちの特定のイメージを識別する、ステップと、
    前記予測サーバにおいて、前記イメージ要求から、前記クライアントコンピューティングデバイスのキャッシュに格納するための前記イメージコレクションのうちの第1のイメージのセットと、前記プロキシサーバのキャッシュに格納するための前記イメージコレクションのうちの第2のイメージのセットとを識別するステップであって、前記第1のイメージのセットは、前記のコレクションのうちの前記特定のイメージに直接隣接するイメージを含み、前記第2のイメージのセットは、前記のコレクションのうちの前記第1のイメージのセットに直接隣接するイメージを含む、ステップと、
    前記第1のイメージのセット及び前記第2のイメージのセットを前記予測サーバから前記プロキシサーバへ送信するステップであって、前記プロキシサーバは、前記第2のイメージのセットをキャッシュし、更に前記第1のイメージのセットを前記クライアントコンピューティングデバイスに送信する、ステップと、
    を含む、動作を実行させる、プログラム。
  10. 予測サーバのプロセッサによって実行される方法であって、
    前記予測サーバ及びクライアントコンピューティングデバイスに通信可能に結合されるプロキシサーバからのイメージ要求を受信するステップであって、前記イメージ要求は、あるシーンの地図又は3次元(3D)モデルを表すイメージコレクションであって、前記クライアントコンピューティングデバイスのユーザが前記地図又は前記3Dモデルへとナビゲートしたイメージコレクションのうちの特定のイメージを識別する、ステップと、
    前記予測サーバにおいて、前記イメージ要求から、前記クライアントコンピューティングデバイスのキャッシュに格納するための前記イメージコレクションのうちの第1のイメージのセットと、前記プロキシサーバのキャッシュに格納するための前記イメージコレクションのうちの第2のイメージのセットとを識別するステップであって、前記第1のイメージのセットは、前記のコレクションのうちの前記特定のイメージに直接隣接するイメージを含み、前記第2のイメージのセットは、前記のコレクションのうちの前記第1のイメージのセットに直接隣接するイメージを含む、ステップと、
    前記第1のイメージのセット及び前記第2のイメージのセットを前記予測サーバから前記プロキシサーバへ送信するステップであって、前記プロキシサーバは、前記第2のイメージのセットをキャッシュし、更に前記第1のイメージのセットを前記クライアントコンピューティングデバイスに送信する、ステップと、
    を含む、方法。
JP2014519071A 2011-07-06 2012-07-06 予測マルチレイヤキャッシュアーキテクチャ Active JP6007246B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/177,058 US8850075B2 (en) 2011-07-06 2011-07-06 Predictive, multi-layer caching architectures
US13/177,058 2011-07-06
PCT/US2012/045777 WO2013006802A1 (en) 2011-07-06 2012-07-06 Predictive, multi-layer caching architectures

Publications (3)

Publication Number Publication Date
JP2014521150A JP2014521150A (ja) 2014-08-25
JP2014521150A5 JP2014521150A5 (ja) 2015-08-20
JP6007246B2 true JP6007246B2 (ja) 2016-10-12

Family

ID=47437472

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014519071A Active JP6007246B2 (ja) 2011-07-06 2012-07-06 予測マルチレイヤキャッシュアーキテクチャ

Country Status (6)

Country Link
US (2) US8850075B2 (ja)
EP (1) EP2730095A4 (ja)
JP (1) JP6007246B2 (ja)
KR (1) KR101885408B1 (ja)
CN (1) CN103650518B (ja)
WO (1) WO2013006802A1 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103282944A (zh) * 2010-11-05 2013-09-04 皇家飞利浦电子股份有限公司 基于图像内容的预测和图像高速缓存器控制器
US8961302B2 (en) 2012-07-20 2015-02-24 Microsoft Technology Licensing, Llc Game browsing
US20140045475A1 (en) * 2012-08-08 2014-02-13 International Business Machines Corporation Techniques for Improving Cache Effectiveness of Caches with Low User Population
US9381432B2 (en) 2012-08-24 2016-07-05 Microsoft Technology Licensing, Llc Game migration
US9717982B2 (en) 2012-12-21 2017-08-01 Microsoft Technology Licensing, Llc Client rendering of latency sensitive game features
US9526980B2 (en) 2012-12-21 2016-12-27 Microsoft Technology Licensing, Llc Client side processing of game controller input
CN103905496A (zh) * 2012-12-27 2014-07-02 腾讯科技(深圳)有限公司 一种图片下载方法及装置
US9564102B2 (en) * 2013-03-14 2017-02-07 Microsoft Technology Licensing, Llc Client side processing of player movement in a remote gaming environment
US9694277B2 (en) 2013-03-14 2017-07-04 Microsoft Technology Licensing, Llc Client side processing of character interactions in a remote gaming environment
US20150113367A1 (en) * 2013-10-17 2015-04-23 International Business Machines Corporation Image transitioning and error detection for online presentations
US9756375B2 (en) * 2015-01-22 2017-09-05 Microsoft Technology Licensing, Llc Predictive server-side rendering of scenes
US9740635B2 (en) * 2015-03-12 2017-08-22 Intel Corporation Computing method and apparatus associated with context-aware management of a file cache
US10554713B2 (en) 2015-06-19 2020-02-04 Microsoft Technology Licensing, Llc Low latency application streaming using temporal frame transformation
FI127677B (en) 2016-02-26 2018-11-30 Valmet Technologies Oy Industrial textiles and their use
CN106528772B (zh) * 2016-11-07 2019-10-22 王昱淇 一种集群服务器端的网络地图多层次缓存方法
US10924525B2 (en) * 2018-10-01 2021-02-16 Microsoft Technology Licensing, Llc Inducing higher input latency in multiplayer programs
WO2020226664A1 (en) * 2019-05-06 2020-11-12 Google Llc Proactive caching of assistant action content at a client device to enable on-device resolution of spoken or typed utterances
JPWO2022003966A1 (ja) * 2020-07-03 2022-01-06

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3621572B2 (ja) * 1997-12-11 2005-02-16 文雄 溝口 地図データの先読み方法及び地図スクロール方法
JP2000285006A (ja) 1999-03-31 2000-10-13 Toshiba Corp 情報取得制御装置及び情報取得制御方法
US7340499B1 (en) 1999-12-03 2008-03-04 Sun Microsystems, Inc. Dynamic embedding of literal object data in supplied instance of information object
US20020021353A1 (en) 2000-06-09 2002-02-21 Denies Mark Streaming panoramic video
US6671424B1 (en) * 2000-07-25 2003-12-30 Chipworks Predictive image caching algorithm
US6724382B2 (en) * 2000-12-04 2004-04-20 Wildtangent, Inc. Method and apparatus for distributing and displaying maps electronically
US20020067379A1 (en) * 2000-12-04 2002-06-06 Kenyon Jeremy A. Method and apparatus for distributing and displaying maps electronically
JP3691405B2 (ja) * 2001-04-25 2005-09-07 ドリームテクノロジーズ株式会社 データ管理装置及び地図表示システム
US7133905B2 (en) * 2002-04-09 2006-11-07 Akamai Technologies, Inc. Method and system for tiered distribution in a content delivery network
US7668536B2 (en) * 2002-08-06 2010-02-23 Hewlett-Packard Development Company, L.P. Retrieving media items to a mobile device
US9342459B2 (en) * 2002-08-06 2016-05-17 Qualcomm Incorporated Cache management in a mobile device
US8176186B2 (en) * 2002-10-30 2012-05-08 Riverbed Technology, Inc. Transaction accelerator for client-server communications systems
US7797064B2 (en) 2002-12-13 2010-09-14 Stephen Loomis Apparatus and method for skipping songs without delay
US7467356B2 (en) * 2003-07-25 2008-12-16 Three-B International Limited Graphical user interface for 3d virtual display browser using virtual display windows
WO2005122025A2 (en) 2004-06-07 2005-12-22 Sling Media, Inc. Personal media broadcasting system
US20060058953A1 (en) * 2004-09-07 2006-03-16 Cooper Clive W System and method of wireless downloads of map and geographic based data to portable computing devices
US7437509B2 (en) 2004-09-29 2008-10-14 Sap Ag Mobile adaptive cache
US20060200308A1 (en) * 2005-03-03 2006-09-07 Arutunian Ethan B Server-based interactive enhanced map imagery engine
US20060200382A1 (en) * 2005-03-03 2006-09-07 Arutunian Ethan B Notifications using enhanced map-based imagery
JP2008535098A (ja) * 2005-03-29 2008-08-28 マイクロソフト コーポレーション ウェブページデータを転送するシステムおよび方法
WO2006129308A1 (en) 2005-05-31 2006-12-07 Mentorwave Technologies Ltd. Method and system for displaying via a network of an interactive movie
US9041744B2 (en) * 2005-07-14 2015-05-26 Telecommunication Systems, Inc. Tiled map display on a wireless device
US7315259B2 (en) * 2005-08-11 2008-01-01 Google Inc. Techniques for displaying and caching tiled map data on constrained-resource services
US20080082549A1 (en) * 2006-10-02 2008-04-03 Vic Baker Multi-Dimensional Web-Enabled Data Viewer
US7675549B1 (en) * 2006-12-08 2010-03-09 Itt Manufacturing Enterprises, Inc. Imaging architecture for region and time of interest collection and dissemination
US8554625B2 (en) 2006-12-08 2013-10-08 Samsung Electronics Co., Ltd. Mobile advertising and content caching mechanism for mobile devices and method for use thereof
US8180735B2 (en) * 2006-12-29 2012-05-15 Prodea Systems, Inc. Managed file backup and restore at remote storage locations through multi-services gateway at user premises
WO2008092131A2 (en) * 2007-01-25 2008-07-31 Skyfire Labs, Inc. Mobile device user interface for remote interaction
WO2009006632A2 (en) * 2007-07-05 2009-01-08 Purdue Research Foundation Nuclear detection via a system of widly distributed low cost detectors
US8531514B2 (en) * 2007-09-20 2013-09-10 Nec Corporation Image providing system and image providing method
US8244770B2 (en) * 2007-09-26 2012-08-14 Telecommunication Systems, Inc. Image tile server
US20090183083A1 (en) 2007-10-01 2009-07-16 Hedges Jason D Method and system for displaying information on a map
US8947421B2 (en) * 2007-10-29 2015-02-03 Interman Corporation Method and server computer for generating map images for creating virtual spaces representing the real world
EP2120014B1 (en) * 2008-05-09 2012-04-18 Research In Motion Limited Predictive downloading of map data
US20090317062A1 (en) * 2008-06-24 2009-12-24 Samsung Electronics Co., Ltd. Image processing method and apparatus
US8103441B2 (en) * 2008-06-26 2012-01-24 Microsoft Corporation Caching navigation content for intermittently connected devices
US8112475B2 (en) * 2008-06-27 2012-02-07 Microsoft Corporation Managing data delivery based on device state
US20100021013A1 (en) * 2008-07-25 2010-01-28 Gale William N Open area maps with guidance
US8825387B2 (en) * 2008-07-25 2014-09-02 Navteq B.V. Positioning open area maps
KR101718533B1 (ko) * 2009-09-25 2017-03-21 톰슨 라이센싱 그리드 내비게이션을 위한 장치 및 방법
CN102656570B (zh) 2009-12-16 2015-11-25 Idtp控股公司 用于缓存的方法和服务器
US8863256B1 (en) * 2011-01-14 2014-10-14 Cisco Technology, Inc. System and method for enabling secure transactions using flexible identity management in a vehicular environment

Also Published As

Publication number Publication date
US9785608B2 (en) 2017-10-10
KR20140041681A (ko) 2014-04-04
KR101885408B1 (ko) 2018-08-03
EP2730095A1 (en) 2014-05-14
CN103650518A (zh) 2014-03-19
JP2014521150A (ja) 2014-08-25
US20130014064A1 (en) 2013-01-10
US20150081779A1 (en) 2015-03-19
EP2730095A4 (en) 2014-06-25
CN103650518B (zh) 2017-04-12
US8850075B2 (en) 2014-09-30
WO2013006802A1 (en) 2013-01-10

Similar Documents

Publication Publication Date Title
JP6007246B2 (ja) 予測マルチレイヤキャッシュアーキテクチャ
US10182127B2 (en) Application-driven CDN pre-caching
JP2020173840A (ja) リモートアクセスされるデータの効率的なライブマイグレーション
US20180183891A1 (en) Optimizing user interface data caching for future actions
US11496546B2 (en) File download manager
US9479564B2 (en) Browsing session metric creation
US9348939B2 (en) Web site sectioning for mobile web browser usability
KR101991537B1 (ko) 자율형 네트워크 스트리밍 기법
WO2016057108A1 (en) Dynamic loading of routes in a single-page application
CN107197359B (zh) 视频文件缓存方法及装置
US20130073601A1 (en) Remote process execution management
Matsudaira Making the mobile web faster
US20120084405A1 (en) Methods And Apparatus For Optimizing Responsiveness Of Portable Documents
JP2020506614A (ja) 360ビデオストリーミングのための予測ビットレート選択
EP2146294A1 (en) Mthod and apparatus for managing media
CN108140037B (zh) 在后台预先实例化本原应用
CN109639813B (zh) 视频文件传输处理方法及装置、电子设备和存储介质
JP6587997B2 (ja) タイムマシン機能のためのスライディングウィンドウ管理方法およびシステム
KR20210154785A (ko) 클라우드 스트리밍 서비스 시스템, 공통 캐시를 이용한 이미지 클라우드 스트리밍 서비스 방법 및 이를 위한 장치
JP5982436B2 (ja) 画面転送サーバ装置、および画面転送方法
KR102376295B1 (ko) 트래픽 제어 정보를 이용하여 미디어를 재생하는 방법과 시스템 및 컴퓨터 판독가능한 기록 매체
KR101511119B1 (ko) 멀티미디어 컨텐츠 어플리케이션 서비스 방법 및 시스템
JP2010186295A (ja) 情報検索システム及び情報検索方法並びにプログラム
KR20140136155A (ko) 클라우드 서비스 시스템에서의 위치 기반의 정보 공유 방법, 이를 위한 장치
KR20090017320A (ko) 웹하드 컨텐츠의 ucc 활용 서비스 제공방법 및 그시스템

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150523

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150701

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150701

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160720

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

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160908

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160912

R150 Certificate of patent or registration of utility model

Ref document number: 6007246

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250