一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

单页应用的缓存能力的制作方法

2022-04-27 08:40:17 来源:中国专利 TAG:

单页应用的缓存能力


背景技术:

1.本发明总体涉及内容交付网络中内容的缓存,具体涉及用于提高内容交付系统的api请求结果的缓存能力的计算机实现的方法。本发明进一步涉及用于提高内容交付系统的api请求结果的缓存能力的相关缓存系统和计算机程序产品。
2.任何规模的企业的数据量(特别是所谓的非结构化数据)变得越大,需要使用内容管理系统管理的企业数据就越多。这些内容管理系统可以用于仅存储不断增长的文档量,或者还可以用作例如用于网页的内容创建工具。搜索引擎在企业内容管理中不仅对非结构化文档而且对来自数据分析系统和其他源的报告也起着越来越大的作用。
3.另一方面,内容项需要在企业内部分发,也需要部分地与客户和供应商共享,并以可靠和一致的方式可访问。也就是说,文件和其他内容项需要始终以最新版本提供。因此,可能也包括源和目标(通常是使用浏览器的客户端系统)之间的缓存系统的分发网络应承担尽可能低的负担,即网络流量。
4.现今,单页应用(spa)经常用在客户端侧,其主要特征是处理动态内容。一旦新的信息变得可用,这样的内容可以作为网页的一部分进行更新。由此,网页的其他内容元素保持静态,可能不会定期更新。
5.要实现高性能客户端应用,同时将对后端服务器的请求量(以及因此负载)保持在可接受的水平,中间缓存非常重要。通过添加对应http缓存控制标头,容易对静态不可变资源(如图像)进行缓存。
6.另一方面,对rest api(representational state transfer application programming interface)响应进行缓存更加困难,因为结果通常是动态的,并且基于过期时间对那些结果进行缓存导致在过期时间期间可能过时的数据。为了克服这个限制,现今的许多云服务通过利用http“etag”和“如果不匹配”(if-not-match)地址来使用基于验证的缓存。这种方式允许普通服务器(或缓存系统)通过对服务的来源进行对应的http请求来检查对象的缓存是否已经过时。这种方法避免了重复地从源向边缘服务器传送相同的数据。这是好的,但是这种方式仍然导致对源服务器的验证请求,通常使这个服务器和网络承受沉重的负担。此外,验证本身往往也远非微不足道,例如,搜索api调用的结果可取决于正被手头的搜索查询用于过滤的各种各样的元数据。
7.基于验证的缓存通常难以与http缓存一起使用。目前还没有使浏览器缓存无效的技术手段。一些cdn(内容交付网络)高速缓存支持无效,但是cdn高速缓存无效不是轻量级操作,通常需要很长时间才能被分发到所有边缘服务器(即客户端系统)。此外,它通常不意味着在细粒度级别上使用,如用于单独的参数化的api调用。
8.存在用于在内容交付系统中管理内容的方法的若干公开内容:文献us 2017/0046438 a1公开了一种包括查询接收器、救生系统和缓存管理器的搜索系统。查询接收器被配置用于接收与第一应用的第一应用状态相关的第一查询。第一查询由用户设备请求。高速缓存管理器被配置用于存储基于所提取的内容的信息,并且响应于查询接收器接收到与第一查询匹配的第二查询,将所存储的信息选择性地提供给用户设备以用于向用户表
示。
9.文件us 2014/0372515 a1披露了一种基于客户端的计算机系统,该计算机系统适于通过网络与远程服务器进行通信并且提供对由该服务器提供的内容或服务的访问,该系统包括存储设备和高速缓冲存储器。高速缓冲存储器适于通过网络与服务器通信,拦截从客户端到服务器的请求并且将来自服务器的响应存储在存储设备上。高速缓冲存储器还适于自动确定何时通过网络向服务器发送请求。
10.已知解决方案的缺点仍然是所涉及的不同系统(即内容服务器、缓存系统和客户端系统)之间相对高的网络流量。这特别适用于单页应用提供对动态改变的内容的访问的情况。
11.所以,可能需要克服令人不满意的情况(即,内容交付网络中不必要的开销网络流量),并且仍然使用能够访问动态改变的内容的网页提供对内容项的最新版本的可靠访问。


技术实现要素:

