如何用AWS的CloudFront加速动态内容载入?

日期: 2014-08-24 作者:Judith Myerson翻译:滕晓龙 来源:TechTarget中国 英文

AWS CloudFront的主要用途就是实现向用户交付静态内容的优化。但是,亚马逊通过进一步提供动态内容加载增速的功能而抬高了内容分发网络(CDN)的准入门槛。这就使得该服务对于非视频相关的应用更为有用,例如用户生成内容的加速和个性化内容的分发。此外,亚马逊对于动态内容分发和静态内容分发的收费都是相同的。

其成本源于AWS S3标准,但价格会随着使用数量增长而下降。 例如,TwitPic就是CloudFront的早期使用者之一,他们主要将这一工具应用于提高其图像共享应用程序的性能。该服务可允许用户在Twitter以及其他社交平台上发布照片。“我们使用CloudFront向我们的五千万注册用户提……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

AWS CloudFront的主要用途就是实现向用户交付静态内容的优化。但是,亚马逊通过进一步提供动态内容加载增速的功能而抬高了内容分发网络(CDN)的准入门槛。这就使得该服务对于非视频相关的应用更为有用,例如用户生成内容的加速和个性化内容的分发。此外,亚马逊对于动态内容分发和静态内容分发的收费都是相同的。其成本源于AWS S3标准,但价格会随着使用数量增长而下降。

例如,TwitPic就是CloudFront的早期使用者之一,他们主要将这一工具应用于提高其图像共享应用程序的性能。该服务可允许用户在Twitter以及其他社交平台上发布照片。“我们使用CloudFront向我们的五千万注册用户提供由用户上传的图片。我们使用CloudFront响应每月超过五百亿次的API调用,”TwitPic的前CTO,Bigcommerce 的现任主架构设计师Steve Corona说。
使用CloudFront可允许初创的小型公司实现弹性的内容交付,且无需建立一个大型的IT部门。否则的话,这家公司将在增长的成本效益方面面临非常严重的挑战。Corona解释说,“每个月我们都在以数以PB级的流量交付着内容。最初的时候,我们使用亚马逊S3服务来完成这一工作,因为那个时候我们还不知道我们在做些什么。事实证明,对于我们业务所需的流量来说,CloudFront是更便宜的。更重要的一点是,CloudFront交付数据的速度要比S3快得多。”

技术细节详解

一个典型的网站通常包括了静态内容和动态内容的组合。静态内容包括了对网络上所有用户都呈相同显示的图片和样式表,这些静态内容最好被缓存在内容分发网络(CDN) 的边缘。而动态内容则包括了会频繁变化的信息,或者基于用户喜好、行为、位置或其他因素而变化的个性化内容。因此,所谓的动态内容也可以根据阶段不同而被缓存起来。

网站的动态生成内容将造成网络流量延迟现象的增加、多次连接源服务器以及增加CPU负载。为了解决这一问题,CloudFront使用了一个框架以处理查询字符串参数和交付整个网站的cookies,而不必分离静态内容和动态内容或者管理多个域。

CloudFront还允许应用程序开发人员通过为保存在源服务器上的文件设置缓存控制头来配置缓存生存期(TTL)值。CloudFront使用这些手段来确定边缘位置从源服务器检索更新文件的频度。当文件频繁改变时,开发人员需要设置一个更小的TTL值,一般可小至零点几秒。

缓存行为基础

对于被用于确保用户获得最新数据的缓存设置,应谨慎地查看其配置。CloudFront使用了“近期最少使用”(LRU)缓存算法的一种变异算法。在CloudFront缓存中的内容被复制之后,用户可以从缓存中而不是直接从源服务器提取数据。如果这一内容的TTL设置较短,那么用户就还不如更高效地直接从源服务器提取内容。另一方面,如果TTL被设置为更长的时间,那么确保配置应用程序发送无效的请求是很重要的。

