构建高性能网站的14条法则(15-2)
2、使用CDN
用户与Web服务器的距离也会影响到响应时间。从用户的角度上看,把内容部署到多个、地理上分散的服务器中,也有助于加速网页的装载。但是,应该从哪里开始着手呢?
从地理上分散内容的第一步,不是以运行于分布式架构为目标重新设计Web应用程序。根据应用程序的复杂程度,架构的变动可能会涉及到极大的困难,比如:同步会话状态和在多服务器间复制数据库事务等等。由于涉及到架构问题,因此以这种方式缩短用户与内容之间距离的尝试可能会被拖延,甚至永远得不到批准。
别忘了终端用户响应时间的80~90%都花在了下载页面中的组件上:图像、样式表、脚本、Flash等等。而且,这也是我们在“前台性能的重要性”一节中强调的“性能黄金定律”。因此,完全可以避开重新设计应用程序架构的难题,将焦点放在分散静态内容上。虽然这样做不会带来较大的时间节约,但借助于内容分发网络却很容易实现。
所谓内容分发网络(Content Delivery Netword,CDN),就是一组Web服务器的集合,其中的服务器分布于不同的地点,能够将内容更有效地分发给用户。最终确定的将内容分发给用户的服务器,通常是基于对网络邻近情况进行测量的结果。比如说,某台服务器对用户来说只需最少的跃点,或者该服务器对用户的响应时间最短。
某些大型的Internet公司都拥有自己的CDN。不过,使用CND服务器提供商的产品往往更划算一些。常见的CND服务商包括:Akamai Technologies、Mirror Image Internet和Limelight Networks。对于创业型公司或者个人网站而言,通常不必考虑使用CND。但是,随着目标用户群逐渐增大而且越来越全球化,CDN对于加快响应时间的作用也会日益突显。在Yahoo!,通过从应用程序中分离出静态内容并转移到CDN上面,大约可以为终端用户节省20%以上的响应时间。将静态内容转存到CDN只需较少的代码改动,但却能收到显著提高网站速度的奇效。