具体实施方式
I.介绍
本说明书公开了包括本发明的各特征的一个或多个实施例。所公开的实施例只例示了本发明。本发明的范围不仅限于所公开的实施例。本发明由所附的权利要求进行限定。
说明书中对“一个实施例”、“实施例”、“示例实施例”等等的引用表示所描述的实施例可包括特定特征、结构或特性,但是,每一个实施例可不必包括该特定特征、结构,或特征。此外,这些短语不一定指相同的实施例。此外,当关于某一实施例描述特定特征、结构或特性时,不管是否被明确描述,关于其他实施例来实现该特征、结构或特性被认为是在本领域技术人员的知识范围内。
本发明的多个示例性实施例在以下描述。应当理解,在此提供的任何章节/子章节标题不旨在限制。本文档中描述了各实施例,并且任何类型的实施例可被包括在任何章节/子章节下。
II.示例实施例
内容递送网络(CDN)是包含被置于不同网络节点的数据副本的计算机网络。CDN提供了原始服务器和终端用户计算机之间的数据的接口。原始服务器是内容的初级源,且CDN的服务器对具有最高需求的原始服务器的内容的副本进行高速缓存。CDN的服务器可被有策略地安排为相比于原始服务器更接近终端用户计算机。终端用户计算机可访问CDN的服务器处的高需求数据,而非不得不直接从原始服务器访问数据。如此,通过增加接入带宽、增加冗余并减少访问等待时间,CDN改善了对数据的访问。可被高速缓存在CDN中的内容的类型包括web对象(文本、图形、URL和脚本)、可下载对象(媒体文件、软件、文档)、应用、直播流媒体和数据库查询。
发展了各种技术来允许内容(例如,地图图块)被更快地提供给用户计算设备处的web浏览器。根据第一技术,在线应用的原始服务器可预测将来的内容请求。所预测的未来内容可被预高速缓存在CDN中,使得如果所预测的未来内容实际被请求,它可被用户计算设备更快地访问。根据第二技术,用户计算设备处的客户机web浏览器可预测未来将可能需要什么内容,并可将该内容预取到用户计算设备处的web浏览器(例如,使用AJAX(异步JavaScript)技术)。例如,用户在计算设备处可使用web浏览器来查看一系列图像。每一次一图像被查看,要被查看的下一图像在原始服务器可被预测,所预测的下一图像可被预取到web浏览器以允许从当前图像到下一图像的平滑且即时的转换。根据第三技术,CDN服务器可预测用户计算设备的未来内容请求,并可将所预测的未来内容预高速缓存在CDN中。
然而,这些技术有缺点。例如,让原始服务器预测未来内容有预先确定要被预高速缓存的内容的缺点。对于将内容预取到web浏览器而言,在用户产生数据传送成本或具有受限带宽(诸如在移动应用中)的情况中,这样的预高速缓存可能是不可接受的和/或可能不能提供所需性能。此外,对于让CDN预测并预高速缓存未来内容而言,CDN可能不得不非常复杂以理解CDN接收的内容请求的类型从而能够推断未来内容请求。
本发明的各实施例克服这样的缺点。在一实施例中,可在用户计算设备处的客户机应用中(例如,在web浏览器或其它客户机应用中)实现用于预测未来可能需要的内容的逻辑。如此,该逻辑可被更具体地针对客户机应用来定制,并可(例如,通过更新)随客户机应用的发展而发展。
此外,在一实施例中,被预测的未来内容可被高速缓存在CDN中的存储中,而不是预高速缓存在web浏览器中。预高速缓存到CDN中的存储不显著增加传送到web浏览器的数据,并因此不对web浏览器性能产生不利影响,并且在数据传送具有成本或存在受限带宽的情况下没有问题。
如此,各实施例允许在CDN的高速缓存服务器中而不是在客户机应用它们本身进行内容预高速缓存。业务逻辑被允许驻留在决定什么内容要被预高速缓存的客户机应用中。客户机应用可以基于用户上下文/行为和/或其它因素直接提示CDN关于什么内容要预高速缓存。预高速缓存提示可以可选地包括内容未来将被使用的可能性指示,从而允许CDN根据可用容量来区分预高速缓存请求的优先级。
各实施例可在任何类型的CDN中实现。例如,图1示出了根据示例实施例将内容递送到用户设备的内容递送网络CDN 100的框图。CDN 100被示为内容递送网络的示例类型,而不是为了进行限制。如图1所示,CDN 100包括原始服务器102以及第一和第二高速缓存服务器104a和104b。此外,如图1所示,CDN 100向第一-第四用户设备106a-106d递送内容。尽管在图1中出于说明的目的示出了单个原始服务器102,两个高速缓存服务器104a和104b,以及四个用户设备106a-106d,但可呈现任何数量的图1中的这些特征,包括一个或多个附加原始服务器、一个或多个附加高速缓存服务器,和/或一个或多个附加用户设备,包括数十、数百、数千,以及甚至更多数量的服务器和/或用户设备。在一实施例中,高速缓存服务器104a和104b可以或可以不被包括在高速缓存服务器群集(以及可选地其它高速缓存服务器)中,并且可存在任何数量的高速缓存服务器群集。
用户设备106a-106d的每一个可以是任何类型的固定或移动计算设备,包括台式计算机(例如,个人计算机等)、移动计算机或计算设备(例如,
设备、RIM
设备、个人数字助理(PDA)、膝上型计算机、笔记本计算机、平板计算机(例如,Apple iPadTM)、上网本等等)、智能电话(例如,Apple iPhone、Google AndroidTM电话、Microsoft
电话等)或其它类型的计算设备。
如图1所示,原始服务器102和高速缓存服务器104a和104b通过网络108a通信地耦合,而高速缓存服务器104a和104b和用户设备106a-106d通过网络108b通信地耦合。网络108a和108b可以是分开的网络或可以被包括在单个网络中。网络108a和108b的示例包括LAN(局域网)、WAN(广域网),或诸如因特网等网络的组合。可被包括在网络108a和108b中的通信链路的示例包括IEEE802.11无线LAN(WLAN)无线链路、微波存取全球互通(Wi-MAX)链路、蜂窝网络链路、无线个域网(PAN)链路(例如,蓝牙TM链路)、以太网链路、USB(通用串行总线)链路等。原始服务器102和高速缓存服务器104a和104b的每一个可以是此处描述的或以其它方式已知的任意类型的计算设备。
如图1所示,用户设备106a-106d的每个包括客户机应用110a-110d中的对应的一个。客户机应用110a-110d是运行在用户设备106a-106d中的应用,它们通过CDN 100访问内容。客户机应用110a-110d的示例包括web浏览器、媒体播放器(例如,视频播放器、图像查看器、音频播放器等),和其它类型的客户机应用。如图1所示,原始服务器102将内容112存储在客户机应用110a-110d可能希望访问的存储中。内容112可以是任何类型的内容,包括web对象(例如,文本、图形/图像/视频、URL(统一资源定位符)、脚本等)、可下载对象(例如,媒体文件、软件、文档等)、应用、直播流媒体和数据库数据。在某些情况中,客户机应用110a-110d可直接在原始服务器102访问内容112。此外,高速缓存服务器104a-104b的每一个可分别将内容112的各部分高速缓存为已高速缓存的内容114a和已高速缓存的内容114b。如此,在某些情况中,客户机应用110a-110d可访问高速缓存服务器104a和104b处的内容112(如已高速缓存内容114a和114b),而不是不得不从原始服务器102获得内容112(这可能是瓶颈)。
例如,如图1所示,用户设备106a的客户机应用110a可向高速缓存服务器104a发送内容请求116。内容请求116指示被预测为未来要被客户机应用110a请求的内容以及客户机应用110a立刻需要的内容。以此方式,客户机应用110a向高速缓存服务器104a发送未来可能被请求的内容,并因此由高速缓存服务器104a来高速缓存是合乎需要的。注意图1的实施例中,内容请求116指示客户机应用110a所需内容以及被预测为客户机应用110a未来要请求的内容两者。在另一实施例中,内容请求116可指示被预测为客户机应用110a未来要请求的内容,而客户机应用110a所需的内容可被指示在从客户机应用110a发送到高速缓存服务器104a的分开的请求中。
高速缓存服务器104a可生成被发送到原始服务器112的内容请求118,请求内容请求116中指示的所预测的未来内容。如果,客户机应用110a请求的所需内容还没有被高速缓存在高速缓存服务器104a处,高速缓存服务器104a可在内容请求118中指示该所需内容,或可以向原始服务器102(或其它原始服务器)发送分开的对所需内容的请求。在对内容请求118的响应120中,原始服务器102可将内容112的内容发送到高速缓存服务器104a。响应120可包括所需内容和所预测的未来内容。另选地,所需内容以及所预测的未来内容可在分开的发送中从原始服务器102发送到高速缓存服务器104a,或者所需内容和所预测的未来内容可被发送自不同原始服务器。高速缓存服务器104a可高速缓存所需内容和所预测的未来内容作为已高速缓存内容114a,并且可以将所需内容作为所需内容122发送到客户机应用110a。如果客户机应用110a确实随后向高速缓存服务器104a请求作为所预测的未来内容的内容,则高速缓存服务器104a可将包括所预测的未来内容的已高速缓存的内容114a发送到客户机应用110a。归因于在高速缓存服务器104a和104b处对所预测的未来内容的高速缓存,客户机应用110b-110d可类似地与高速缓存服务器104a和104b之一或两者交互,从而以比传统技术更加高效的方式来接收原始服务器102的内容。
如上所描述的,在一实施例中,客户机应用可预测未来要被访问的内容,且所预测的内容可被高速缓存在高速缓存服务器处用于更快的响应。在一实施例中,图1的客户机应用110a-110d可预测未来要被访问的内容,并且可向高速缓存服务器104a和104b指示所预测的未来内容以进行高速缓存。例如,图2示出了根据一示例实施例的CDN 200的框图。如图2所示,CDN 200包括原始服务器102、高速缓存服务器202和用户设备106a。高速缓存服务器202是图1的高速缓存服务器104a和104b之一的示例。如图2所示,用户设备106a包括客户机应用204,而客户机应用204包括附加内容预测器208。客户机应用204是图1的客户机应用110a-110d之一的示例。在图2中,客户机应用204被配置来预测随后可能被请求的内容,并且所预测的内容被高速缓存服务器202检索并高速缓存。
以下结合图3描述图2。图3示出了根据一示例实施例的提供一过程的流程图300,该过程用于供高速缓存服务器以将客户机应用未来可能请求的内容进行高速缓存。在一个实施例中,流程图300可由图2的高速缓存服务器202来执行。在一实施例中,流程图300可被共享高速缓存存储的多个高速缓存服务器联合执行。此外,流程图300中的关于原始服务器的通信可用单个原始服务器或多个原始服务器来执行。基于以下有关流程图300和高速缓存服务器202的讨论,其他结构及操作的实施例对于相关领域的技术人员将是显而易见的。
流程图300开始于步骤302。在步骤302,从用户设备中的客户机应用接收对所需内容的请求,该请求指示可能随后被所述客户机应用请求的与所需内容相关的附加内容。例如,如图2所示,高速缓存服务器202可从用户设备106a的客户机应用204接收第一所需内容请求210。第一所需内容请求210是对所需内容的请求,所需内容诸如用户使用客户机应用204正在查看的地图的地图图块、用户使用客户机应用204正在查看的一系列图像中的一图像、用户使用客户机应用204正在观看的视频对象(例如视频文件)的一视频帧、用户使用客户机应用204正在播放的音频对象(例如音频文件)的一音频帧、用户使用客户机应用204正在查看的网页的内容项,和/或本文别处讨论的或以其它方式已知的其它内容。
此外,第一所需内容请求210包括指示可能随后被客户机应用204请求的与所需内容相关的附加内容。在一实施例中,客户机应用204的附加内容预测器208预测可能随后被客户机应用204请求的与所需内容相关的附加内容。例如,所预测的附加内容可以是用户正在查看的地图的被预测为随后要被用户查看一个或多个附加地图图块、用户正在查看的一系列图像的被预测为随后要被用户查看一个或多个附加图像、用户正在观看的一视频对象的被预测为随后要被用户观看一个或多个附加视频帧、用户正在播放的一音频频对象的被预测为随后要被播放一个或多个附加音频帧、被预测为随后要被查看的网页所引用的一个或多个附加内容项等等。所预测的附加内容的指示被客户机应用204包括在第一所需内容请求中。
注意第一所需内容请求210(及其响应)可被包括在客户机应用204和高速缓存服务器202之间的一个或多个通信连接(例如,TCP连接)中。可在客户机应用204和高速缓存服务器202之间形成任何数量的连接,并且每个连接可包括对所需内容的请求和/或可指示一个或多个所预测的附加内容项。在一些情况中,所需内容可能已经被高速缓存在高速缓存服务器202处,而所预测的未来内容还没有被高速缓存。在这样的情况中,高速缓存服务器202可仅仅向原始服务器请求所预测的未来内容(即,不需要向原始服务器请求已经被高速缓存在高速缓存服务器202处的所需内容)。
返回图3,在步骤304,对至少所指示的附加内容的请求被发送到原始服务器。例如,如图2所示,高速缓存服务器202可发送指示在第一所需内容请求210中所指示的附加内容的服务器请求212。服务器请求212由原始服务器102接收。如果所需内容尚未被高速缓存服务器202所高速缓存,则高速缓存服务器202可以可选地向原始服务器102发送对第一所需内容请求210中指示的所需内容的请求。在一实施例中,服务器请求212可包括对所预测的附加内容的请求和对所需内容的请求两者。
在步骤306,从原始服务器接收附加内容。例如,响应于服务器请求212,原始服务器102可发送包括所需内容(如果被请求的话)的服务器响应214。例如,原始服务器102可访问与原始服务器102相关联的存储中的所需内容。高速缓存服务器202从原始服务器102接收服务器响应214。此外,原始服务器102可访问与原始服务器102相关联的存储中的所预测的附加内容,并可以在服务器响应214或分开的响应中将所预测的附加内容发送到高速缓存服务器202。
在步骤308,所需内容被发送到用户设备处的客户机应用。例如,如图2所示,高速缓存服务器202可以在第一所需内容响应216中将所请求的所需内容发送到客户机应用204。
在步骤310,附加内容被高速缓存。例如,如图2所示,高速缓存服务器202可包括存储222,并且从原始服务器102在服务器响应214中接收到的所预测的附加内容可被高速缓存在存储222中作为已高速缓存的内容224。存储222可包括用以高速缓存内容的任何类型的存储机制中的一个或多个,包括(例如,在硬盘驱动器中的)磁盘、(例如,在光盘驱动器中的)光盘、(例如,在磁带驱动器中的)磁带、诸如RAM(随机存取存储器)设备等存储器设备,和/或任何其他合适类型的存储介质。此外,在一实施例中,存储222可被共享于多个高速缓存服务器之中。
根据流程图300,客户机应用已经通知CDN未来可能被需要的附加内容的预测,且所预测的附加内容被预高速缓存在CDN中(例如,在CDN的高速缓存服务器402中)。该预高速缓存增加了实际随后请求的内容的高速缓存命中率,因此总体改善了终端用户的体验。注意到全部预高速缓存将不一定被使用,且所预高速缓存的请求可以可选地被区分为优先级在常规CDN内容请求之下。以下进一步描述这样的优先级区分的示例实施例。预高速缓存的益处是更好地利用(存在的)空余容量以改善总体用户体验。优先级区分的使用(例如可能性指示符)有助于优化预高速缓存。
例如,图4示出了根据一示例实施例的提供用于向客户机应用提供先前已高速缓存的内容的过程的流程图400。例如,在一实施例中,流程图400可跟随图3的流程图300。以下参考图2描述流程图400。
流程图400开始于步骤402。在步骤402,从客户机应用接收包括对附加内容的请求的第二请求。例如,如图2所示,高速缓存服务器202可从用户设备106a的客户机应用204接收第二所需内容请求218。第二所需内容请求218是客户机应用204对内容(例如,地图图块、图像、视频、音频、网页等)的请求,该内容先前被预测为在未来潜在地被客户机应用204请求并被指示在第一所需内容请求210(或其它先前所需内容请求)中。
在步骤404,已高速缓存的附加内容被发送到用户设备处的客户机应用。在一实施例中,高速缓存服务器202可分析第二所需内容请求218以确定其中被请求的任何内容是否已经被高速缓存在高速缓存服务器202处(例如,在存储222中)。例如,在一实施例中,高速缓存服务器202可访问已高速缓存内容映射或将内容标识符(例如,标识号,诸如散列值等)映射到高速缓存在存储222中的内容的其它数据结构。高速缓存服务器202可将在对所需内容的第二所需内容请求218中接收到的内容标识符与已高速缓存的内容映射中的内容标识符进行比较,以确定所需内容是否已经被高速缓存。如果所需内容的内容标识符在已高速缓存的内容映射中被找到,则所需内容已经被高速缓存在高速缓存服务器202处。在此情况中,高速缓存服务器202可访问已高速缓存在存储222中的内容(例如,作为已高速缓存内容224),并可在已高速缓存内容响应220的发送中将该已高速缓存内容提供给客户机应用204。
在第二所需内容请求218中指示的所需内容还未被高速缓存在高速缓存服务器202处的情况中,高速缓存服务器202可向原始服务器102请求所需内容,如前面结合(图3)流程图300的步骤304和306所描述的。此外,第二所需内容请求218可以可选地以类似于第一所需内容请求210的方式,指示由附加内容预测器208预测的潜在地随后被需要的另外的附加内容。在此情况中,高速缓存服务器202可以以类似于上面结合流程图300的步骤304、306和310的描述的方式,向原始服务器102请求所指示的另外的附加内容,并可将该所指示的另外的附加内容高速缓存在存储222中用于随后的内容请求。
客户机应用和高速缓存服务器的示例实施例在后续子章节中描述。
A、示例客户机应用实施例
如上所描述的,在一实施例中,客户机应用(例如客户机应用204)可预测未来要被访问的内容,且所预测的内容可被高速缓存在高速缓存服务器处用于更快的响应。例如,图5根据一示例实施例示出了流程图500,它提供了用于供客户机应用请求并接收所需内容并指示未来可能被请求的内容以高速缓存的过程。在一个实施例中,流程图500可由图2的客户机应用204来执行。流程图500参考图6来描述。图6示出了包括客户机应用204的示例实施例的用户设备600的框图。如图6所示,客户机应用204包括通信接口602和附加内容预测器208,而通信接口602包括请求格式化器604。基于关于流程图500和图6的客户机应用204的以下讨论,进一步的结构和操作实施例对相关领域技术人员是显而易见的。
流程图500开始于步骤502。在步骤502,生成对所需内容的第一请求,它指示随后可能被客户机应用请求的与所需内容相关的附加内容。例如,如图6所示,客户机应用204可生成第一所需内容请求210,如上所述,该请求是对所需内容的请求。此外,如上所述,第一所需内容请求210包括对可能随后被客户机应用204请求的与所需内容相关的附加内容的指示。
在一实施例中,客户机应用204的附加内容预测器208预测可能随后被客户机应用204请求的与所需内容相关的附加内容。例如,如图6所示,附加内容预测器208可接收所需内容指示606。所需内容指示606可在客户机应用204内部生成和/或可被用户输入到由客户机应用204提供的用户界面。所需内容指示606指示需要被显示、播放,或以其他方式交互的内容。例如,所需内容指示606可(例如,通过URL,文件名等)指示地图图块、视频帧、音频帧、图像、网页等中的一个或多个。附加内容预测器208可基于由所需内容指示606指示的所需内容来预测附加内容,并可将所预测的附加内容输出为所预测附加内容指示608。
例如,当所需内容指示606将所查看的地图的一图块指示为所需内容时,附加内容预测器208可预测该地图的随后要被用户查看的一个或多个附加的地图图块。在这样的情况中,附加内容预测器208可生成所预测的附加内容指示608以指示与所指示的地图图块在空间上相邻的一个或多个地图图块,所指示的地图图块内的地图图块(放大)、包括所指示的地图图块的地图图块(缩小),和/或地图的有可能随后被用户查看的其它地图图块。
在另一示例中,在所需内容指示606将一系列图像的一图像指示为所需内容的情况下,附加内容预测器208可将该一系列图像的一个或多个附加图像预测为随后要由用户查看,诸如该一系列图像的与所指示的图像(时间上或空间上)相邻的一个或多个后续图像(包括后续图像的全部余下部分)、所指示的图像的一部分的图像(例如放大图像)、包括整个所指示图像的图像(例如,缩小图像)。
在另一示例中,在所需内容指示606将视频的一视频帧指示为所需内容的情况下,附加内容预测器208可将该视频的一个或多个附加视频帧预测为随后要被用户查看的,诸如该视频的一个或多个后续视频帧(包括视频的全部余下部分)。
在又一示例中,在所需内容指示606将音频的一音频帧指示为所需内容的情况下,附加内容预测器208可将该音频的一个或多个附加音频帧预测为随后要被用户播放的,诸如该音频的一个或多个后续音频帧(包括音频的全部余下部分)。
在又一示例中,在所需内容指示606将一网页指示为所需内容的情况下,附加内容预测器208可将一个或多个附加网页或其它web对象(例如图像、视频、音频等)预测为随后要被用户查看的,诸如一个或多个网页或链接在所指示的网页内的其它web对象、包括所指示网页的web站点的一个或多个网页等。
如图6所示,通信接口602接收所需内容指示606和所预测的附加内容指示608。在一实施例中,请求格式化器604生成一个或多个请求来请求所需内容指示606所指示的所需内容以及所预测附加内容指示608所指示的所预测的附加内容。通信接口602被配置来将由请求格式化器604生成的请求作为第一所需内容请求210从客户机应用204发送。在各实施例中,请求格式化器604可生成请求以具有特定通信技术所需的任何格式。
例如,在一实施例中,请求格式化器604可以以HTTP(超文本传输协议)请求消息的形式来生成请求。在这样的实施例中,HTTP请求消息可被配置来请求所需内容,并且所预测的附加内容可被以任何合适的形式指示在HTTP请求消息中,诸如在头部被指示。例如,示例HTTP请求消息的部分示为如下:
GET/images/logo.png HTTP/1.1
...
HINTS:<URL1>=20;<URL2>=60
...
在此示例中,HTTP请求消息包括向服务器请求web对象“/images/logo.png”作为所需内容的请求行。此外,该示例HTTP请求消息包括HTTP头部“HINTS”,它指示两个URL——URL1和URL2——作为所预测的附加内容。在此示例中,“URL1”和“URL2”的每一个可用对对应预测附加内容(例如http://tv.msn.com/tv/article.aspx?news=xyz等)的完整URL来替代在“HINTS”头部中。尽管在上述示例头部中示出两个URL,所预测的附加内容的任何数量的项可被URL或其它标识符以此方式指示在头部中。
因此,在一实施例中,请求格式化器604可(例如使用“GET”指令)生成指示所需内容以及在头部中指示所预测附加内容(例如所预测的附加内容的“HINTS”或其它预定类型的头部)的HTTP请求消息。在其它实施例中,所需内容和所预测附加内容可被请求格式化器604以其它方式指示在请求中。注意,如上面示例所示那样,单个“HINTS”头部可存在于HTTP请求消息中,或者可存在多个“HINTS”头部。再进一步,在一示例中,HTTP请求消息可指示所预测的附加内容而不指示任何所需内容(即,仅仅指定/请求所预测的附加内容)。在这样的HTTP请求消息中,“GET”指令可被用来指定所预测的附加内容,且“HINTS”或其它头部可不被使用,或可存在向高速缓存服务器指示所请求的内容要被高速缓存而尚不返回给客户机的头部(例如“CACHEONLY”头部)。
通信接口602可将第一所需内容请求210发送到高速缓存服务器。在各实施例中,通信接口602可被配置以在HTTP消息中发送第一所需内容请求,和/或可被配置来以能够被相关领域的技术人员所知的其它方式来发送请求。
返回图5,在步骤504中,从高速缓存服务器接收所需内容,该高速缓存服务器响应于对所需内容的第一请求从原始服务器检索所需内容。例如,如图6所示,通信接口602可响应于第一所需内容请求210从高速缓存服务器接收第一所需内容响应216。第一所需内容响应216包括请求210中请求的所需内容。客户机应用204可显示、播放,和/或以其他方式允许用户设备600处的用户与所接收的所需内容进行交互。
在步骤506,生成对附加内容的第二请求。例如,如图6所示,客户机应用204可生成第二所需内容请求218。如上所述,第二所需内容请求218是客户机应用204对内容(例如地图图块、图像、视频、音频、网页等)的请求,该内容先前被预测为可能随后被客户机应用204请求并且在第一所需内容请求210中被如此地指示。第二所需内容请求218可被以与第一所需内容请求210相类似的方式生成。例如,附加内容预测器208可接收第二所需内容指示606,其指示需要被显示、播放,或以其它方式交互的内容。附加内容预测器208可基于由第二所需内容指示606指示的所需内容来可选地预测附加内容,并可将所预测的附加内容输出为第二所预测附加内容指示608。通信接口602接收第二所需内容指示606并可选地接收第二所预测附加内容指示608。在一实施例中,请求格式化器604生成对第二所需内容的请求,并将该第二所预测附加内容可选地包括在所生成的请求中。通信接口602被配置来从客户机应用204发送请求作为第二所需内容请求218。
在步骤508,从高速缓存服务器接收附加内容,该高速缓存服务器响应于对所需内容的第一请求从原始服务器检索了该附加内容并将该附加内容高速缓存。例如,如图6所示,通信接口602可接收已高速缓存的内容响应220,其包括来自高速缓存服务器的已高速缓存内容作为第二所需内容请求218中指示的所需内容。高速缓存服务器先前从原始服务器获得了所需内容并且将所需内容高速缓存以备它可能随后被请求。
如上所述,对用于高速缓存的内容的请求可以可选地被区分为优先级在普通CDN内容请求之下。以此方式,实际正被请求的内容可在仅仅正被请求用于高速缓存目的的内容之前被请求。同样,更大可能实际被请求的正被请求用于高速缓存目的的内容,可在更小可能实际被请求的正被请求用于高速缓存目的的内容之前被高速缓存。
例如,图7示出了根据一示例实施例的,包括附加内容优先级区分器702的附加内容预测器208的框图。附加内容优先级区分器702被配置来分析所预测的附加内容以确定其有多大可能实际随后被客户机应用请求。例如,在一实施例中,附加内容优先级区分器702可根据图8所示的步骤802操作。在步骤802中,生成可能性指示,指示附加内容可随后被客户机应用请求的可能性。在一实施例中,对每个所预测的附加内容项,附加内容优先级区分器702可生成对应的可能性指示,指示附加内容可随后被客户机应用204请求的可能性。所生成的可能性指示可与对应的所预测的附加内容项相关联,并被包括在发送到高速缓存服务器的所需内容请求中。高速缓存服务器可使用可能性指示来将对所预测附加内容项的高速缓存相对于其它内容区分优先级。此外,高速缓存服务器可在请求所预测的内容时将可能性指示发送到原始服务器,使得原始服务器可将向高速缓存服务器提供所预测的内容区分优先级。
附加内容优先级区分器702可以以任何方式生成可能性指示,包括基于正被查看的内容和/或基于用户行为。例如,可为不同内容类型不同地生成可能性指示(例如相对于地图图块将更高的可能性指示值分配给视频帧等)。在另一实施例中,可由附加内容优先级区分器702基于对实际被请求的内容的(例如时间上和/空间上)的邻近度来为所预测的附加内容不同地生成可能性指示。例如,在地图示例中,相对于被一个或多个中间地图图块从正被查看的地图图块分开的地图图块,可将更大的可能性指示值分配给紧邻当前正被查看的地图图块的地图图块。可向视频流的紧接着的下一个视频帧分配具有相对视频流的后面的视频帧(例如视频流中时间上和定位上后面的视频帧)高的可能性指示值。依赖于实际实现,图像流的图像和/或音频流的音频帧可被类似地和/或不同地对待。在网页中,位于接近网页的顶部的内容项(例如URL)可相对于位于该网页的底部的内容项被分配更高的可能性指示值。在各实施例中,根据特定实现的需要,可能性指示可以以各种方式生成,并可以具有任何合适的值和值的范围(例如,数字范围、文本范围(例如,“高”、“中”、“低”等))。考虑到用户行为,当用户正在特定方向上平扫地图时,该方向上的地图图块未来被请求的可能性高于其它图块的可能性,并因此可被分配更高可能性指示。当用户快进视频或音频时,“下一个”帧可能是前面的多个帧,作为流中前面的多个帧的帧可被分配具有相对于更紧邻的帧更高的可能性指示值。
例如,在上面所示的示例HTTP消息中,已经为URL1生成了具有值20的可能性指示,并且已经为URL2生成了具有值60的可能性指示。在这样的示例中,可能性指示可以具有范围为1-100的值,较低的可能性值意味着对应的所预测的附加内容项具有未来被客户机应用所请求的较低的可能性,较高的可能性值意味着对应的所预测的附加内容项具有未来被客户机应用所请求的较高的可能性。如此,在此示例中相对于URL1,URL2具有未来被客户机应用请求的更高可能性,因此在URL1之前被高速缓存。
B、示例高速缓存服务器实施例
图9示出根据一示例实施例的高速缓存服务器902的框图。高速缓存服务器902是图2所示出的高速缓存服务器202的示例。如图2所示,高速缓存服务器902包括内容检索器模块904、内容请求解析器906、内容提供者模块908,以及存储222。高速缓存服务器902可以以各种方式预高速缓存所预测的未来内容。例如,在各实施例中,高速缓存服务器902可执行流程图300和400。
例如,内容请求解析器906可执行流程图300的步骤302,在那儿从用户设备中的客户机应用接收对所需内容的请求,该请求指示可能随后被客户机应用请求的与所需内容相关的附加内容。内容请求解析器906可接收并解析第一所需内容请求210以标识任何所需内容和任何所预测附加内容。内容请求解析器906将第一已标识所需内容和所预测附加内容912发送到内容检索器模块904。
内容检索器模块904可执行流程图300的步骤304,在那儿对所指示的附加内容的请求被发送到原始服务器。如图9所示,内容检索器模块904可将服务器请求212发送到原始服务器,其指示所预测的附加内容并可指示所需内容(如果尚未被高速缓存)。内容检索器模块904可将对所预测的附加内容的请求和对所需内容的请求两者包括在服务器请求212中,或在分开的通信中发送它们。
内容检索器模块904可执行流程图300的步骤306,在那儿从原始服务器接收所需内容和附加内容。内容检索器模块904可从原始服务器接收服务器响应214,包括所需内容(如果被请求)和所预测的附加内容,或可在分开的通信中接收所需内容和所预测的附加内容。
内容提供者模块908执行流程图300的步骤308,在那儿所需内容被发送到用户设备处的客户机应用。如图9所示,内容检索器模块904可发送所检索的所需内容914,包括在服务器响应214中从原始服务器接收的所需内容。内容提供者模块908可接收所检索的所需内容914,并可在第一所需内容响应216中将所需内容发送到客户机应用。
内容检索器模块904可执行流程图300的步骤310,在那儿高速缓存附加内容。如图9所示,内容检索器模块904可将所预测的附加内容高速缓存在存储222中作为已高速缓存内容224。
内容请求解析器906可执行(图4)流程图400的步骤402,在那儿从客户机应用接收第二请求,包括对附加内容的请求。如图9所示,内容请求解析器906可从客户机应用接收第二所需内容请求218。内容请求解析器906可接收并解析第二所需内容请求218以标识任何所需内容和任何所预测附加内容。内容请求解析器906将第二已标识所需内容和所预测附加内容916发送到内容检索器模块904。在图9所示的示例中,第二所标识的所需内容和所预测的附加内容916将第一所标识的所需内容的所预测的附加内容和所预测的附加内容912包括为所需内容。
内容检索器模块904和内容提供者模块908可执行流程图400的步骤404,在那儿已高速缓存的内容被提供给用户设备处的客户机应用。内容检索器模块904可分析第二所标识所需内容和所预测附加内容916以确定是否其中请求的任何内容已经被高速缓存在存储222中。例如,在一实施例中,内容检索器模块904可访问已高速缓存的内容映射或将内容标识符映射到高速缓存在存储222中的内容的上述其它数据结构。如果内容检索器模块904确定所需内容已被高速缓存在存储222中,则内容检索器模块904可访问存储222中的已高速缓存的内容(例如,如已高速缓存内容224),并且可向内容提供者模块908提供已高速缓存的内容作为已高速缓存内容918。内容提供者模块908可在已高速缓存内容响应220中将已高速缓存内容提供给客户机应用。
在第二所标识的所需内容和所预测附加内容916中指示的所需内容尚未被高速缓存在存储222的情况中,内容检索器模块904可如上所述向原始服务器请求所需内容。此外,第二所标识的所需内容和所预测的附加内容916可以可选地指示被预测为随后被请求的其它附加内容。在这样的情况中,内容检索器模块904可向原始服务器请求所指示的其它附加内容,并可将所指示的其它附加内容高速缓存在存储222中用于随后的内容请求,如上所述。
注意,相关领域技术人员应该了解,内容检索器模块904、内容请求解析器906,和内容提供者模块908可被配置来生成请求并根据任何合适的通信协议和格式(包括HTTP消息等)接收响应等。
此外,如上所述,对用于高速缓存的内容的请求可以相对于普通CDN内容请求可选地被区分优先级。例如,图10示出了根据示例实施例图9的内容检索器模块904的框图,包括请求优先级区分器1002。请求优先级区分器1002被配置来区分用于高速缓存的内容的请求的优先级。例如,在一实施例中,请求优先级区分器1002可根据图11所示的步骤1102操作。在步骤1102,基于请求中所接收的可能性指示将所指示的附加内容的请求到原始服务器的发送进行优先级区分。例如,在一实施例中,对于每个所预测的附加内容项,请求优先级区分器1002可基于从客户机应用204接收的对应的可能性指示来相对于其它内容将请求所预测的附加内容项进行优先级区分。
例如,在一实施例中,请求优先级区分器1002可生成并维护优先级列表或列出所预测的附加内容(例如通过标识符)和对应可能性指示的其它数据结构。请求优先级区分器1002可按可能性指示排序该列表,或可以以其他方式构成该列表,使得内容检索器模块904以区分了优先级的方式根据可能性指示请求所预测的附加内容。可针对单个客户机应用或多个客户机应用来列出所预测的附加内容和可能性指示。因此,以此方式,内容检索器模块904可将单个客户机应用或多个客户机应用的向原始服务器的请求进行优先级区分。
例如,关于上面所示示例HTTP消息,请求优先级区分器1002可维持(例如存储并按需更新)包括URL1和URL2的所预测的附加内容及它们的对应可能性指示的列表。因为URL2具有值为60的可能性指示,所以URL2被区分优先级为高于具有可能性指示值20的URL1。以此,在此示例中,根据请求优先级区分器1002所维护的优先级,在从原始服务器检索URL1的内容之前,内容检索器模块904从原始服务器检索URL2的内容。
此外,在各实施例中,内容检索器模块904可使用附加和/或替换信息诸如,可用存储容量、可用网络容量、可用处理(例如CPU)容量等,来对内容的请求区分优先级。再则,在一实施例中,在请求所预测的未来内容时,高速缓存服务器可将可能性指示发送到原始服务器,使得原始服务器可相对于其它内容将把所预测的内容到高速缓存服务器的发送区分优先级(例如,将对所预测的未来内容的请求区分优先级为在对立刻所需内容之下)。如此,在一实施例中,原始服务器可包括类似请求优先级区分器1002的请求优先级区分器,它基于可能性指示和/或附加/替换信息将所预测内容到高速缓存服务器的发送进行优先级区分。
III.示例计算设备实施例
客户机应用110a-110d、客户机应用204、附加内容预测器208、通信接口602、请求格式化器604、附加内容优先级区分器702、内容检索器模块904、内容请求解析器906、内容提供者模块908、请求优先级区分器1002、流程图300、流程图400、流程图500、步骤802、和步骤1102可被实现在硬件、软件、固件,或其任何组合中。例如,客户机应用110a-110d、客户机应用204、附加内容预测器208、通信接口602、请求格式化器604、附加内容优先级区分器702、内容检索器模块904、内容请求解析器906、内容提供者模块908、请求优先级区分器1002、流程图300、流程图400、流程图500、步骤802、和步骤1102可被实现为配置用于在一个或多个处理器中执行的计算机程序代码/指令/逻辑。另选地,客户机应用110a-110d、客户机应用204、附加内容预测器208、通信接口602、请求格式化器604、附加内容优先级区分器702、内容检索器模块904、内容请求解析器906、内容提供者模块908、请求优先级区分器1002、流程图300、流程图400、流程图500、步骤802、和步骤1102可被实现为硬件逻辑/电子电路。例如,在一实施例中,客户机应用110a-110d、客户机应用204、附加内容预测器208、通信接口602、请求格式化器604、附加内容优先级区分器702、内容检索器模块904、内容请求解析器906、内容提供者模块908、请求优先级区分器1002、流程图300、流程图400、流程图500、步骤802、和步骤1102的一个或多个可被一起实现在片上系统(SoC)中。SoC可包括集成电路芯片,该集成电路芯片包括以下一个或多个:处理器(如微控制器、微处理器、数字信号处理器(DSP)等等)、存储器、一个或多个通信接口、和/或用于执行其功能的进一步的电路和/或嵌入的固件。
图12描绘了其中可以实现本发明的各实施例的计算机1200的示例性实现。例如,原始服务器102、高速缓存服务器104a和104b、用户设备106a-106d、高速缓存服务器202、用户设备600,和高速缓存服务器902的每一个可被实现在包括计算机1200的一个或多个特征和/或可替换特征的类似计算机1200的一个或多个计算机系统中。计算机1200可以是例如常规个人计算机、移动计算机、服务器或工作站形式的通用计算设备,或者计算机1200可以是专用计算设备。此处所提供的对计算机1200的描述只是为了说明,并不是限制性的。如相关领域的技术人员所知道的,本发明的各实施例可以在其他类型的计算机系统中实现。
如图12所示,计算机1200包括一个或多个处理器1202、系统存储器1204,以及将包括系统存储器1204的各种系统组件耦合到处理器1202的总线1206。总线1206表示若干类型的总线结构中的任何一种总线结构的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口,以及处理器或使用各种总线体系结构中的任何一种的局部总线。系统存储器1204包括只读存储器(ROM)1208和随机存取存储器(RAM)1210。基本输入/输出系统1212(BIOS)储存在ROM 1208中。
计算机1200还具有一个或多个以下驱动器:用于读写硬盘的硬盘驱动器1214、用于读或写可移动磁盘1218的磁盘驱动器1216、以及用于读或写诸如CD ROM、DVD ROM或其他光介质之类的可移动光盘1222的光盘驱动器1220。硬盘驱动器1214、磁盘驱动器1216,以及光驱动器1220分别通过硬盘驱动器接口1224、磁盘驱动器接口1226,以及光学驱动器接口1228连接到总线1206。驱动器以及它们相关联的计算机可读介质为计算机提供了对计算机可读指令、数据结构、程序模块,及其他数据的非易失存储器。虽然描述了硬盘、可移动磁盘和可移动光盘,但是,也可以使用诸如闪存卡、数字视频盘、随机存取存储器(RAM)、只读存储器(ROM)等等之类的其他类型的计算机可读存储介质来储存数据。
数个程序模块可被储存在硬盘、磁盘、光盘、ROM或RAM上。这些程序包括操作系统1230、一个或多个应用程序1232、其他程序模块1234以及程序数据1236。应用程序1232或程序模块1234可包括,例如,用于实现客户机应用110a-110d、客户机应用204、附加内容预测器208、通信接口602、请求格式化器604、附加内容优先级区分器702、内容检索模块904、内容请求解析器906、内容提供者模块908、请求优先级区分器1002、流程图300、流程图400、流程图500、步骤802,和/或步骤1102(包括流程图300、400、500的任何步骤),和或此处描述的其它实施例的计算机程序逻辑(例如计算机程序代码)。
用户可以通过诸如键盘1238和定点设备1240之类的输入设备向计算机1200中输入命令和信息。其他输入设备(未示出)可包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些及其他输入设备常常通过耦合到总线1206的串行端口接口1242连接到处理器1202,但是,也可以通过其他接口,诸如并行端口、游戏端口、通用串行总线(USB)端口,来进行连接。
显示设备1244也通过诸如视频适配器1246之类的接口连接到总线1206。除了监视器之外,计算机1200还可包括其他外围输出设备(未示出),如扬声器和打印机。
计算机1200通过适配器或网络接口1250、调制解调器1252、或用于通过网络建立通信的其他手段连接到网络1248(例如,因特网)。可以是内置的或外置的调制解调器1252可以经由串行端口接口1242连接到总线1206,如图12所示,或者可以使用包括并行接口的另一接口类型连接到总线1206。
如此处所用的,术语“计算机程序介质”、“计算机可读介质”以及“计算机可读存储介质”被用于泛指介质,诸如与硬盘驱动器1214相关联的硬盘、可移动磁盘1218、可移动光盘1222,以及其他介质,诸如闪存卡、数字视频盘、随机读取存储器(RAM)、只读存储器(ROM)等。这些计算机可读存储介质与通信介质(不包括通信介质)相区别且不重叠。通信介质通常在诸如载波等已调制数据信号中承载计算机可读指令、数据结构、程序模块或者其它数据。术语“已调制数据信号”是指使得以在信号中编码信息的方式来设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括无线介质,如声学、RF、红外和其它无线介质。实施例也针对这些通信介质。
如上文所指示的,计算机程序和模块(包括应用程序1232及其他程序模块1234)可被储存在硬盘、磁盘、光盘、ROM或RAM上。这样的计算机程序也可以通过网络接口1250、串行端口接口1242或任何其他接口类型来接收。这样的计算机程序,当由应用执行或加载时,使得计算机1200能实现此处所讨论的本发明的特征。相应地,这样的计算机程序表示计算机1200的控制器。
本发明还涉及包括储存在任何计算机可使用介质上的软件的计算机程序产品。这样的软件,当在一个或多个数据处理设备中执行时,使数据处理设备如此处所描述的那样操作。本发明的各实施例使用现在已知的或将来已知的任何计算机可使用或计算机可读介质。计算机可读介质的示例包括,但不仅限于,诸如RAM、硬盘驱动器、软盘、CD ROM、DVD ROM、zip磁盘、磁带、磁存储设备、光存储设备、MEM(存储器)、基于纳米技术的存储设备等等之类的存储设备。
VI.结论
尽管上文描述了本发明的各实施例,但是,应该理解,它们只是作为示例来呈现的,而不作为限制。那些精通有关技术的人员将理解,在不偏离如所附权利要求书所定义的本发明的精神和范围的情况下,可以在形式和细节方面进行各种修改。因此,本发明的范围不应该受到上述示例性实施例的任一个的限制,而只应根据下面的权利要求和它们的等效内容进行定义。