加速的子资源加载的制作方法

文档序号:13741909阅读:113来源:国知局
加速的子资源加载的制作方法

本公开内容的各方面涉及资源加载和解析领域、以及在该过程中对子资源的使用。



背景技术:

诸如因特网网页等网络提供的内容通常经由联网计算机系统被提供给终端用户。处理终端用户对网络内容的请求,并且通过各种网络链路响应地提供内容。这些联网计算机系统可以包括最初托管网络内容的原始或托管服务器,诸如用于托管新闻网站的网络服务器。但是,仅由单独的内容源或主机组成的计算机系统可能会由于终端用户对内容的频繁请求而变得过载并且变慢。

内容递送网络(cdn)在内容提供商的原始服务器与终端用户之间添加一层高速缓存。内容递送网络通常具有为终端用户提供对内容的更快访问的多个分布式高速缓存节点。当终端用户请求诸如网页等内容时,请求由被配置为响应于终端用户请求的高速缓存节点(而不是原始服务器)处理。具体地,当终端用户将内容请求指向给定的原始服务器时,域名系统(dns)解析到高速缓存节点(通常该节点被选择为优化服务器)而不是原始服务器,并且高速缓存节点处理该请求。

因此,高速缓存节点用作一个或多个原始服务器的代理或高速缓存。各种类型的原始服务器内容可以被高速缓存在内容递送网络的各高速缓存节点中。当全部或部分所请求的内容尚未被高速缓存节点高速缓存时,该节点可以代表终端用户请求来自适当的原始服务器的相关内容(或其部分)。

更具体地,当网页被终端用户请求时,典型的终端用户设备将发送对网页的请求(例如,通过点击链接或输入统一资源定位符(url)),使得终端用户设备上的浏览器可以加载网页的主资源(例如,主超文本标记语言(html)文件,包括xhtml或html5文件等)。该主资源中可以引用一个或多个附加文件。这样的被引用的文件被称为子资源,并且可以包括但不限于辅html文件(由第一html文件(主资源)和相对于第一html文件(主资源)引用的文件)、级联样式表(css)文件、javascript文件、可执行代码、文本文件、音频文件、flash文件和图像文件。在很多情况下,这样的子资源不被高速缓存在cdn的高速缓存节点中(例如,由于子资源内容的频繁变化,由于与子资源一起存储和/或使用的数据的性质等)。



技术实现要素:

加速的子资源加载的各种实现包括当html文件和其他主资源被请求时向用户提供html文件和其他主资源的内容递送网络的高速缓存节点或其他部件。当用户希望获得网页等时,用户通常通过向服务器提供统一资源定位符(url)和/或其他识别信息来发送对网页的请求。当用户连接到内容递送网络时,该服务器通常是高速缓存来自各种原始服务器等的内容的高速缓存节点。

当内容递送网络接收到对网页等的用户请求时,内容递送网络通过向用户发送主资源来进行响应。这个主资源允许终端用户的设备上的网络浏览器或其他应用开始渲染期望的网页。内容递送网络使用用户的初始请求中的信息来识别和定位渲染网页可能需要的任何子资源。内容递送网络获取(即,预取和预加载)任何所需要的子资源,并且当内容递送网络接收到寻求这样的所需要的子资源的用户请求时将其传输给用户。如上所述,子资源可以包括诸如javascript文件、css文件等文件。

附图说明

参考以下附图可以更好地理解本公开内容的多个方面。附图中的部件不一定按比例,而是将重点放在清楚地示出本公开内容的原理上。此外,在附图中,相同的附图标记在所有视图中表示相应的部分。虽然结合这些附图描述了多个实施方案,但是本公开内容不限于本文中公开的实施方案。相反,意图在于涵盖所有的替代方案、修改和等同物。

图1示出了通信系统。

图2示出了内容递送系统的操作方法。

图3示出了通信系统。

图4示出了内容递送系统的操作方法。

图5a示出了通信系统。

图5b示出了内容递送系统的操作方法。

图6示出了内容递送系统的操作方法。

图7a是示出操作通信系统的示例性方法的序列图。

图7b是示出操作通信系统的示例性方法的序列图。

图7c是示出操作通信系统的示例性方法的序列图。

图8是示出操作通信系统的多种方法的比较的序列图。

图9示出了高速缓存节点。

具体实施方式

诸如网页内容等网络内容通常包括在浏览器或其他专业应用中在终端用户设备上可观看和由终端用户设备渲染的文本、超文本标记语言(html)页面、图片、数字媒体内容、视频、音频、代码、脚本和/或其他内容。诸如因特网网页等这样的网络提供的内容通常经由通过各种网络链路来提供所请求内容的联网计算机系统被提供给终端用户。内容递送网络是这样的联网计算机系统的示例。