例如,加拿大的最大在线日报——星传媒集团就使用了CloudFront的交付功能。鉴于该传媒巨头每月拥有着超过330万的活跃用户,其规模和性能就成为了系统设计的两个重要组成部分。与此同时,不同类型的内容需要被设置不同的过期频率。

为了解决这一挑战,星传媒集团的IT团队根据不同的内容类型建立了19个不同的缓存行为规则。他们还制定了设计的指导方针,以限制查询字符串的数量和使用客户端的cookie而不是服务器端的cookie。这不仅增加了内容的高速缓存性,而且减少了缓存内容变型的数量。

这种方法也让缓存传统意义上的动态内容成为了可能。例如,搜索结果内容会被缓存两分钟,这就提高了交付搜索结果的速度,同时通过消除每次响应请求的需要就可减少源服务器上的工作负载。这种做法平衡了缓存和保留搜索结果的需要,并最终导致响应时间提高了50%。

保持数据时效性

例如选举结果、体育成绩以及股票行情等应用的数据都可被短时间缓存,具体从一秒钟到一分钟不等,从而获得缓存的好处,且不必发出陈旧数据,亚马逊网络服务首席产品经理Nihar Bihani说。例如,在2012年,美国国家广播电台使用CloudFront来交付选举结果,而其TTL被设置为30秒。

在其他情况下,该内容是根据地理位置而生成的,这也就使其更宜于在一个给定的区域为缓存内容设置一个较短的缓存时间。例如,已开发出流行Weather Bug应用程序的Earth Network公司就使用CloudFront来缓存天气数据。由于位于同一地理区域内的用户往往会访问同一台边缘服务器,这就使得他们可以提取他们所在区域的天气更新数据而不必对每一个请求都要求源服务器响应。

Bihani表示,通过使用特制的cookies和查询字符串,这种基于位置的个性化服务是可以实现的,其中应记录与用户相关的数据并成为高速缓存的键值。他指出,“从某种意义上来说,因为它对于每一个用户都是个性化的内容,所以它就是动态的,但与此同时这样的动态数据也是可以被缓存的,这样一来在旧金山地区的每一位用户都可以得到一个缓存的内容副本而不需要用到Weather Bug的源服务器。”

无缓存内容分发网络的价值

CDN的主要好处就是复制内容并将其置于离用户更近的位置。但是,如果使用CloudFront作为代理服务器以提高至源服务器的连结性而不是缓存,那么即便是将TTL设置为零,网站性能仍然能够得到提升,Bihani说。在这些情况下,这个边缘服务器就能够利用一个单一的优化连接和在多个用户之间共享单一传输控制协议(TCP)连接的后端服务器,从而减少至源服务器的连接数量。

当第一位用户通过边缘服务器请求内容时,就会因建立与源服务器的连接而产生一些开销和延迟,但是经由边缘服务器的后续用户请求就可以使用之前已经在源服务器和CloudFront边缘服务器之间建立的TCP连接,从而减少检索内容方面的延迟。

Bihani解释道,“越是远离源服务器,那么在互联网上发生的丢包事件就越多。每一次发生丢包事件,我们就必须重新传输内容。如果使用了CloudFront,那么它不仅能够使用永久连接,而且还可实现性能优化。”在一个物理距离很长的连接中(例如一位远在新加坡的用户向位于弗吉尼亚的源服务器发送内容检索请求),使用CloudFront作为代理服务器就能够减少一半的延迟时间。在纽约的用户可能就能够看到一些性能改善,虽然也不是那么明显。

虽然CloudFront在改善动态内容交付性能上发挥了一定的作用,但是它并不是解决每一种网络性能延迟原因的灵丹妙药。就目前的情况来看,CloudFront服务的关注点在于优化传输内容的网络路径。它目前并不支持其他提高网络性能的技术,如前端优化、JavaScript和CSS压缩,或者图像调整等。

相关推荐