12.根据本发明的一个方面,可以提供用于提高内容交付系统的api请求结果的缓存能力的计算机实现的方法。该方法可以包括维护每个内容类型的内容项组的唯一性种子值,以及在确定组中的内容项之一被更新时,更新内容项组的种子值。
13.另外,该方法可以包括将组中的内容项之一与相关种子值一起缓存在缓存系统中,以及由缓存系统接收请求组中的内容项作为api请求结果的api请求,其中,api请求的参数是选择的种子值。
14.根据本发明的另一方面,可以提供一种用于提高内容交付系统的api请求结果的缓存能力的缓存系统。该系统可以包括用于维护每个内容类型的内容项组的唯一性种子值的装置,用于在确定组中的内容项之一被更新时更新内容项组的种子值的装置,用于将组中的内容项之一与相关种子值一起缓存在缓存系统中的装置,以及用于由缓存系统接收请求组中的内容项作为api请求结果的api请求的装置,其中,api请求的参数是选择的种子值。
15.所提出的用于提高内容交付系统的api请求结果的缓存能力的计算机实现的方法可以提供多个优点、技术效果、贡献和/或改进:
16.客户端和内容管理系统(通常实现为数据中心中的后端服务器)之间的网络流量可显著减少,从而导致对可用资源的更高效使用。通常在后端内容服务器系统或内容管理系统与信息消费设备(如通常配备有用于呈现信息的浏览器的客户端系统)之间的通信网络中实现的缓存系统,可以不向后端系统发送不必要的和不受控的请求,但是可以尽可能使缓存在——例如分布式——缓存系统中的内容项保持最新。为此,客户端与缓存系统之间的智能通信协议可以提供用于控制客户端系统中的内容项的现状的手段。
17.仅当确定在缓存系统上缓存的内容项过时时,缓存系统才可以从内容管理系统请求内容项,具体地,内容项的更新版本。在可能使用在同一网页(或网络应用)上包括静态的以及动态改变的内容的单页应用的环境中,这可能是特别有利的。
18.可以通过定义内容项组来配置内容项及其现状的粒度和控制。这样,根据后端系统、缓存系统之间的网络可用带宽,以及缓存系统和客户端之间的网络容量,可以遵循细粒度或粗粒度缓存管理策略。此外,这种可配置性可能有助于以更经济的方式利用现有资
源。。
19.这里提出的新缓存方法利用了新的缓存种子参数,可以将api响应缓存无限次。为了实现这一点,相关云服务会跟踪服务公开的每种工件(即内容项)的当前缓存种子值(例如,一个针对内容的缓存种子,另一个针对资产的缓存种子)。每当创建、修改或删除此类实例时,可以将相应的缓存种子值更新为新的唯一值(以前从未使用过的)。客户端可以通过相应的rest api检索给定类型的当前种子值。
20.此外,这种方式可以允许用户决定加载的信息在客户端的最新状态。该信息与加载的缓存种子值一样最新。这意味着,如果客户端可以容忍数据过时一分钟,客户端系统就每分钟重新加载种子值。在没有对由云服务(即,内容管理系统)提供的生命期数据的更新的时间,种子值可以在随后的api调用中不改变并且将仍然完全从cdn高速缓存(即,缓存服务器)提供。对于在特定时间更新但不一定按照可靠的稳定时间表更新的站点,这种方式可能特别有利。这可能代表网站的典型情况。更新后,所有客户端系统将在最长一分钟后看到当前数据,而在长时间不变期间,所有响应将由cdn的缓存系统提供。客户端总是可以通过忽略缓存种子参数或重新加载它来自由加载最新的数据。
21.此外,由于经常避免来自cdn中间层(即,缓存服务器)的更新检查,后端服务器(即cms)处的负载可能会显著降低。这可能会导致对后端服务器的常规请求的更好的响应时间以及更少的计算能力需求(即可能更小、更便宜的服务器)。
22.在下文中,将描述本发明构思的可应用于系统以及方法的其他实施例。
23.根据一个有利实施例,该方法还可以包括:在缓存系统处——具体地,在接收到api请求之后——确定相关种子值与所选择的种子值之间的差异时,请求——具体地,来自内容管理系统的——更新的相应内容项,作为api请求结果。如果请求的种子值与缓存系统上的内容项相同,则缓存系统简单地返回存储在缓存系统中的种子值。但除此之外,由于种子值不变(即,在客户端和缓存系统上相同),所以不执行任何操作,具体地,可以不向后端系统发送任何请求。
24.根据另一个有利实施例,该方法还可以包括在缓存系统处定期接收对组中的内容项的api请求。为了定期刷新客户端浏览器中的spa的内容,可以这样做。定期的意思可以是“按规律性的时间间隔”或由浏览器的客户端系统接收的其他事件触发。例如,可能在不可预测的时间间隔接收到属于内容项的上下文的消息;然后,自动地,客户端/浏览器可以向缓存系统发出请求以获得更新的内容项——如果种子值不同的话。对于动态网页来说,这可能特别有价值。
25.根据该方法的一个有用的实施例,api请求可以请求属于不同内容项类型组的项的内容,作为api请求结果。由此,上述机制也可以应用于不同组的内容项。对于处理不同内容项类型的动态网页来说,这可能特别有价值。所以,组可以表示cms的所有内容项中的一种内容类型的所有内容项,意味着一种类型的所有内容项都在一组中。在这种情况下,组可能不再必要;可以仅查看类型。
26.根据该方法的一个允许实施例,api请求的参数可能是具有不同类型种子值作为输入的xor函数的结果。这可能是保持网络通信量低的直截了当的方法,因为多个种子值的种子值可以针对不同的内容项类型对多于一个种子值的种子值进行组合。因此,如果不同内容项类型的两个种子值已经更改,或者客户端请求了这两个种子值,那么可以通过应用
于这两个种子值的xor函数来组合已知种子值。
27.根据高级实施例,该方法还可以包括——在缓存系统处——将大于或等于预定义的缓存过期阈值的时间值用作api请求结果的内容项的缓存过期时间。该时间值可能接近或等于技术上最大的可能值(例如,最大整数值)。这样,可以将内容项缓存在缓存系统上,一直到它真得过时。由于浏览器/客户端请求,不会因对内容项的请求而触发偶然的更新。
28.根据另一个可选实施例,该方法可包括——具体地,从缓存系统向客户端——发送大于或等于预定义的缓存过期阈值的时间值(例如,接近或等于技术上最大的可能值),作为内容项的缓存过期时间发送。因此,客户端/浏览器假定内容项的有效期或多或少是无限的,直到它在缓存系统中确定种子值存在差异。
29.根据一个进一步增强的实施例,该方法还可以包括——具体地,由cms服务器绕过缓存服务器向客户端——利用推送技术(例如,网络套接字)——推送指示与组中的内容项之一相关的种子值的更新的通知。由于推送技术的机制,客户端可以接收通知,确定种子值可能已经过期。现在,客户端可以连同新接收的相关种子值一起请求缓存系统中的内容项的更新版本。缓存系统可以确定缓存的内容项的种子值和与api请求一起接收的种子值不同。基于此,缓存系统可以向内容管理服务器请求具有新种子值的更新内容项。
30.根据该方法的一个实际实施例,内容项可以是spa的元素或以其他方式动态生成的内容。在这种情况下,在此提出的概念可能会展现出其完整的优点。
31.根据该方法的另一个实际实施例,api请求结果可以是搜索查询的结果。这可以代表所提出的概念的通用用例。然而,内容项也可以由流式分析或商业情报报告系统来交付和管理。
32.根据一个完整的实施例,该方法还可以包括:在将组中的内容项之一与相关种子值一起缓存在缓存系统中之前,在缓存系统处——具体地,从客户端——接收api请求,以及(具体地从cms)请求api请求结果。这样,循环可以闭合,过时的内容项永远不会被传递到客户端并被客户端使用。
33.根据该方法的另一个增强实施例,内容类型的种子值中的任何种子值都可以是可请求的,特别是可从缓存系统或cms、或处理例如不同cms或搜索系统的多个内容项的种子值的独立支持系统请求的。
34.此外,实施例可以采取可从计算机可用或计算机可读介质访问的相关计算机程序产品的形式,该计算机可用或计算机可读介质提供用于由计算机或任何指令执行系统使用或与其结合使用的程序代码。为了本描述的目的,计算机可用或计算机可读介质可以是可以包含用于存储、通信、传播或传输程序以供指令执行系统、装置或设备使用或设备或与指令执行系统、装置结合使用的装置的任何装置。
附图说明
35.应注意,本发明的实施例是参考不同的主题进行描述的。具体地,一些实施例是参照方法类型权利要求描述的,而其他实施例是参照装置类型权利要求描述的。然而,本领域的技术人员将从以上和以下描述中得出,除非另外指出,否则除了属于一种类型的主题的特征的任何组合之外,涉及不同主题的特征之间(具体地,方法类型权利要求的特征与装置类型权利要求的特征之间)的任何组合也被认为是在本文档内披露的。
36.以上定义的方面和本发明的另外的方面从下面将要描述的实施例的实例中是显而易见的,并且参考实施例的实例来解释,但是本发明不限于此。
37.将仅通过举例并参考以下附图描述本发明的优选实施例:
38.图1示出了本发明用于提高内容交付系统的api请求结果的缓存能力的计算机实现的方法的实施例的框图。
39.图2示出了具有在不同数据中心中的两个cms、缓存系统和客户端的实施例的框图。
40.图3示出了从cdn到由缓存种子服务支持的内容服务的数据流的实施例的框图。
41.图4示出了本发明用于提高内容交付系统的api请求结果的缓存能力的缓存系统的实施例的框图。
42.图5示出了包括按照图4的缓存系统的计算系统的实施例。
具体实施方式
43.在本说明书的上下文中,可以使用以下约定、术语和/或表达:
44.术语