内容递送网络高速缓存节点通过将网页的“主资源”(例如,超文本标记语言(html)文件,包括xhtml或html5文件等)发送到终端用户设备的网络浏览器来响应于终端用户对网页的请求,终端用户设备的网络浏览器根据适当的标准(例如,html5规范)和/或模型(例如,以被称为dom树的树结构组织文档(网页)的节点的文档对象模型(dom))来“加载”(或“渲染”或“解析”)网页。网络浏览器识别和组织网页的各种要素以生成被显示在用户设备上的页面。

经常,在主资源中引用一个或多个附加文件,通常在正被渲染的网页上的插入点处。这样的被引用的文件被称为“子资源”,并且可以包括但不限于javascript文件、辅html文件(由第一html文件(主资源)和相对于第一html文件(主资源)引用的文件)、级联样式表(css)文件、flash文件和图像文件。作为与页面的dom交互的网页的部分,javascript可以将客户端行为添加到基于html的网页(例如,以为页面要素设置动画,调整要素大小,创建交互式内容)。

在其中网页由内容递送网络中的高速缓存节点提供的很多情况下,javascript代码和其他子资源不被高速缓存在cdn的高速缓存节点中(例如,由于子资源内容的频繁变化,由于与子资源一起存储和/或使用的数据的性质等)。反而,在用户解析网页期间,必须提取主资源html文件外部的子资源,这个过程可能会延迟用户设备上的网页渲染。典型的解析算法和/或网页dom树构建器通常在遇到脚本时停止,并且必须下载并且执行所引用的脚本之后解析才可以继续,从而由于需要完全下载网页文档中的脚本和所有样式表而引起延迟。另外,如果图像被延迟,则页面看起来不完整。

本文中公开和教导的加速的子资源加载实现通过由cdn(例如,由相关的高速缓存节点)预期性地主动提取相关子资源来减少早期的系统和方法中遇到的脚本检索和其他子资源检索延迟。这种预期性提取可以以各种方式实现以实现与早期的内容递送系统操作相比改进的性能。而且,一些加速的子资源加载实现在将主资源提供给用户之前对主资源进行修改,使得子资源位于主资源的主体的顶部处或附近,从而进一步加速页面渲染。

图1示出了示例性内容递送系统100,其包括内容递送网络(cdn)110、终端用户设备130-132、原始服务器140-141、管理系统160、子资源列表存储库191和日志192。内容递送网络110包括一个或多个高速缓存节点(cn)111-113,每个高速缓存节点可以包括合适的处理资源和一个或多个数据存储系统。每个cn111-113通过cdn网络链路与每个其他cn通信。cn111-113中的每个可以包括一个或多个数据存储系统,诸如针对cn113示出的数据存储系统120。终端用户设备130-132代表可以从网络110请求和接收内容的多个终端用户通信设备。当与给定高速缓存节点111-113相关联的特定用户设备130-132将对内容的请求传输到其相应的高速缓存节点(任何数目的终端用户设备130-132可以与单个高速缓存节点相关联)时,发起从cdn110到给定终端用户设备的内容传送。高速缓存节点111-113和终端用户130-132通过相关联的网络链路170-172进行通信。其他网络部件也通过适当的链路进行通信。内容递送网络110和管理系统160通过链路175进行通信。同样,cdn110和日志192通过链路176进行通信。

高速缓存在cn111-113中之一中和/或由其获取的内容用于通过将所请求的内容传输到终端用户设备来响应于终端用户请求。如本领域中所公知的,cn111-113可以周期性地、按需地等高速缓存来自原始服务器140-141的内容,并且也可以通过直接与原始服务器140-141通信(例如,通过相关联的网络链路173-174)来寻求和获取没有被高速缓存的内容。图1示出了被包括在高速缓存节点113的数据存储系统120中的由内容145-146组成的高速缓存内容121。其他配置是可能的,包括被高速缓存在cn111-113中的各个cn中的内容145-146的子集。尽管图1示出了由数据存储系统120高速缓存原始服务器140-141的内容145-146,但是其他内容可以由cn111-113处理。例如,由终端用户设备130-132的活动生成的动态内容不需要初始驻留在原始服务器140-141上,并且可以由于被包括在由cn111-113递送的网页内容中的脚本或代码而生成。这个动态内容也可以由cn111-113中的cn高速缓存,并且可以在通信会话期间是对于特定的终端用户设备特定的。此外,如上所述,诸如javascript代码等子资源可能只能从原始服务器或除cdn高速缓存节点之外的其他来源(source,源)获得。

