Total Pageviews

Friday, 3 January 2014

cdn-改善页面的加载时间

内容分发网络(CDN),简而言之,就是把分布在世界上多个地方的web服务器做集群来更有效向用户的传输内容。CND的目标是向终端用户更有效,更快速的提供内容。这对我们开发者意味着什么?你为什么需要使用CDN服务?
当伦敦的用户访问你设在纽约的网站,互联网管道必须从用户所在的伦敦连到纽约的数据中心。这意味着用户从你的服务器检索文件需要来回的穿越世界。假 设获取文件不需要这样一个旅程,这就是内容分发网络诞生的原因。由于图片、css、js这类静态文件并不是经常改动的,我们没有理由不把它们放到在地理上 离用户更近的其它的服务器上。那是一个短距离的旅行,意味着响应时间更快。
使用CDN带来的好处远远不止快速的响应时间,使用CDN还能减少你网站服务器的带宽和请求次数。你获得了缓存、gzip压缩和更广泛的网络来减低 你网站消耗的带宽。CDN同样增大了浏览器并行下载文件的数量。大多数浏览器只能允许你在同一时间从同一个域名下载3到4个文件。使用CDN使用户的浏览 器能够同时下载更多的文件,加快了响应时间。
所以,优点是显而易见的,但是只有大公司才能承担得起使用内容分发网络?答案:不是的。CDN技术对所有开发者都是可以买得到的,而且价格还很实 惠。你只需要支付实际使用的文件存储空间和流出带宽。我在我的个人博客上使用了CDN,每个月有几千个点击量——每月支付90便士(约8.4¥)。

性能提高

最重要的部分是开发者提高了程序的速度和响应时间,改善了用户的浏览体验。雅虎进行了试验,网站把静态内容从它们的web服务器移到CDN,可以提高终端用户20%以上的响应时间。现在,你可能达不到这个水平改善程度,但是在我看来,即使只是接近那个水平也是划算的。
在Google的性能工程师Steve Souders最先提出了“性能黄金法则”:开发者应该首先优化前端性能,因为终端用户响应时间的80%以上都花在了那里。想下你网页中的静态文件,图片,css样式文件,js文件等等。
如果我们可以改善这些静态文件的性能。我们可以在用户体验网站方面获得巨大的好处。

商业的内容分发网络

这篇文章中,我主要比较了市场上三大商业DNS:Amazon Cloudfront,Windows Azure CDN,Rackspace CDN。我将会在三个关键特征(CDN响应速度、价格、操作容易度)上硬碰硬的比较这些云计算产品。尽管这里我只提到了3个产品,但是也有一些其它值得关 注的CDN产品:cacheflyedgecastGoGrid CDNGoogle App Engine 

测试过程

为了比较不同的响应时间,我上传了一张小图片(8KB),用它作为基准,在所有的CDN上面。我测试了一整周,每天不同时间段,使用世界各地不同的 服务器,包括伦敦,东京,纽约和悉尼。我注意到在第一次访问的时候响应时间变化非常大,为了获取足够精确的结果我需要大量的数据。
响应时间也与你的地理位置和网络速度有关。为了检测你对几个CDNs巨头的响应速度,访问http://www.cloudclimate.com/cdn-speed-test,这个网站提供了一个图表,详细列举了你的平均链接时间和全球的平均时间。
记住这点很重要:当你测试响应时间时需要使用非缓存版本的图片。CDNs 会加入一个过期时间的头,简单的刷新你的浏览器,你获得的可能是缓存版本,而不是从服务器上重新获取的图片。在浏览器上按CTRL+F5,你会得到一个新版本的文件。

英文原文:Improve page load times