缓存能力’(cachability)可表示以比发端系统更高效的方式缓存的内容项的特征;即,其可表示系统存储数据(具体地,网页的数据;更具体地,单页应用的数据)使得可更快地访问它们的能力。在本文档的上下文中,系统和焦点是可以允许减少从客户端系统到内容存储后端系统的网络流量(因此也减少后端服务器上的负载)的缓存系统。如果缓存系统清楚当前存储(即缓存)在缓存系统上的特定内容项过时,则可以仅从内容存储后端系统(例如,内容管理系统)请求该内容项以传递至客户端系统。
45.术语

api请求结果’可表示响应于对应用编程接口(api)的函数调用的系统应答。
46.术语

内容交付系统’可表示存储任何种类的内容项的任何单核分布式系统。这可以是内容管理系统、交易系统或两者的组合。
47.术语

唯一性种子值’可表示对于内容项的特定类别或组来说唯一的数值。代替该数值,还可使用字母数字值或任何其他数字模式。唯一性种子值(或简称种子值)的实例可以是单个内容项的版本号。然而,这里提出的概念是基于一组内容项的,使得如果组中的内容项中的一个内容项可以被改变,则可以改变唯一性种子值。该组可以包括内容管理系统(或多个内容管理系统的组合)中的特定类型的所有内容项,或者可以是特定类型的内容项的子组,或者甚至是按照主题组织的不同类型的内容项的组。
48.术语“内容类型”可表示内容项的数据类型。典型的内容类型包括但不限于文本、图像、声音、视频以及它们的组合。然而,可以使用任何结构化、半结构化和所谓的非结构化数据。具体地,组可以包括一种内容类型的所有内容项。
49.术语