管理系统160收集并且递送各种管理数据和其他数据,例如各方(例如,系统操作员、原始服务器操作员、管理者等)的配置变化和状态信息。例如,操作员设备150可以传送配置数据151用于递送给管理系统160,其中配置数据151可以改变cdn111-113对网络内容请求的处理以及其他操作。而且,管理系统160可以监测用于cdn111-113的操作的状态信息,诸如操作统计,并且向操作员设备150提供状态信息153。此外,操作员设备150可以传送内容152用于递送到原始服务器140-141以包括在内容145-146中。尽管在图1中示出了一个操作员设备150,但是应当理解,这仅仅是代表性的,并且通信系统100可以包括用于接收状态信息、提供配置信息或将内容传送到原始服务器的多个操作员设备。

具体关于内容递送网络中的加速的子资源加载,图1示出了在系统100中实现的操作的一种或多种实现(在图1中被指定为步骤(a)至(h)),其中终端用户132请求需要特定javascript代码的网页,该特定javascript代码用于由终端用户的浏览器解析所请求的网页(诸如解释javascript代码检索的这些示例性操作之类的示例性操作也可以针对其他子资源执行,并且可以针对多个子资源来执行)。用户向高速缓存节点113发送请求(步骤(a)),例如包括url的超文本传输协议(http)请求,请求能够使用html文件(即,“主资源”)渲染的网页。cn113通过将与所请求的网页相对应的html文件传输给终端用户132(步骤(b))用于由终端用户的浏览器进行解析来提供该html文件。

使用所接收的终端用户请求中的信息,cn113识别渲染所请求的网页所需要的javascript代码。在图1中,该识别在如下情况下执行:高速缓存节点113查阅子资源列表存储库191(步骤(c))以确定存储库191是否具有由终端用户与解析所请求的网页相关地在历史上请求过的javascript代码(不管是从原始服务器141还是以其他方式可获得)的记录时。可能要由终端用户132请求的javascript代码(以及任何其他子资源)由存储库191识别,并且这样的代码的位置被发送到cn113(步骤(d))。然后cn113从原始服务器141和/或任何其他识别的javascript代码来源请求(步骤(e))所识别的javascript代码,并且随后接收终端用户132可能需要的javascript代码(步骤(f))。cn113然后等待来自终端用户132的对所需要的javascript代码的提取请求(步骤(g))。cn113立即将从原始服务器141检索到的javascript代码发送给终端用户132(步骤(h))。该过程可以与cn113认为可能需要的每个子资源相关地使用,并且因此,以这种方式可以由cn113并行地执行用于多个子资源的加速的子资源预加载。

存储库191可以是维持渲染诸如html页面的给定主资源所需要的子资源的基于url的列表的数据库或其他存储器/存储位置。存储库191可以是cdn中的所有高速缓存节点可访问的单个网络位置。或者,每个高速缓存节点可以具有其自己的用于更快访问的存储库191的实现(位于在每个高速缓存节点内部或者外部的存储器或存储位置内部),其中每个cn的存储库用当前的历史和/或其他数据周期性地更新以促进针对使用该cn的终端用户的加速的子资源加载。当存储库191在给定高速缓存节点113内部时,图1的步骤(c)和(d)在cn113内执行。

存储库191可以存储子资源位置(例如,服务器、ip地址等)的列表,并且使用url和/或其他可搜索的数据为这样的列表编索引。列出的子资源位置可以包含如下的javascript代码和其他子资源:该javascript代码和其他子资源历史上针对一特定url在针对该url的一个或多个先前终端用户请求中被请求过,特别是在这些请求是随着时间来自多个不同的终端用户的情况下。当cdn终端用户请求给定主资源(例如,html文件)时,检查存储库191,并且识别所请求的主资源的任何javascript和/或其他子资源条目,并且然后由cn113对其进行请求。高速缓存节点113独立于终端用户132对主资源的解析并且与其并行地主动地执行子资源的这种预取/预加载。与早期的系统和方法不同,高速缓存节点113不是等到被终端用户请求提示之后才开始提取过程。

可以利用本文中公开的实现的url/网页的一个非限制性示例是具有所有用户可以使用标准url请求来访问的统一/静态内容(例如,新闻故事)的新闻网站。但是,该站点的网页可能包含是用户特定的并且被实现为javascript代码的定制的“收藏夹”要素。因此,在为给定的终端用户渲染站点的页面之一时,可能需要从新闻站点的原始服务器下载像“myfavorites.js”这样的javascript子资源。在这种类型的设置中,cdn操作员相对于可能以类似方式寻求内容的其他各方可以具有一个或多个优势——首先,cdn可以从主题cdn高速缓存节点的所有用户或从整个内容递送网络本身获取历史数据使得子资源的库或数据库及其到特定url的连接强健得多;第二,cdn可能能够访问终端用户的网上信息块(cookie)和其他数据,其允许cdn预加载用户特定的内容,诸如与网页相关地使用的子资源和其他内容。

