内容传送网络(CDN)中的无效的制作方法

文档序号:12037949阅读:180来源:国知局
内容传送网络(CDN)中的无效的制作方法与工艺
相关申请的交叉引用本专利申请要求于2016年4月11日提交的题为“invalidationinacontentdeliverynetwork(cdn)”的美国非临时申请no.15/095,282的优先权,其全部内容通过引用并入本文以用于所有目的。版权声明本专利文档包含受版权保护的材料。版权所有者不反对复制本专利文档或美国专利商标局的档案中的任何相关资料,但另保留所有版权。引用并入以下美国专利通过引用全部并入本文以用于所有目的:12007年10月31日递交且2011年11月15日发布的题为“resourceinvalidationinacontentdeliverynetwork”的美国专利no.8,060,613。2.2013年3月15日递交且2014年9月2日发布的题为“contentdeliveryframeworkwithdynamicservicenetworktopology”的美国专利no.8,825,830。本发明涉及内容传送和内容传送网络。更具体地,本发明涉及内容传送网络中的无效。附图说明本发明的其他目的、特征和特征以及结构的相关元件的操作方法和功能以及部件和制造经济的组合将在参考附图考虑以下描述和附加权利要求的情况下变得更加明显,所有附图构成本说明书的一部分。图1描绘了根据本发明的示例性实施例的内容传送网络(cdn)的各方面;图2描绘了根据本发明的示例性实施例的传送服务的逻辑结构;图3示出了根据本发明的示例性实施例的用于存储无效列表的示例数据结构;图4示出了特定内容提供商的示例属性的层次结构或树结构;图5是本发明的各方面的操作流程图;图6示出了根据本发明的示例性实施例的用于存储共同前缀列表的示例数据结构;以及图7描绘了根据本发明的示例性实施例的计算的各方面。具体实施方式术语表如本文所用,除非另有说明,否则以下术语或缩写具有以下含义:cdn表示内容传送网络;http表示超文本传输协议;https表示安全版http;mov表示最小原始版本;rov表示资源原始版本;uri表示统一资源标识符;以及url表示统一资源定位符。“机制”是指任何设备、处理、例程、服务、模块或其组合。可以在硬件、软件、固件中,使用专用设备或其任何组合来实现机制。机制可以集成到单个设备中,或者可以分布在多个设备上。机制的各种组件可以在同一位置或分布。机制可以由其他机制形成。通常,如本文所使用的,术语“机制”因此可以被认为是术语“设备”和/或“处理”和/或“服务”的简写。背景和概述内容传送网络(cdn)代表一个或多个内容提供商,优选地经由公共互联网将内容(例如,资源)有效地分发给客户端。内容提供商通过原始源(起源服务器或起源)提供其内容(例如,资源)。cdn还可以提供一种过顶传输机制(over-the-toptransportmechanism),用于在反方向上从客户端到起源服务器有效地发送内容。终端用户(客户端)和内容提供商均受益于使用cdn。通过使用cdn,内容提供商能够使其自己的服务器(例如,起源服务器)减轻压力(从而减轻负载)。客户端通过能够以较少的延迟获得内容而受益。图1示出了示例性cdn100的各方面,其中,一个或多个内容提供商102通过一个或多个原始源104和传送服务(服务器)106,经由一个或多个网络110向客户端108提供内容。传送服务(服务器)106可以形成传送网络,客户端可从该传送网络获得内容。传送服务106可以在逻辑上和/或物理上分层次地组织并且可以包括边缘高速缓存。在美国专利no.8,060,613和8,825,830中描述了示例性cdn,这二者的全部内容已经通过引用完整并入本文以用于所有目的。与特定内容提供商相关联或由其提供的内容可以被称为资产(property)。资产可以是例如网站和相关内容,并且通常包括多个资源。cdn可以提供与一个或多个内容提供商相关联和/或代表一个或多个内容提供商的一个或多个资产。内容提供商可以具有多于一个的资产,并且因此cdn可以服务/提供与特定内容提供商相关联和/或代表特定内容提供商的一个或多个资产。应当理解,cdn的组件(例如,传送服务器等)可以使用cdn将内容传送到其他cdn组件。因此,cdn组件本身可以是cdn的客户端。例如,cdn可以使用其自己的基础设施将cdn内容(例如,cdn控制和配置信息)传送到cdn组件。内容(例如,与内容提供商的属性相关联的资源)可以被缓存在cdn内的各种位置处,例如,在由cdn的各种传送服务形成的传送网络中的节点处。内容可以被缓存,例如当其被cdn提供时。cdn不应提供陈旧的或过期的或作废的(无效的)内容,而应在提供服务之前(如果存在内容的有效版本)刷新无效的或过期的或陈旧的内容。内容可以被异步刷新。无效是一种机制,通过该机制,存储在服务中的信息(例如,可用于导出对未来请求的响应的信息)被标记或指定为不再可直接用于响应导出,从而指示必须使用某种形式的状态更新或替代导出路径来导出对未来请求的响应。使用无效的服务消费无效清单,并在本地处理这些清单中包含的命令。缓存或传送服务是使用无效的服务的典型示例。高速缓存存储资源的文字副本,并使用所存储的文字副本对资源(或基于资源的信息)的未来请求进行响应,只要副本不陈旧。应当理解,请求可以针对特定资源本身或针对基于特定资源确定或导出的信息(例如,另一资源)。在这种情况下,过时可能基于例如所存储的原始副本基于年龄的过期,或者基于从该副本被存储以来该副本是否已被明确地无效。当接收到无效命令时,该无效命令具有已在高速缓存中的命令目标,只需标记该缓存副本即可实现该命令。当资源不在高速缓存中,或者当命令涉及一组潜在的许多资源时,必须采取附加步骤,以确保(例如,从某些其他高速缓存器)稍后找回的副本满足最后一个可适用无效命令的约束。在本文中术语“无效”有时被用来指代无效命令。缓存内容可与生存时间(ttl)值相关联,在这种情况下,内容不应在其ttl过期后被提供(即,不应被视为有效)。通过用信号向传送服务(或传送服务网络)发送内容的无效,也可以使该内容无效。例如,可以通过提供指定一个或多个资源的无效指令来用信号发送无效。用于本说明书的目的,资源是或对应于可寻址的内容项。由cdn提供(例如,供应)的每个资源(包括内部cdn资源)可以用统一资源标识符(uri)来标识或寻址,uri可以是统一资源定位符(url)。例如在networkworkinggroup,requestforcomments(rfc)3986,berners-lee,2005年1月,“统一资源标识符(uri):通用语法”中描述了uri。并且例如在networkworkinggroup,berners-lee,requestforcomments1738,1994年12月,“统一资源定位符(url)”中描述了url,这二者的全部内容通过引用完整并入本文以用于所有目的。在优选实施例中,每个资源可由url寻址,并且无效指令可以指定单个资源或一组(零个或更多个)资源。指定单个资源的无效指令可以指定该资源的url(或uri)。可以例如通过一组对可能资源集合的约束来指定资源组。因此,通常,组无效通过定义组成员的一个或多个约束来指定组。组无效指令可以例如指定特定子目录中的所有内容或具有共同扩展名的所有资源不再有效。指定资源组的无效指令可以例如使用在这些资源的规范中的一个或多个通配符。在一些实现中,组无效被称为通配符无效。例如,特定内容提供商(cp)可以具有由根“/cp”指定的属性,并且可以包括子目录“/cp/图像”下的图像。特定图像(例如,“/cp/images/imagel.jpg”)可以被无效,一组图像(例如,“/cp/images/image_september*2014.jpg”)同样可以被无效,其中星号是对应于零个或更多个字符的元字符(或通配符)。应当理解,组无效可以指定零个或更多个资源。例如,可能不存在满足约束“/cp/images/image_september*2014.jpg”的任何资源。如这里所使用的,“资源”表示(潜在的)对特定请求的的缓存响应,因此理论上可以考虑请求或响应的任何属性来定义组。基于资源组的无效系统的实际实现可能针对如何有效定义组来施加附加约束,但是这种约束不需要在架构级施加。在本发明的一些优选实现中,可以通过诸如所谓的“glob”模式语言之类的模式语言来指定组。如本文所使用的,glob模式语言是任意模式语言,其中,“*”元字符用于匹配任何字符序列,但是也可以存在其他元字符。glob是以glob模式语言编写的模式。*-glob(星号glob)模式语言是只有“*”元字符和文字字符的glob模式语言。*-glob(星号-glob)(或*-glob模式)是以*-glob模式语言编写的模式。应当理解,该系统不以任何方式受限于本文所使用或描述的模式匹配算法或语言。该系统也不以任何方式受限于用于实现本文所描述的模式或模式匹配(或相关操作)的特定语言或程序。特别地,应当理解,在url上定义的正则表达式或glob模式只是定义组的许多可能方式中的一些方式。本领域技术人员将通过阅读本说明书来认识和理解可以在本文中使用和考虑描述组的不同和/或其他方式。最小原始版本(mov)无效无效清单实现基于原始版本的无效方法。当通过无效命令来无效内容时,该被无效内容的最小原始版本(mov)递增。最小原始版本无效假定每个起源是单个资源命名空间,并且所有无效命令与单个原始位置处的某些原始阈值事件相关。这种方法允许将无效定义为最小原始版本的设置,其中系统中的每个高速缓存在内容从起源进入时估计最小原始版本。mov无效通常要求当在多个位置发布内容时起源服务器是一致的,使得给定的url将接收一致的资源,而不管接触哪个起源。高速缓存中的每个资源具有与之相关联的资源原始版本(rov)。当高速缓存从起源服务器或从另一高速缓存直接获得内容时,获得/设置资源的rov。无论在哪里,rov仍然是资源副本的实际原始版本,直到它被重新验证或刷新。如果高速缓存向另一高速缓存请求内容,则客户端高速缓存使用服务器所提供的任何rov作为其存储在高速缓存中的rov。每个无效命令(ic)都具有相关联的mov值。如果高速缓存中的资源的rov值至少与mov值一样大,则该资源被认为是有效的并且可以被提供。另一方面,如果缓存资源的rov值小于mov值,则在被提供之前必须获得资源的新版本。例如,如果涉及特定资源r的无效命令具有mov=100,并且资源r的缓存版本具有rov=99,则资源r被认为是陈旧的且不能被提供。另一方面,如果资源r的缓存版本具有rov=100或更高,则资源r的缓存版本没有过时,并且可以被使用(例如,被提供)。在于2013年3月15日递交且于2014年9月2日发布的题为“contentdeliveryframeworkwithdynamicservicenetworktopology”的美国专利no.8,825,830中描述了mov无效,其全部内容通过引用全部并入本文,以用于所有目的,包括具体用于描述无效和mov无效。图2描绘了根据本发明的示例性实施例的传送服务106的逻辑结构。如图2所示,传送服务106包括与规则引擎204交互以处理和提供对传入请求的响应的请求/响应处理机制202。所请求的资源可能已被缓存在与传送服务106相关联的本地高速缓存206中,尽管如所解释的,但在提供之前必须确定任何缓存资源的有效性。在这方面,规则引擎204可以通过无效机制210访问在传送服务106处保持的一个或多个无效列表208。用于本说明书的目的,无效机制210的作用是在传送服务106上保持无效信息(例如,无效列表208),如下面更详细描述的。优选地,每个传送服务106负责提供特定属性或属性集合,并且优选地,存在针对传送服务106所负责的每个属性的无效列表。图3示出了用于存储n个无效列表的示例数据结构,其中,针对传送服务106可以提供的每个属性p1、p2…pn有一个列表(在这种情况下,假设传送服务负责提供n个属性中的每一个)。针对特定属性的示例性无效列表可以包括针对该属性的多个无效命令(或约束)。例如,如图3所示,针对属性pn的无效列表可以包括针对该属性的至多m个无效命令(ic1、ic2、ic3…icm)。应当理解,该方法的一方面是可能需要保持在高速缓存器处接收的并且没有命中该高速缓存中的资源的无效命令(或者针对可以从该高速缓存提供的属性),以确保以一致的方式完成匹配资源的任何后续填充。无效命令(icj)指定mov和某个资源描述符或指定符,该资源描述符或指定符标识当前可能在或可能不在高速缓存中的单个资源或资源组。恰好指定一个资源(例如,通过名称)的ic还可以被称为基础资源指定符(groundresourcespecifier)。基础ic可以在接收时被处理,从而当接收到ic时将指定的资源标记为无效。当接收到请求时,对组无效(指定组的无效命令)进行评估。因此,无效命令i可以是:(i)形式为i(mov,r)的基础命令,其中r恰好指定一个资源,mov是该资源的mov值;或(ii)形式为i(mov,g)的组命令,其中mov是mov值,g指定约束集。虽然基础资源指定符指定一个资源,但在某些情况下,基础无效命令可能会影响多个资源,所有这些资源都可能被单个url访问(例如,具有多个可用内容编码的资源或多个变型)。图4示出了特定内容提供商的示例属性的层次结构或树结构。为了该示例,属性以斜杠“/”字符开始,并且具有两个主要的资源子树(“/xyz”和“/abc”)。由“/xyz”指定的资源子树包括资源子树“/xyz/pqr”,其包括四个资源子树(“/xyz/pqr/fa/”,“/xyz/pqr/fan”,“/xyz/pqr/fun/”和“/xyz/pqr/fx”)。该属性可以包括其他子树(未示出)。以下是被配置为具有最多十个无效命令(ic)的属性的示例无效列表,其中存储了七个命令,并且还有用于三个无效命令的空间。注意,该列表是进行mov排序的,其基于利用无效命令或清单提供的mov值,或基于皱缩(crumpling)期间确定的mov值(如下所述)。在该示例列表中,无效命令/约束以glob-*模式的形式来指定。因此,例如,第一模式将匹配以字符串“/xyz/pqr/f”开始的任何资源,而第二模式将匹配以字符串“/xyz/pqr/fu”开始的任何资源。因此,参照图4所示的属性层级,第一模式/约束(“/xyz/pqr/f*”)匹配四个资源子树“/xyz/pqr/fa/”、“/xyz/pqr/fan”、“/xyz/pqr/fun/”和“/xyz/pqr/fx”,而第二约束(“/xyz/pqr/fu*”)只匹配子树“/xyz/pqr/fun”。无效命令/约束可能涉及有效资源。例如,在图4所示的示例中,假设子树“/xyz/pqr/fun”中的某些资源无效,但其他子树(“/xyz/pqr/fa/”、“/xyz/pqr/fan”和“/xyz/pqr/fx”)中的所有资源仍然有效。无效命令#1(“/xyz/pqr/f*”)将涉及子树(“/xyz/pqr/fa/”、“/xyz/pqr/fan”和“/xyz/pqr/fx”)中的所有资源,即使它们有效。另一方面,无效命令#2将不涉及这些有效资源。无效约束通常优选尽可能少地涉及(并因此无效)有效资源(如果有的话)。换句话说,无效约束通常优选对有效资源的影响最小,同时仍然使所有无效资源无效。无效机制210包括用于将无效命令添加到适当的无效列表208的添加无效机制212。当传送服务106接收到新的无效命令214(例如,以无效清单的形式)时,添加无效机制212尝试将这些命令中的至少一些添加到适当的无效列表208,如下所述。如所述,每个属性的无效列表具有最大大小(max)(即,它可以存储的最大约束数)。该最大值优选地由管理员设置,并且优选地不可由用户(即,由cdn的订户)设置。每个无效列表还可以具有与之相关联的阈值(t)(其中t≤max)。在当前优选实现中,每个属性的用于存储和搜索的模式的最大全局默认数量是100。对于该初始默认的动机是限制每个请求的glob搜索数(在请求/响应处理期间)。应当理解,不同的订户可以具有不同的最大列表大小。参考图5中的流程图,当传送服务106接收到新的无效命令214时,针对重复,添加无效机制212对适当的无效列表208检查新命令214。删除现有模式的精确重复,并使用新的(最新)mov值以及强制mov值进行更新(如果无效是强制类型,则mov被跟踪,如下面讨论的)。在操作中,无效资源通常保留在高速缓存中,直到针对该资源的请求触发使资源重新有效(例如,经由起源服务器或对等体)。重新有效采用条件get的形式,条件get只有在被修改的情况下才获得资源。所谓的“强制”无效执行来自起源服务器(或适当的位置)的资源的无条件“get”。在插入时,如果模式数量超过所允许的数量(或针对该属性的阈值),则发起皱缩(crumpling),直到模式的数量下降到最大允许数量(或阈值)以下。皱缩对于基于模式的(非显式)无效方法,无效无法安全到期。为了尝试减轻这种方法的潜在性能影响,对皱缩进行优化。目标是对两个条目进行皱缩,使得皱缩的结果产生最小的影响。在无效列表的上下文中,通过皱缩机制216来执行皱缩。皱缩是合并或以某种方式组合两个或更多个无效模式或约束的效果。可以根据皱缩函数crumple来定义皱缩,该皱缩函数crumple采用两个或更多个无效命令(包括其相关联的mov值)作为输入,并返回至少与输入无效命令一样严格的无效命令(合并的命令)。换句话说,合并的命令至少应使输入命令将无效的每个资源无效。组合/合并的约束被插入到无效列表中,并替换所有被组合/合并的约束,并且所生成的无效约束至少应与所有组合的约束一样严格。注意,皱缩函数的输入可以仅来自当前无效列表,或者其可以包括新接收的无效命令中的一个或多个。为了使皱缩具有最小有效影响,存在两个基本假设:1.与在目录内进行皱缩相比,对目录进行皱缩,特别是“/”,影响更多的资源。2.与对较少数量的字符进行皱缩相比,对目录中的较多数量的字符进行皱缩影响更多的资源。在优选实现中,高速缓存中没有资源的索引或列表,并且通常也没有办法知道子目录中有多少实际资源。本领域普通技术人员将在阅读本说明书后认识到并理解,由于无法知道任何子目录中有多少实际资源,所以这些假设可能并不总是给出最佳结果。皱缩机制216保持针对服务106所负责的每个属性的前缀列表(或共同前缀数组)218。也就是说,皱缩机制216针对具有无效列表208的每个属性保持每个属性的共同前缀数组(图2和图6)。当接收到新的无效模式时,针对现有的模式列表检查新的模式。如果找到共同前缀,那么将该共同前缀添加到前缀数组(如果还没有的话)。从“最小影响”到“最大影响”对前缀数组进行排序(基于上面给出的两个假设)。前缀数组可以不大于允许模式的最大数量。前缀数组中也可能出现皱缩,但是应该不经常出现,如果这样,则将按照从最大影响到最小影响的顺序删除元素。然后,皱缩涉及采用最小影响前缀数组元素,匹配并组合针对该共同前缀的无效模式。以下是被配置为具有最多十个无效命令的属性的示例性mov排序的无效列表,其中存储了十个命令,并且没有用于更多无效命令(ic)的空间。在这些示例中示出了示例性mov值。无效模式/约束mov值1/xyz/pqr/f*1002/xyz/pqr/fu*1103/abc/def/2*1124/elect/2015*1205/diet/atk*1306/abc/def/4*1407/elect/2012*1508/xyz/pqr/ab*2009/diet/nocrb*22010/st/patrick/*230该属性的相应前缀列表为:共同前缀列表1/diet/2/abc/def/3/xyz/pqr/4/elect/2015/xyz/pqr/f678910在该示例中,当接收到新的无效命令(例如,“/st/peter/*”)时,应在确定对什么进行皱缩前将条目(“/st/p”)添加到(它与无效列表中已有的任何条目之间的最长共同前缀的)前缀列表。由于对目录中的6个字符进行皱缩,所以应将其紧靠在“/elect/201”之前插入,如下所示:共同前缀列表1/diet/2/abc/def/3/xyz/pqr/4/st/p5/elect/2016/xyz/pqr/f78910还必需在无效清单上留出空间。存在多个可能的合并候选,例如:(i)“/xyz/pqr/f*”和“/xyz/pqr/fu*”可以合并为“/xyz/pqr/f*”;或者(ii)“/diet/atk*”和“/diet/nocrb*”可以合并为“/diet/*”;或者(iii)“/xyz/pqr/f*”和“/xyz/pqr/fu*”和“/xyz/pqr/ab*”可以合并为“/xyz/pqr/*”;或者(iv)“/abc/def/2*”和“/abc/def/4*”可以合并为“/abc/def/*”;或者(v)“/xyz/pqr/f*”和“/xyz/pqr/fu*”和“/xyz/pqr/ab*”和“/diet/atk*”和“/diet/nocrb*”可以全部合并为“/di*”;或者(vi)“/elect/2015*”和“/elect/2012*”可以合并为“/elect/201*”;或者(vii)“/st/peter/*”和“/st/patrick/*”可以合并为“/st/p*”;或者(vii)所有模式/约束可以合并为“/*”。显然,最后一个,(vii)将涉及最多的资源,因为它有效地强制无效针对属性的每个资源。然而,基于前缀数组,将ic合并为前缀“/xyz/pqr/f*”应(对有效资源)具有最小影响。因此,将“/xyz/pqr/f*”和“/xyz/pqr/fu*”两个模式合并为“/xyz/pqr/f*”,并将新模式插入到列表中。皱缩的结果如下所示:如所述,无效列表是mov排序的。mov值在皱缩期间被更新。特别地,合并后模式的mov值是被合并的模式的最高mov值。因此,例如,当组合“/xyz/pqr/f*”和“/xyz/pqr/fu*”时,所得到的条目将具有所组合的无效命令的最高mov;在这种情况下,mov来自“/xyz/pqr/fu*”命令。“/xyz/pqr/f*”的mov值为100,“/xyz/pqr/fu*”的mov值为110,因此合并模式的mov值为110=max(100,110)。通常,如果将k个无效模式(p1…pk)合并(或皱缩)为模式pc,则pc的mov是max(movi,i=1…k)。注意,被合并的特定模式可能已经是先前合并的结果,因此该合并期间可能已经设置了该特定模式的mov。还要注意,模式pc可以是被合并的已经存在的模式(pi)之一,然而其mov值可改变。例如,在给定示例中,在皱缩之前和之后,模式“/xyz/pqr/f*”在列表中,但其mov值已更改(从100到110)。在上面的示例中,“/abc/def/2*”的值和在其以上的值与它们在初始表中一样。本领域的普通技术人员将在阅读本说明书后认识到并且理解,更新合并后资源的mov值可导致更多的假阳性无效。在这里给出的示例中,依照原始无效约束列表,请求路径为/xyz/porfabc且存储有100或更大rov的资源将被认为是新的。然而,在皱缩后,只是rov为110或更大的资源才会被认为是有效的。基于合并和插入,共同前缀列表更新如下:从该示例显而易见的是,皱缩的无效命令不必包括新的命令,并且已经在列表中的命令可以是被合并的命令。将哪些无效命令皱缩或合并的决定可以基于组合命令的mov值。在一些情况下,可以基于哪些无效命令具有组合命令中mov值的最小变化来合并无效命令。在一些情况下,可以基于哪些无效命令具有组合命令中的最小实际mov值来合并无效命令。mov值可以用作例如合并/皱缩候选的决胜者(tiebreaker)。例如,考虑四个无效命令:ic1:constraint1,mov1ic2:constraint2,mov2ic3:constraint3,mov3ic4:constraint4,mov4假设合并选择是:ic5=ic1&ic2:mov5=max(mov1,mov2)ic6=ic3&ic4:mov6=max(mov3,mov4)在一些情况下,可以选择具有mov5和mov6中较低者的合并。在一些情况下,可以选择使(i)mov5和min(mov1,mov2)之间的差以及(ii)mov6和min(mov3,mov4)之间的差最小化的合并。因此,例如,如果mov1=100并且mov2=101,则mov5=101,并且min(mov1,mov2)之间的差为1。如果mov3=90并且mov4=120,则mov6=120,并且mov6和min(mov3,mov4)之间的差为30。将选择使该差最小化的合并(即,ic5)。请求-响应处理在优选实现中,实际资源的无效发生在请求该资源的时间。由于多个原因,这样是有利的,包括:如果资源从不被请求,则基本上没有什么要做(除了存储无效信息)。当服务获得对资源的请求(例如,http请求)时,它针对无效资源的适当列表(即,针对该属性的无效资源的列表)检查所请求的资源。如果该资源对应于列表上的约束,并且资源的rov值小于约束的mov值,则必须在资源可以被提供之前获得资源的有效/新版本。因此,如果列表上的约束指示所请求的资源是无效的,则服务复制资源(例如,从诸如起源服务器的内容提供商的内容源,或从cdn中的另一位置(例如,对等体))。当获得资源的新版本时,更新资源的rov值。例如,假设用户在上述皱缩之前请求资源“/xyz/pqr/fa.gif”。在该示例中,假设高速缓存具有rov=101的版本“/xyz/pqr/fa.gif”。所请求的资源与无效约束“/xyz/pqr/f*”匹配,但缓存资源的rov(rov=101)大于与该约束相关联的mov值(mov=100)。可以提供缓存版本。在上述皱缩之后,约束“/xyz/pqr/f*”的mov值为110,因此rov=101的缓存资源“/xyz/pqr/fa.gif”被认为无效。服务器刷新例如来自起源服务器或cdn中的另一位置的资源“/xyz/pqr/fa.gif”。刷新后版本的rov必须至少为110,以被认为是有效的。如上所述,版本可能已经有效,并且因为皱缩可能被当作是无效的(作为假阳性)。在美国专利no.8,060,613中描述了cdn中无效的示例性操作,其全部内容通过引用完整并入本文以用于所有目的。应当理解,皱缩不必发生在提供内容的同一设备上。例如,皱缩可以在边缘设备处进行,或者可以在中央进行。计算至少部分地通过在cdn100的一个或多个计算机上运行的软件来实现以上示出和描述的服务、机制、操作和动作。可以以多种方式使用各种媒体(例如,计算机可读介质)来存储和传输实现这些方法的程序(以及其他类型的数据)。可以使用硬连接电路或定制硬件来代替或结合可实现各种实施例的处理的一些或全部软件指令。因此,可以使用硬件和软件的各种组合而不只是软件。本领域的普通技术人员将在阅读本说明书之后容易认识和理解,本文描述的各种处理可以由例如适当编程的通用计算机、专用计算机和计算设备来实现。一个或多个这样的计算机或计算设备可以被称为计算机系统。图7是可以在其上实现和实施本公开的实施例的计算机系统700的示意图。根据本示例,计算机系统700包括总线702(即互连)、一个或多个处理器704、主存储器706、可移除存储介质710、只读存储器708、大容量存储设备712以及一个或多个通信端口714。通信端口714可以连接到一个或多个网络,计算机系统700可以通过该网络接收和/或发送数据。如本文所使用的,“处理器”表示一个或多个微处理器、中央处理单元(cpu)、计算设备、微控制器、数字信号处理器或类似设备或其任何组合,而不管其架构如何。执行处理的装置可以包括例如处理器和适合于执行该处理的诸如输入设备和输出设备的那些设备。处理器704可以是任何已知的处理器,例如但不限于或处理器、或处理器或线的处理器等。通信端口714可以是用于基于调制解调器的拨号连接的rs-232端口、10/100以太网端口、使用铜缆或光纤的千兆端口或usb端口等中的任何一个。可以根据计算机系统700所连接到的诸如局域网(lan)、广域网(wan)、cdn或任何网络之类的网络来选择通信端口714。计算机系统700可以经由输入/输出(i/o)端口720与外围设备(例如,显示屏幕716、输入设备718)通信。主存储器706可以是随机存取存储器(ram)或本领域公知的任何其他动态存储设备。只读存储器708可以是任何静态存储设备,例如用于存储静态信息(诸如处理器704的指令)的可编程只读存储器(prom)芯片。大容量存储设备712可以用于存储信息和指令。例如,可以使用诸如系列的小型计算机串行接口(scsi)驱动器之类的硬盘、光盘、诸如独立磁盘的冗余阵列(raid)、诸如系列的raid驱动器之类的磁盘阵列或者任何其他大容量存储设备。总线702将处理器704与其他存储器、存储设备和通信模块通信地耦接。根据所使用的存储设备等,总线702可以是pci/pci-x、scsi、基于通用串行总线(usb)的系统总线(或其他总线)。可移除存储介质710可以是任何种类的外部硬盘驱动器、软盘驱动器、驱动器、致密盘-只读存储器(cd-rom)、致密盘可重写(cd-rw)、数字通用盘-只读存储器(dvd-rom)等。本文中的实施例可以被提供为一个或多个计算机程序产品,其可以包括其上存储有指令的机器可读介质,所述指令可以用于对计算机(或其他电子设备)进行编程以执行处理。如本文所使用的,术语“机器可读介质”是指参与提供数据(例如,指令、数据结构)的任何介质、多个相同或不同介质的组合,所述数据可以由计算机、处理器或类似设备读取。这样的介质可以采取许多形式,包括但不限于非易失性介质、易失性介质和传输介质。非易失性介质包括例如光盘或磁盘以及其他持久型存储器。易失性介质包括通常构成计算机的主存储器的动态随机存取存储器。传输介质包括同轴电缆、铜线和光纤,其包括包含耦接到处理器的系统总线在内的导线。传输介质可以包括或传送诸如在射频(rf)和红外(ir)数据通信期间产生的那些声波、光波和电磁发射。机器可读介质可以包括但不限于软盘、光盘、cd-rom、磁光盘、rom、ram、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、磁卡或光卡、闪存或适用于存储电子指令的其他类型的介质/机器可读介质。此外,本文中的实施例还可以作为计算机程序产品下载,其中,可以通过经由通信链路(例如,调制解调器或网络连接),通过在载波或其他传播介质中体现的数据信号将程序从远程计算机传送到请求计算机。在将数据(例如,指令序列)传送到处理器时可能涉及到以下各种形式的计算机可读介质。例如,数据可以(i)从ram传送到处理器;(ii)通过无线传输介质运送;(iii)根据多种格式、标准或协议进行格式化和/或传输;和/或(iv)以本领域众所周知的各种方式中的任何一种进行加密。计算机可读介质可以(以任何适当的格式)存储适合于执行所述方法的那些程序元素。如所示,主存储器706由支持如本文所讨论的功能的应用(722)进行编码(应用722可以是提供本文描述的cd服务的一些或全部功能的应用)。应用722(和/或如本文所述的其他资源)可以被实现为软件代码,例如,支持根据本文所述的不同实施例的处理功能的数据和/或逻辑指令(例如,存储在存储器中或另一计算机可读介质例如磁盘上的代码)。在一个实施例的操作期间,处理器704通过使用总线702访问主存储器706,以启动、运行、执行、解释或以其他方式执行应用722的逻辑指令。应用722的执行产生与应用有关的服务的处理功能。换句话说,处理724表示在计算机系统700中的处理器704内或之上执行的应用722的一个或多个部分。应当注意,除了本文所讨论的实施(执行)操作的处理724之外,本文的其他实施例还包括应用722本身(即,未执行或非执行逻辑指令和/或数据)。应用722可以存储在诸如磁盘的计算机可读介质(例如,存储仓库)上或存储在光学介质中。根据其他实施例,应用722还可以存储在诸如固件、只读存储器(rom)的存储器类型系统中,或者如本示例中那样,存储为主存储器706内的可执行代码(例如,在随机存取存储器或ram内)。例如,应用722还可以存储在可移除存储介质710、只读存储器708和/或大容量存储设备712中。本领域技术人员将理解,计算机系统700可以包括其他处理和/或软件和硬件组件,诸如控制硬件资源的分配和使用的操作系统。如本文所讨论的,本发明的实施例包括各种步骤或操作。这些步骤可以由硬件组件执行或可以在机器可执行指令中体现,这些指令可以用于使以指令编程的通用或专用处理器执行所述操作。备选地,步骤可以由硬件、软件和/或固件的组合执行。术语“模块”是指自包含的功能组件,其可以包括硬件、软件、固件或其任何组合。本领域的普通技术人员将在阅读本说明书之后容易认识和理解,装置的实施例可以包括可操作以执行所描述的处理中的一些(但不一定全部)处理的计算机/计算设备。存储程序或数据结构的计算机可读介质的实施例包括存储程序的计算机可读介质,所述程序在执行时可以使处理器执行所描述的处理中的一些(但不一定全部)处理。在本文中描述处理的情况下,本领域的普通技术人员将理解,处理可以在没有任何用户干预的情况下操作。在另一实施例中,处理包括一些人的干预(例如,由人或通过人的协助来执行步骤)。如本文所使用的,包括在权利要求中,短语“至少一些”是指“一个或多个”,并且包括仅一个的情况。因此,例如,短语“至少一些服务”是指“一个或多个服务”,并且包括一个服务的情况。如本文所使用的,包括在权利要求中,短语“基于”是指“部分地基于”或“至少部分地基于”,而不是排他性的。因此,例如,短语“基于因子x”是指“部分地基于因子x”或“至少部分地基于因子x”。除非使用单词“仅仅”明确说明,否则短语“基于x”并不意味着“仅基于x”。如本文所使用的,包括在权利要求中,短语“使用”是指“至少使用”,而不是排他性的。因此,例如,短语“使用x”表示“至少使用x”。除非使用单词“仅仅”明确说明,否则短语“使用x”并不意味着“仅使用x”。通常,如本文所使用的,包括在权利要求中,除非在短语中具体使用单词“仅”,否则不应将其读入该短语中。如本文所使用的,包括在权利要求中,短语“不同”是指“至少部分不同”。除非另有明确规定,否则不同并不意味着完全不同。因此,例如,短语“x不同于y”表示“x至少部分不同于y”,并不意味着“x与y完全不同”。因此,如本文所使用的,包括在权利要求中,短语“x不同于y”表示x至少以某种方式与y不同。如本文所使用的,包括在权利要求中,列表可以仅包括一个项目,并且除非另有说明,否则不需要以任何特定方式对多个项目的列表进行排序。列表可以包括重复的项目。例如,如本文所使用的,短语“cdn服务的列表”可以包括一个或多个cdn服务。应当理解,说明书和权利要求中的词语“第一”和“第二”用于区分或识别,而不是表明序列或数字限制。类似地,使用字母或数字标签(例如“(a)”、“(b)”等)用于帮助区分和/或识别,而不表示任何序列或数字限制或排序。除非另有明确说明,否则任何流程图中的任何标签框不暗示排序。当图中显示断开的框时,与这些框相关联的活动可以以任何顺序执行,包括完全并行或部分并行。虽然已经结合当前认为最实际和优选的实施例来描述了本发明,但是应该理解本发明不限于所公开的实施例,相反,本发明旨在覆盖所附权利要求的精神和范围内所包括的各种修改和等同布置。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1