缓存’(caching)可表示为确保快速的可访问能力而对数据的中间存储。通常可以更靠近数据接收器执行数据的存储。
50.术语

api请求’可表示为触发响应而对应用程序编程接口进行寻址的函数调用。通常,响应是数据集。api请求通常包括指定要接收回的数据集的一个或多个参数。
51.术语

参数’在此可以表示函数调用意义上的参数,即,作为api请求的一部分的变量。特定参数可以是例如在客户端系统的浏览器中显示的内容项的种子值,指示在客户端系统中/为客户端系统请求当前可用或者新共享的内容项的特定版本。
52.术语“xor函数”可表示如果仅仅一个输入位是逻辑“1”且另一个输入位是逻辑“0”则传递“真”(true)输出的位操作;xor代表“异或”。异或函数还可被应用于较长的位序列(例如,字节),在这种情况下,函数通常按位执行。可替代地,可以使用散列函数。
53.术语

缓存期满阈值’可表示一个数值(也可实现为时间戳),在其之后缓存的内容项期满,即,不再实际或过时。
54.术语

单页应用’(spa)可以表示在仅更新小部分的情况下通过动态重写网页的子集而不是从服务器加载整个新网页来与用户交互的网络应用或网站。该方法可以避免用户体验连续页面(或页面的部分)之间的中断,使得应用表现得更像桌面应用。在spa中,利用单页加载检索必要代码—例如html、javascript和css(层叠样式表),或者通常响应于用户动作而根据需要动态地加载适当的资源(即内容项)并且将其添加到页面。该页面在过程中的任何时刻都不被重新加载,也不将控制转移到另一页面。用户与该单页应用的交互可能经常涉及与场景背后的web服务器的动态通信。
55.术语“中间层”可表示位于内容管理后端系统与客户端系统之间的系统(即本文档的上下文中的缓存系统)。
56.术语

3层内容交付系统’可表示用于经由网络和缓存系统的中间层将内容项从内容存储系统交付至客户端的架构。
57.术语

内容管理系统’(cms)可表示硬件系统和使其能够管理数字内容(即,内容项)的创建和修改的软件组件的组合。这些系统通常支持协作环境中的多个用户,允许利用不同风格的管理和工作流来执行文档管理。在本文档的上下文中,内容项通常由可以专用于单页应用的cms管理。cms的另一特点是内容项的内容创建、发布和呈现之间的分离。
58.术语

客户端’可表示数字网络中的端点系统,该端点系统用作从其他系统(例如,缓存系统、网络服务器、后端系统、存储系统等)的网络访问信息和服务的用户界面。客户端系统的实例包括个人计算机、工作站、平板计算机、移动电话或者任何其他移动或者尤其是专用设备。在这个意义上,具有接收器的相机或在具有相关计算资源的汽车中的屏幕也可以是客户端。
59.术语