加速的子资源加载的实现也可以与早期的工具和技术有关地使用。例如,当终端用户的浏览器的网页解析器等待脚本下载和执行时,预加载扫描器(例如,如在webkit中找到的)可以在html文件中预先搜索需要提取的附加脚本和/或其他子资源。一旦识别出这些子资源,就可以将对它们的请求发送到相关的高速缓存节点,该相关的高速缓存节点将使它们准备好返回给终端用户。

高速缓存节点113可以主动地向一个或多个子资源来源发送提取请求。对于需要来自其的一个或多个子资源的每个来源,cn113发送适当的请求(例如,get命令),接收所请求的子资源,并且保持子资源直到来自终端用户设备132的请求。

图2示出了其中实现加速的子资源加载的内容递送网络(或者诸如网络内的高速缓存节点等网络部件)的操作200的方法的一个或多个非限制性示例。在一些实现中,例如,高速缓存节点预取和/或预加载由用户的浏览器渲染所需要的javascript代码。在这些示例中,“加速的子资源加载”、“预加载”和“预取”可以被解释为通常表示:内容递送网络(例如,高速缓存节点或其他cdn部件)在接收到用户对用户的浏览器等所需要的一个或多个子资源的请求之前开始识别这样的子资源。内容递送网络然后获取所需要的子资源。关于图2所涉及的“cdn/cn”是通常实现该方法的高速缓存节点、另一cdn部件或内容递送网络。

cdn/cn接收请求网页(即,主资源)的终端用户请求(210),例如通过使用与html文件相对应的url引用来请求网页。cdn/cn通过向用户发送相应的html文件来响应于请求(220)。终端用户设备对html文件(主资源)的接收允许该设备的浏览器(或其他应用)开始解析该文件并且渲染所请求的网页。在接收到对主资源的用户请求之后,但是在接收到对javascript代码或其他子资源的用户请求之前,cdn/cn通过以下方式来识别所需要的javascript代码和/或其他子资源:查阅数据库、查找表、历史数据等(230)以识别和定位当终端用户设备在解析html文件时渲染网页可能需要的javascript代码和/或其他子资源(在一些实现中,识别和/或获取所需要的子资源的身份可以在用户对主资源的解析开始之前开始)。

识别和定位子资源可以包括cdn/cn查阅数据库、查询表、历史数据或子资源身份的其他存储库,如上面关于图1的存储库191所述。这样的存储库可以使用各种主资源的url、文件名和/或其他因素来编索引。存储库将所需要的子资源的身份和位置(来源)返回给cdn/cn。

cdn/cn然后发送对来自适当的来源的所需要的javascript代码和/或其他子资源的请求(235),并且随后从适当的来源接收所需要的javascript代码和/或其他子资源(240)。该来源可以是所请求的网页的原始服务器,如图1所示,或者它可以是另一来源,例如提供javascript代码等的jquery。所请求的javascript代码(子资源)被返回给cdn/cn,在cdn/cn处子资源可以被存储直到被终端用户设备请求。寻求所需要的子资源的用户请求(250)由cdn/cn接收,这可以在cdn/cn在(240)处查阅了所存储的数据之后的任何时间发生。在接收到用户请求(250)之后,cdn/cn然后通过将所需要的子资源转发给终端用户设备(260)来进行响应。在一些实现中,cdn/cn可以向终端用户设备发送所需要的javascript代码和/或其他子资源,而不用等待请求javascript代码和/或其他子资源的第二终端用户设备请求(250)。

在一些情况下,终端用户对所需要的子资源的请求可能在cdn/cn从所需要的子资源的存储位置接收到所需要的子资源之前被发送到cdn/cn。然而,cdn/cn主动地将其请求发送到所需要的子资源存储位置(即,在从终端用户接收到对所需要的子资源的需求的任何请求或其他通知之前)。因此,各种请求、应答等的时序和顺序可以不同(例如,取决于终端用户设备解析的速度以及所需要的子资源在由终端用户设备浏览器渲染的网页、html文件或其他主资源中的位置),但是cdn/cn对所需要的子资源的识别和检索在寻求所需要的子资源的追踪用户请求之前被发起。在几个附图中可以看到一些示例性时序/顺序差异。

具体关于内容递送网络中的加速的子资源加载的其他实现,图3示出了在系统100中实现的操作的一种或多种附加实现(在图3中被指定为步骤(t)到(z)),其中终端用户132请求网页,所请求的网页需要特定的javascript代码(和/或另一子资源——解释javascript检索的这些示例也可以针对其他子资源来执行)用于由终端用户的浏览器来解析所请求的网页。用户向高速缓存节点113发送请求(步骤(t)),请求可以使用html文件(即,“主资源”)渲染的网页。cn113向终端用户132提供与所请求的网页相对应的html文件(步骤(u))用于解析。

并非查阅存储库或其他数据以获得javascript(和/或其他子资源)身份和位置,cn113通过扫描html文件(步骤(v))来识别所需要的javascript代码。对html文件和/或其他主资源的扫描可以由扫描器193执行,该扫描器可以以各种方式实现,例如以扫描模块、处理器、服务等的形式实现。扫描结果由cn113使用以从原始服务器141和/或任何其他识别的javascript代码来源请求(步骤(w))所识别的javascript代码。接收javascript代码(步骤(x)),并且然后cn113等待来自终端用户132的对所需要的javascript代码的提取请求(步骤(y))。cn113立即将检索到的javascript代码发送给用户132(步骤(z))。这些实现相对于其中cdn查阅数据库、查找表等的实现具有改进的可靠性,因为扫描建立了在给定的html文件中实际需要的javascript代码和其他子资源,而不是依赖于过去的历史和/或数据库更新等。该过程可以关于每个检测到的子资源使用,并且因此可以由cn113以这种方式并行地执行多个子资源的加速的预加载。再次,与早期的系统和方法不同,高速缓存节点113不是等到被终端用户请求提示之后才开始提取过程。

图4示出了其中实现加速的子资源加载的内容递送网络(或者诸如网络内的高速缓存节点等网络部件)的操作4200的方法的一个或多个非限制性示例。再次,内容递送网络在接收到对由终端用户设备浏览器等渲染主资源所需要的一个或多个子资源的用户请求之前获取这样的子资源的身份和来源。内容递送网络请求并且随后接收所需要的子资源。

cdn/cn接收请求网页的用户请求(4210),并且通过向用户发送相应的html文件来响应于该请求(4220)。几乎在它向用户发送html文件的同时(图4的结构不意在暗示在步骤4220和4225之间存在同时性或缺乏同时性;只是它们发生在相同的一般时间范围(timeframe)内),但是在接收到对javascript代码或其他子资源的任何请求之前,cdn/cn扫描html文件以识别渲染所请求的网页所需要的任何javascript代码和/或其他子资源(4225)。由cdn/cn进行的扫描产生所需要的javascript代码或其他子资源的身份和来源。

cdn/cn然后基于扫描结果发送对来自适当的来源的所需要的javascript代码和/或其他子资源的请求(4230)。由cdn/cn接收所请求的javascript代码(子资源)(4240),其中子资源可以被存储直到被终端用户设备请求。寻求所需要的子资源的用户请求(4250)由cdn/cn接收,这可以在cdn/cn开始其对html文件的扫描(4225)之后的任何时间发生。在接收到用户请求(4250)之后,cdn/cn然后通过向终端用户设备发送所需要的子资源(4260)来进行响应。再次,在一些实现中,cdn/cn可以在不等待请求javascript代码和/或其他子资源的第二终端用户设备请求(4250)的情况下将所需要的javascript代码和/或其他子资源发送到终端用户设备。

再次,各种请求、应答等的时序和顺序可以不同(例如,取决于终端用户设备解析的速度以及所需要的子资源在由终端用户设备浏览器渲染的网页、html文件或其他主资源中的位置),但是cdn/cn对所需要的子资源的识别和检索在寻求所需要的子资源的追踪用户请求之前被发起。在几个附图中可以看到一些示例性时序/顺序差异。

在其他加速的子资源加载实现中,可以包括修改html文件或其他主资源的附加步骤,如在图5a、5b和6中可见的。图5a、5b和6的示例性实现利用扫描(类似于关于图3和图4所示的实现示出的扫描)来识别javascript代码和其他子资源,但是主资源修订也可以用与图1和图2的实现类似的实现来实现,在图1和图2的实现中高速缓存节点查阅数据库等以获得身份和位置信息。

图5a示出了在系统100中实现的操作的一种或多种附加实现(在图5a中被指定为步骤(j)至(q)),其中终端用户132请求网页,所请求的网页需要特定的javascript代码用于解析用户请求的网页。用户将网页请求发送到高速缓存节点113(步骤(j))。cn113通过再次使用cn113内的扫描器193扫描html文件(步骤(k))来识别所需要的javascript代码。使用扫描结果,cn113评估给定的javascript代码或其他子资源引用是否可以被移动到html文件中的更高位置。如果是,则cn113编辑html文件(步骤(l))。html文件和/或其他主资源的编辑可以由编辑器195来执行,该编辑器可以以各种方式,例如以编辑模块、处理器、服务等的形式,在cn113中实现。

cn113将与所请求的网页相对应的经编辑的html文件提供给用户132(步骤(m))。扫描结果由cn113使用以从原始服务器141和/或另一来源请求(步骤(n))所识别的javascript代码。接收javascript代码(步骤(o)),并且然后cn113等待来自终端用户132的对所需要的javascript代码的提取请求(步骤(p))。在步骤(l)编辑html文件将javascript代码引用移至更接近html文件主体的顶部,从而减少用户的浏览器到达该引用并且请求所需要的javascript代码所花的时间。一旦cn113接收到javascript代码(子资源)请求,高速缓存节点113就立即将检索到的javascript代码发送给用户132(步骤(q))。该过程可以关于每个检测到的子资源使用,并且因此可以由cn113以这种方式并行地执行多个子资源的加速的预加载。再次,与早期的系统和方法不同,高速缓存节点113不是等到被终端用户请求提示后才开始提取过程。