内容交付网络’(cdn)或内容分发网络可以表示地理上分布的代理服务器及其相关数据中心的网络。目标可以是通过在空间上分配与终端用户相关的服务来提供高可用性和高性能。由此,特定用户组可主要从特定数据中心且仅例外地从后备数据中心接收其所请求内容。数据中心可以诸如媒体文件、软件、文档、应用、实况流数据、按需流数据、对社交媒体站点的访问等的可下载对象的形式交付数字内容。
60.在下文中,将给出附图的详细描述。附图中的所有指令是示意性的。首先,给出了本发明的用于提高内容交付系统的api请求结果的缓存能力的计算机实现的方法的实施例的框图。此后,将描述用于提高内容交付系统的api请求结果的缓存能力的进一步实施例以及缓存系统的实施例。
61.图1示出了用于提高内容交付系统的api请求结果的缓存能力的计算机实现的方法100的优选实施例的框图。内容交付系统可以实现在不同的层中:后端服务器、用于缓存的中间层以及信息消费层,即客户端)。所以,内容交付系统适于向客户端系统提供内容。所述方法包括:102,维护每个内容类型的内容项组的唯一性种子值。内容类型可以以简单的形式涉及内容交付系统中的所有文本内容项,并且在更复杂的实现方式中,内容类型(潜在
地还包括子类型)可以包括内容类型的子集(例如,某种格式的文本或与特定总体主题相关的文本)或者可以涉及不同的简单内容类型并且专注于内容主题(例如,与特定会议相关的报告、图像、视频剪辑)。内容类型可以包括文本(文本类型的子类型可以包括文本的不同格式,例如,pdf格式、txt格式、html格式、opendocument格式等)、像素图形或向量图形、声音文件、视频流以及来自搜索引擎、数据库的结果,等等。
62.方法100还包括:确定组中的内容项之一已被更新时,104,更新内容项组的种子值(例如,类似于版本号或散列值),106。
63.方法100还包括在缓存系统中将组中的内容项之一(即,至少一个)与该相关种子值一起缓存,108。此时,该内容项可以是可由客户端系统(通常在浏览器中,但也可以是任何其他数据接收应用)消化的任何数据,即静态内容、动态内容、搜索结果列表等。缓存系统可以是cdn的一部分,即相关的分发服务器。然而,还可以注意到,分发服务器还可以实现为也执行后端cms系统的硬件系统的服务。这可以取决于配置或cdn的具体实现方式。
64.此外,方法100还包括,110,由缓存系统,接收——具体地,来自客户端/相关浏览器的——api请求,其请求组中的内容项,作为api请求结果,其中,api请求的参数是选择的种子值。用于指示所选择的种子值的参数将被视为对客户端与cdn之间的正常的已经存在的api调用的扩展。如果使用传统的api调用,则种子值参数会缺失,这意味着缓存服务器会像在传统条件下那样工作。因此,新提出的方法可以用于传统计算环境以及支持这里提出的概念的计算环境中。在任何情况下都不会产生技术冲突。
65.图2示出了具有在不同数据中心中的两个cms——缓存系统212和多个客户端系统218——的实施例的框图。内容交付网络可包括第一数据中心202和第二数据中心220。这两个数据中心202、220各自包括内容管理系统(未示出),每个内容管理系统具有制作组件204、222和交付组件208、226。如果内容项(未示出)被创建或更新,则它可从相应的制作系统204、222被发布(206、224)到相应的交付系统208、226。每个所创建或更新的内容项(ci)或内容项所属的组具有相关的种子值。所创建的内容项可以具有针对特定内容项组的种子值1234。如果可以更新(即,改变)内容项,则同样可以将种子值更新到例如值1235。
66.相应的内容项可存在于第二数据中心220中。特殊服务可促进制作组件204与制作组件222(比较附图标记228)之间以及交付组件208与226(比较附图标记230)之间的同步。第二数据中心220中尚未更新的内容项的种子值可以是例如9876,更新后是9877。组件之间的同步可以指示特定内容项可能已经改变。基于此,相关内容项在第二数据中心中的种子值可以自主地改变种子值。
67.此外,图2示出了作为适于缓存特定内容项214及其相关的实际种子值的cdn的一部分的缓存服务器212。如果客户端系统218通过api调用并且通过网络连接216请求缓存系统212中的特定内容项而该特定内容项在缓存系统212中不可用,则缓存系统212通过网络连接210将该请求(通过api调用)转发至来自第一数据中心中的cms的内容项。
68.为此——为了更新spa的一部分——客户端系统218请求内容项,连同特定种子值作为api请求中的附加参数。如果api请求中的种子值与缓存系统212中的内容项214的种子值相同,则不必对后端系统进行任何操作。缓存系统简单地将种子值返回客户端。如果这两个种子值不同,缓存系统212将该请求转发至后端系统(即,cms)并且从数据中心202更新内容管理系统中的内容项。因此,通常,网络流量显著减少。
69.总体想法是跟踪每个内容项分类(即,每个组和/或内容类型)的种子值。种子值需要对数据中心id和分类信息进行编码。简单的分类形式可以由单个小写字母完成:c=内容,a=资产,and=布局-映射,t=类型,i=图像-轮廓,小o=其他。因此,来自华盛顿数据中心(washington data center)的对内容项a的请求可包括种子值wdc:c:1234;同样地,来自法兰克福(frankfurt)资产数据中心的种子值将被编码为fra:a:5678。为了计算聚合的种子值,可以使用xor函数。如果将所有起作用的小写字母按字母表顺序排序,则资产和内容的组合种子值将是(示例性的)fra:ac:9012。然而,这种格式不会对用户公开,可以用作由缓存种子服务生成的隐藏种子值。
70.缓存种子服务可以通过特定缓存种子服务api调用来访问。客户端系统的加载种子值的调用可以具有以下形式:
71.get/delivery/v1/seeds?classifications={classifications}
72.然后json(javascript对象表示法)响应可以包含给定分类的组合种子值加上每个分类的单个种子值。
73.例如,/delivery/v1/seeds?classifications=content,asset,content-type可返回
74.{
[0075]”content”:“fra:c:1234”,
[0076]“asset”:“fra:a:354354”,
[0077]”content-type”:“fra:t:3253466”,
[0078]“combined”:“fra:act 348767593”:
[0079]
}。
[0080]
在缓存种子服务的另一个示例中,api是种子验证调用(由调度程序执行):
[0081]
get/delivery/v1/seed/validation/{seed-value}
[0082]
相关的json响应包括验证结果。在失败的情况下,返回有效种子值。
[0083]
例如,/delivery/v1/seeds/validation/classifications=wcd:ac:123456可返回
[0084]
{
[0085]“valid”:true
[0086]
}or
[0087]
{
[0088]“valid”:false,
[0089]“value”:“fra:ac:32465231”[0090]
}。
[0091]
至少需要区分三种情况:
[0092]
情况1:cdn上的缓存未命中
[0093]
客户端随请求发送缓存种子值,cdn(例如,缓存系统212)上发生高速缓存未命中。然后,作为后端服务器的一部分的调度程序(比较图3)可以使用种子值中提供的数据中心信息来检查在全局数据中心中是否生成了种子值。如果所提供的种子值与当前种子值匹配,那么调度程序可以照常调度api请求并设置所配置的边缘控制缓存标头(很长的最大寿
命)。
[0094]
如果所提供的种子值不匹配,则调度程序调用缓存种子服务来获得当前数据中心的有效种子(经由/验证
……
),并发送重定向到相同url,只是用当前值替换种子值。可以注意到,这仅在非常罕见的情况下发生(例如,在数据中心故障转移的情况下)。这可确保避免为在不同数据中心中生成的特定内容项(或一组内容项)的更新近的种子值服务阶段数据。
[0095]
情况2:cdn上的过期的种子值
[0096]
如果客户端200与相应的api请求一起发送缓存种子值并且在cdn上存在过期的缓存值,则调度程序可以验证数据中心信息(如前所述),并且在匹配的情况下,调度程序可以安全地跳过实际的api调用,并且返回304代码“未修改”(not modified)。结果,cdn被通知缓存值仍然是好的,cdn会将其放回到其过期缓存中。否则,发送重定向命令(与以上高速缓存未命中工作流中相同)。
[0097]
情况3:cdn上的未过期的缓存命中
[0098]
在这种情况下,api请求的结果照常从cdn提供。
[0099]
图3示出了从cdn到由缓存种子服务310支持的内容服务的数据流的实施例的框图300。api请求可以进入302由组件304管理的cdn,组件304可以示例性地为akamai系统(还可以使用其他cdn管理系统)。cdn管理组件304向后端服务器发送请求。后端服务器包括调度程序306,请求从该调度程序306被转发到特定服务308以交付内容。并行地,调度程序306联系缓存种子服务310。如果缓存种子值中的数据中心信息与当前数据中心不匹配,则调用缓存种子服务并发送相应的重定向命令。否则,像在传统系统中那样执行调度并发送长的最大寿命值。
[0100]
客户端侧的高速缓存种子管理可以如下执行:所有客户端自由地忽略高速缓存种子概念并作为传统系统操作(缓存依然与已知系统一样差)。然而,特定内容项或其类的当前缓存种子值可通过公共api调用获得。也使缓存种子值在呈现上下文的“页面”中可用,使得后续请求可以使用有效的种子值。客户端可以在适当的时间(例如,以固定的时间间隔(例如,每分钟))自由地重新加载种子值,或者由用户操作的刷新按钮触发。
[0101]
数据中心转换——诚然是罕见的情况——将由cdn管理组件304处理。然而,在典型的流程中,给定客户端的请求可能总是指向同一数据中心。从第一数据中心获得的种子值,即使它们仍然有效,在第二数据中心处也是无效的;结果,客户端可能获得到当前种子值的第二数据中心版本的重定向(在以上示例中,来自第一数据中心dc1:c:12352dc”:c9877)。
[0102]
如果某内容项长期不更新,期间缓存系统上的内容项保持稳定,则这意味着缓存系统可能不要求从cms更新缓存系统中的内容项。因此,一段时间后,几乎所有api调用都会导致cdn缓存命中(即,在缓存系统中找到内容项)。
[0103]
客户端系统还可以控制特定调用验证种子值的频率。结果,并且当最当前的种子值被用作相应api请求中的参数时,最大延迟是所公布的延迟(最大年龄)。
[0104]
图4示出了本发明用于提高内容交付系统的api请求结果的缓存能力的缓存系统400的实施例的框图。内容交付系统在此还适于向客户端系统提供内容。缓存系统包括:适于维护每个内容类型的内容项组的唯一性种子值的装置——具体地,种子管理单元(或模块)402;以及适于在确定单元(或模块)406确定内容项组的内容项之一被更新时更新内容
项组的种子值的装置——具体地,更新单元(或模块)404。
[0105]
此外,缓存系统400包括:适于在缓存系统中将组中内容之一与相关种子值一起缓存的装置——具体地,缓存单元(或模块);以及适于通过缓存系统接收请求组中的内容项作为api请求结果的api请求的装置——具体地,接收器单元(或模块)408,其中,api请求的参数是所选择的种子值。
[0106]
本发明的实施例可与几乎任何类型的计算机一起实现,而不管平台是否适合存储和/或执行程序代码。
[0107]
图5示出了作为示例的适合执行与所提出的方法有关的程序代码的计算系统500——具体地,缓存系统。
[0108]
计算系统500仅是合适的计算机系统的一个示例,并不旨在对本文所描述的本发明的实施例的使用范围或功能提出任何限制,无论计算机系统500是否能够实现和/或执行上文阐述的任何功能。在计算机系统500中,存在可与许多其他通用或专用计算系统环境或配置一起操作的组件。适合与计算机系统/服务器500一起使用的众所周知的计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户端、厚客户端、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络pc、小型计算机系统、大型计算机系统和包括以上系统或设备中的任一个的分布式云计算环境等。计算机系统/服务器500可以在由计算机系统500执行的诸如程序模块之类的计算机系统可执行指令的一般上下文中描述。一般而言,程序模块可包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统/服务器500可以在其中任务由通过通信网络链接的远程处理设备执行的分布式云计算环境中实践。在分布式云计算环境中,程序模块可以位于本地和远程计算机系统存储介质(包括存储器存储设备)中。
[0109]
如图所示,计算机系统/服务器500以通用计算设备的形式示出。计算机系统/服务器500的组件可以包括但不限于一个或多个处理器或处理单元502、系统存储器504、以及将包括系统存储器504的不同系统组件耦合至处理器502的总线506。总线506表示若干类型的总线结构中的任何一种中的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线架构中的任一种的处理器或局部总线。作为示例而非限制,这样的体系结构包括工业标准体系结构(isa)总线、微通道体系结构(mca)总线、增强型isa(eisa)总线、视频电子标准协会(vesa)局部总线以及外围组件互连(pci)总线。计算机系统/服务器500通常包括各种计算机系统可读介质。这样的介质可以是可由计算机系统/服务器500访问的任何可用介质,并且其包括易失性和非易失性介质、可移动和不可移动介质两者。
[0110]
系统存储器504可包括易失性存储器形式的计算机系统可读介质,诸如随机存取存储器(ram)508和/或高速缓冲存储器510。计算机系统/服务器500可以进一步包括其他可移动/不可移动、易失性/非易失性计算机系统存储介质。仅通过示例的方式,存储系统512可被设置为从不可移动、非易失性磁介质(未示出,并且通常称为

硬盘驱动器’)读取和写入。虽然未示出,但是可提供用于从可移动、非易失性磁盘(例如,

软盘’)读取和写入可移动、非易失性磁盘的磁盘驱动器,以及用于从诸如cd-rom、dvd-rom或其他光学介质等可移动、非易失性光盘读取或写入可移动、非易失性光盘的光盘驱动器。在这样的情况下,每一
个都可以通过一个或多个数据介质接口连接到总线506。如下文将进一步描绘和描述的那样,存储器504可以包括具有被配置来执行本发明的实施例的功能的一组(例如,至少一个)程序模块的至少一个程序产品。
[0111]
具有一组(至少一个)程序模块516的程序/实用程序以及操作系统、一个或多个应用程序、其他程序模块和程序数据可以通过示例而非限制的方式存储在存储器504中。操作系统、一个或多个应用程序、其他程序模块和程序数据中的每一个或它们的一些组合可以包括网络环境的实现方式。程序模块516通常执行如本文所描述的本发明的实施例的功能和/或方法。
[0112]
计算机系统/服务器500还可以与诸如键盘、定点设备、显示器520等的一个或多个外部设备518、使得用户能够与计算机系统/服务器500交互的一个或多个设备、和/或使得计算机系统/服务器500能够与一个或多个其他计算设备通信的任何设备(例如,网卡、调制解调器等)进行通信。这样的通信可通过输入/输出(i/o)接口514进行。此外,计算机系统/服务器500可以通过网络适配器522与诸如局域网(lan)、通用广域网(wan)和/或公共网络(例如,互联网)的一个或多个网络进行通信。如图所示,网络适配器522可以通过总线506与计算机系统/服务器500的其他部件通信。应当理解,虽然未示出,但是其他硬件和/或软件组件可以与计算机系统/服务器500结合使用。示例包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器和数据归档存储系统等。
[0113]
此外,用于提高内容交付系统的api请求结果的缓存能力的缓存系统400可附接至总线系统506。
[0114]
已经出于说明的目的呈现了本发明的各种实施例的描述,但并不旨在是详尽的或者限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域普通技术人员来说是显而易见的。本文使用的术语被选择来最好地解释实施例的原理、实际应用或优于市场中发现的技术的技术改进,或者使得本领域的其他普通技术人员能够理解本文公开的实施例。
[0115]
本发明可以体现为系统、方法和/或计算机程序产品。计算机程序产品可包括其上具有用于使处理器执行本发明的各方面的计算机可读程序指令的计算机可读存储介质。
[0116]
该介质可以是用于传播介质的电子、磁性、光学、电磁、红外或半导体系统。计算机可读介质的示例可以包括半导体或固态存储器、磁带、可移动计算机磁盘、随机存取存储器(ram)、只读存储器(rom)、刚性磁盘和光盘。光盘的当前示例包括致密盘-只读存储器(cd-rom)、致密盘-读/写(cd-r/w)、dvd和蓝光盘。
[0117]
计算机可读存储介质可以为可保留和存储供指令执行装置使用的指令的有形装置。计算机可读存储介质可以是,例如但不限于,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或者上述的任意合适的组合。计算机可读存储介质的更具体示例的非穷尽列表包括以下各项:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式紧凑盘只读存储器(cd-rom)、数字通用盘(dvd)、记忆棒、软盘、诸如穿孔卡或具有记录在其上的指令的槽中的凸出结构之类的机械编码设备、以及上述各项的任何合适的组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,例如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,穿过光纤电缆的光脉冲)或
通过电线发射的电信号。
[0118]
本文中描述的计算机可读程序指令可以通过网络(例如,因特网、局域网、广域网和/或无线网络)从计算机可读存储介质下载到相应的计算/处理设备,或者下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输纤维、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口接收来自网络的计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
[0119]
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或以一种或多种程序设计语言的任何组合编写的源代码或目标代码,这些程序设计语言包括面向对象的程序设计语言(诸如smalltalk、c 等)、以及常规的过程式程序设计语言(诸如“c”程序设计语言或类似程序设计语言)。计算机可读程序指令可以完全地在用户计算机上执行、部分在用户计算机上作为独立软件包执行、部分在用户计算机上部分在远程计算机上执行或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可通过任何类型的网络(包括局域网(lan)或广域网(wan))连接至用户计算机,或者可连接至外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla)的电子电路可以通过利用计算机可读程序指令的状态信息来使电子电路个性化来执行计算机可读程序指令,以便执行本发明的各方面。
[0120]
参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0121]
这些计算机可读程序指令可被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图的或多个框中指定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置、和/或其他设备以特定方式工作,从而,其中存储有指令的计算机可读存储介质包括包含实现流程图和/或框图中的或多个方框中规定的功能/动作的方面的指令的制品。
[0122]
也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的处理,使得在计算机、其他可编程装置或另一设备上执行的指令实现流程图和/或框图中的或多个方框中规定的功能/动作。
[0123]
附图中的流程图和/或框图示出了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。对此,流程图或框图中的每个框可表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些备选实现中,框中标注的功能可以不按照图中标注的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作或执行专用硬件与计算机指令的组合的专用的基于硬件的系
统来实现。
[0124]
本文中使用的术语仅用于描述具体实施例的目的,而并非旨在限制本发明。如本文中使用的,除非上下文另有明确指示,否则单数形式“一”、“一个”和“该”旨在也包括复数形式。还应当理解,当在本说明书中使用术语“包括”和/或“包含”时,其指定所述特征、整体、步骤、操作、元件和/或部件的存在,但不排除一个或多个其他特征、整体、步骤、操作、元件、部件和/或其组合的存在或添加。
[0125]
以下权利要求中的所有装置或步骤加上功能元件的对应结构、材料、动作和等效物旨在包括用于结合如具体要求保护的其他要求保护的元件执行所述功能的任何结构、材料或动作。已经出于说明和描述的目的呈现了本发明的描述,但并不旨在是详尽的或限于所公开形式的本发明。在不背离本发明的范围和精神的情况下,许多修改和变化对于本领域普通技术人员来说是显而易见的。选择和描述这些实施例以便最好地解释本发明的原理和实际应用,并且使本领域的其他普通技术人员能够理解本发明的适合于所预期的特定用途的具有各种修改的各种实施例。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献