如在图5b中可见的,原始html文件810可以最初具有符合标准html结构的头部820和主体830。主体830可以分成标题和段落。在原始html文件810中,主体230被分隔成多个区段——上部区段832、中间区段834和下部区段836。javascript代码引用840位于下部区段834中,并且因此直到浏览器的解析器到达该下部区段才会被浏览器的解析器寻址。为了关于javascript代码引用840加速网页的提取、解析和渲染,诸如图5a所示的实现这样的实现中的编辑器编辑原始网页810以生成经编辑的网页8810,其中html文件已将javascript代码引用从下部区段8836向上移动到上部区段8832。

图6示出了实现加速的子资源加载的内容递送网络的操作6200的方法的一个或多个非限制性示例。再次,内容递送网络在接收到对由用户的浏览器等渲染网页所需要的javascript代码和/或一个或多个子资源的用户请求之前获取这样的子资源的身份和来源。

cdn/cn接收请求网页的用户请求(6210)。cdn/cn扫描html文件以识别任何javascript代码和/或其他子资源引用(6220),并且确定所需要的javascript代码或其他子资源的来源。扫描还为cdn/cn提供关于javascript代码和/或其他子资源在html文件中的位置的信息。

cdn/cn基于扫描结果编辑html文件(6225),以将javascript代码和其他子资源引用前移到html文件主体中的更高位置。在这样编辑html文件之后,cdn/cn将经编辑的html文件发送给用户(6230)用于由用户的浏览器解析。扫描结果还用于使用从扫描获得的位置和来源来生成对所识别的javascript代码和其他子资源的一个或多个请求(6235)。

所请求的javascript代码(子资源)被返回给cdn/cn(6240),其中子资源可以被存储直到被终端用户设备请求。由cdn/cn接收寻求所需要的子资源的用户请求(6250),并且然后cdn/cn通过将所需要的子资源转发给终端用户设备(6260)来进行响应。再次,在一些实现中,cdn/cn可以在不等待请求javascript代码和/或其他子资源的第二终端用户设备请求(6250)的情况下向终端用户设备发送所需要的javascript代码和/或其他子资源。

此外,各种请求、应答等的时序和顺序可以不同(例如,取决于终端用户设备解析的速度以及所需要的子资源在由终端用户设备浏览器渲染的网页、html文件或其他主资源中的位置),但是cdn/cn对所需要的子资源的识别和检索在寻求所需要的子资源的追踪用户请求之前被发起。在几个附图中可以看到一些示例性时序/顺序差异。

图7a示出了加速的子资源加载300a的一种或多种实现。终端用户331最初向内容递送网络310(例如,高速缓存节点313或其他cdn部件,本文中称为“cdn/cn313”)发送主资源请求302,内容递送网络310通过发送所请求的主资源来进行应答303(该主资源可以被高速缓存在cdn/cn313处,或者如果不是的话,则cdn/cn313可以从诸如原始服务器等合适的来源获得所请求的主资源)。当终端用户331等待来自cdn/cn313的主资源文件时,主资源递送延迟382流逝。(在给定实现利用对html文件的编辑来加速网页渲染的情况下,主资源应答可能由于扫描和编辑而稍微——包含经编辑的html文件的主资源应答可以被发送303e,如图7a所示。)

使用关于所请求的主资源的信息,cdn/cn313从子资源标识符391获取子资源标识(id)。标识符391可以是数据库、查找表、扫描器或其他模块或服务,其接收来自cdn/cn313的主资源引用304并且返回一个或多个子资源的身份306以及cdn/cn313可以从其获取所识别的子资源的位置。该子资源标识和位置信息391可以是cdn310的部分,或者可以在cdn外部。此外,如果通过扫描主资源获得子资源身份和位置信息,则单元391可以是高速缓存节点313或其他cdn部件的部分。然后,cdn/cn313向子资源位置发送请求308(例如,get命令),并且该位置将所请求的子资源返回312给cdn/cn313。在一些实现中,编辑器395还可以可选地被提供用于编辑html文件等,例如以将javascript代码和/或其他子资源前移到给定html文件中的更高位置。

同时,终端用户设备331解析所请求的主资源,并且在该解析过程(其生成浏览器解析延迟384)期间,渲染主资源需要一个或多个子资源(例如,javascript文件等)。当在用户设备331上运行的浏览器遇到主资源文件中的子资源引用时,终端用户设备331向cdn/cn313发送请求320(例如,get命令)。由于cdn/cn313已经预取了在主资源中引用的子资源,所以包含终端用户设备331所请求的子资源的应答322可以由cdn/cn313迅速地发送。再次,在一些实现中,高速缓存节点可以在不等待请求javascript代码和/或其他子资源的第二终端用户设备请求(320)的情况下向终端用户设备发送所需要的javascript代码和/或其他子资源。

在图7a的实现中,用户331在cdn/cn313已经检索到所需要的子资源之后发送其子资源请求320,这可能是由于终端用户设备331对主资源的较长时间的解析。图7b示出了有些类似的情况,只是在方法300b中,用户的子资源请求320在cdn/cn313接收到从位置341请求的子资源之前被发送。这实际上对用户331没有影响,因为所需要的子资源可以由cdn/cn313在其接收到用户所需要的子资源请求320时立即发送。图7c示出了其中执行方法300c的又一时序场景。在这种情况下,用户的子资源请求由cdn/cn313在其获得所需要的子资源之前接收。因此,在cdn/cn313接收到用户的子资源请求320与cdn/cn313能够向用户传输所需要的子资源322之间出现了短的检索延迟388。

在图7a-7c的每个场景中,操作方法仍然提供了加速子资源递送的技术效果,因此加速了网页和其他主资源处理、解析和渲染,因此与早期的系统相比节省了时间。图8示出了图7b的加速的子资源加载实现与其中未实现加速的子资源加载、预取和/或预加载的情况之间的比较。图7b的操作保持与上面讨论的相同。在没有利用子资源预取的早期的情况下(其操作步骤408、410和412在图8中以虚线示出),终端用户设备331经历了附加的延迟。如在图8中可见的,代替“主动”预取或预加载所需要的子资源,cdn/cn313不进行关于子资源检索和加载的动作,直到它从用户331接收到子资源请求320。在接收到请求320之后,cdn/cn313然后将其自己的“反应性”子资源请求408发送到子资源位置341。所请求的子资源可以经由通信410被传输到cdn/cn313。一旦cdn/cn313已经接收到其,cdn/cn313然后可以经由通信412将所需要的子资源传输给用户331。使用根据本文中公开的一个或多个实现的加速的子资源加载节省的时间在图8中由延迟缩减420来表示。

为了进一步描述高速缓存节点的设备和操作,提供了图9,图9示出了高速缓存节点900。高速缓存节点900可以是图1、3和5a的高速缓存节点111-113的示例,尽管变化是可能的。高速缓存节点900包括网络接口905和处理系统910。处理系统910包括处理电路911、随机存取存储器(ram)918和存储装置912,但是可以包括另外的元件。ram918的示例性内容在ram空间980中进一步详述,并且存储装置912的示例性内容在存储系统990中进一步详述。

处理电路911可以在单个处理设备内实现,但是也可以分布在在执行程序指令时协作的多个处理设备或子系统上。处理电路911的示例包括通用中央处理单元、微处理器、专用处理器和逻辑设备、以及任何其他类型的处理设备。在一些示例中,处理电路911包括物理分布式处理设备,诸如云计算系统。

网络接口905包括用于通过诸如分组网络、因特网等通信网络进行通信的一个或多个网络接口。网络接口可以包括可以通过以太网或网际协议(ip)链路进行通信的一个或多个局域网或广域网通信接口。网络接口905可以包括被配置为使用可以与不同网络链路相关联的一个或多个网络地址进行通信的网络接口。网络接口905的示例包括网络接口卡设备、收发器、调制解调器和其他通信电路。

ram918和存储装置912一起可以包括非暂态数据存储系统,虽然变化是可能的。ram918和存储装置912可以各自包括由处理电路911可读取并且能够存储软件的任何存储介质。ram918可以包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。存储装置912可以包括非易失性存储介质,诸如固态存储介质、闪存、相变存储器、磁存储器,或者如本示例中由存储系统920所示的。ram918和存储装置912可以各自被实现为单个存储设备,但是也可以跨多个存储设备或子系统来实现。ram918和存储装置912可以各自包括能够与处理电路911通信的附加元件,诸如控制器。在一些实现中,存储介质可以是非暂态存储介质。在一些实现中,存储介质的至少一部分可以是暂态的。应当理解,在任何情况下存储介质都不会是传播信号。

存储在ram918或存储装置912上或中的软件可以包括计算机程序指令、固件或某种其他形式的机器可读处理指令,其具有在由处理系统执行时命令高速缓存节点900如本文中所描述地操作的过程。例如,软件驱动高速缓存节点900接收对内容的请求,确定内容是否存储在高速缓存节点900中,从原始服务器检索内容,将内容传送到终端用户设备,管理用于处理和存储内容的数据存储系统,以及进行其他操作。软件还可以包括用户软件应用。软件可以被实现为单个应用或多个应用。通常,软件可以在被加载到处理系统中并且被执行时将处理系统从通用设备转换为如本文中所述定制的专用设备。

ram空间980示出了ram918的示例性配置的详细视图。应当理解,不同的配置是可能的。ram空间980包括应用930、操作系统(os)940和内容ram高速缓存950。内容ram高速缓存950包括用于临时存储内容的ram空间,诸如动态随机存取存储器(dram)。

应用930包括内容接口931、配置接口932、扫描模块993、编辑模块995和内容高速缓存应用934。内容高速缓存应用934处理对内容的高速缓存和对诸如内容ram高速缓存950和存储空间955的存储空间的管理,以及经由内容接口931、配置接口932、扫描模块993和编辑模块995交换内容、数据和指令。内容高速缓存应用934可以包括定制应用、varnish高速缓存软件、超文本传输协议(http)加速器软件或其他内容高速缓存和存储应用,包括其变体、修改和改进。应用930和os940可以在高速缓存节点900的执行和操作期间驻留在ram空间980中,并且可以在断电状态以及其他位置和状态期间驻留在存储系统920上的系统软件存储空间962中。如针对计算机操作系统和应用所述,应用930和os940可以在启动或引导过程期间被加载到ram空间980中。

内容接口931、配置接口932、扫描模块993和编辑模块995均允许与内容高速缓存应用934之间的交互和同该内容高速缓存应用的数据交换。在一些示例中,内容接口931、配置接口932、扫描模块993和编辑模块995中的每个包括应用程序编程接口(api)。内容接口931允许通过内容高速缓存应用934交换用于高速缓存在高速缓存节点900中的内容,并且还可以接收从高速缓存节点900清除或擦除数据的指令。内容接口931可以从原始服务器检索跟踪要素以及网络和网页内容以递送给终端用户。配置接口932允许改变内容高速缓存应用934的各种操作特征的配置。在一些示例中,配置接口932包括脚本语言接口,诸如varnish配置语言(vcl)、perl、php、javascript或者其他基于脚本或解释语言的接口。

扫描模块993(如图3和5a的扫描器193)被配置为在html文件和其他主资源被发送到终端用户设备之前扫描html文件和其他主资源,以清查在这样的html文件等中调用的javascript代码和其他子资源。编辑模块995(如图5a的编辑器195)被配置为在html文件和其他主资源被发送到终端用户设备之前编辑html文件和其他子资源,以将html文件对javascript代码或另一子资源的引用前移到html文件主体中的更高位置。

内容接口931、配置接口932、扫描模块993和编辑模块995均可以通过任何相关联的网络链路经由网络接口905与外部系统进行通信。在另外的示例中,要素931、932、993、995中的一个或多个在vcl或vcl模块中实现。

存储系统920示出了存储装置912的示例性配置的详细视图。存储系统920可以包括诸如nand闪存或nor闪存等闪存、相变存储器、磁存储器以及其他固态存储技术。如图9所示,存储系统920包括系统软件962以及存储在存储空间955中的内容961。如上所述,系统软件962可以是在高速缓存节点900的掉电状态期间用于应用930和os940的非易失性存储空间、以及其他操作软件。内容961包括高速缓存的内容,诸如图1、3和5a中的网络内容示例,其可以包括文本、数据、图片、视频、音频、网页、脚本、代码、动态内容或其他网络内容。内容961还可以包括跟踪要素,诸如透明的gif、网页错误、javascript跟踪要素以及其他跟踪要素。在该示例中,内容961包括与由www.gamma.gov、www.alpha.com和www.beta.net指示的一个或多个网站相关联的网络内容和网页、以及相关联的跟踪要素980-982。

在其中高速缓存节点查阅数据库、查找表、历史数据等以识别和定位javascript代码和其他子资源的实现中,如上面关于图1所述,可以使用这样的信息的存储库。存储系统920还可以包括子资源列表存储库991(类似于图1的存储库191),该子资源列表存储库可以经由高速缓存节点900所收集的历史数据和/或经由网络接口905根据其他信息来源被更新。

高速缓存节点900通常旨在表示如下计算系统:通过该计算系统,至少软件930和940被部署和执行以便进行或以其他方式实现本文中描述的操作。然而,高速缓存节点900还可以表示如下的任何计算系统:在该计算系统上至少软件930和940可以被分级,并且软件930和940可以从该计算系统被分配、传输、下载或以其他方式提供给又一计算系统用于部署和执行,或者还有附加的分配。

所包括的描述和附图描绘了具体实施方案以教导本领域技术人员如何作出和使用最佳模式。为了教导发明原理的目的,一些常规方面已经被简化或省略。本领域技术人员将理解落入本发明范围内的源自这些实施方案的变化。本领域技术人员还将认识到,上述特征可以以各种方式组合以形成多个实施方案。因此,本发明不限于上面描述的特定实施方案,而是仅由权利要求及其等同物限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1