日期:2013-10-20  浏览次数:20881 次

在本系列的第一节中,讲了 提高网站功用中网站“内容”有关的10条准绳 。除了在网站在内容上的改进外,在网站服务器端上也有需求留意和改进的地方,它们包括:

  1. 使用内容分发网络
  2. 为文件头指定Expires或Cache-Control
  3. Gzip紧缩文件内容
  4. 配置ETag
  5. 尽早刷新输出缓冲
  6. 使用GET来完成AJAX请求

11、使用内容分发网络

用户与你网站服务器的接近程度会影响呼应时间的长短。把你的网站内容分散到多个、处于不同地域位置的服务器上可以加快下载速度。但是首先我们应该做些什么呢?

按地域布置网站内容的第一步并不是要尝试重新架构你的网站让他们在分发服务器上正常运转。依据使用的需求来改变网站结构,这可能会包括一些比较复杂的任务,如在服务器间同步Session形状和合并数据库更新等。要想缩短用户和内容服务器的距离,这些架构步骤可能是不可避免的。

要记住,在终端用户的呼应时间中有80%到90%的呼应时间用于下载图像、款式表、脚本、Flash等页面内容。这就是网站功用黄金守则。和重新设计你的使用程序架构这样比较困难的任务相比,首先来分布静态内容会更好一点。这不只会缩短呼应时间,而且对于内容分发网络来说它更容易实现。

内容分发网络(Content Delivery Network,CDN)是由一系列分散到各个不同地理位置上的Web服务器组成的,它提高了网站内容的传输速度。用于向用户传输内容的服务器次要是依据和用户在网络上的靠近程度来指定的。例如,拥有最少网络跳数(network hops)和呼应速度最快的服务器会被选定。点击这里查看网页制造教程频道内容

一些大型的网络公司拥有本人的CDN,但是使用像 Akamai TechnologiesMirror Image Internet , 或者 Limelight Networks 这样的CDN服务成本却非常高。对于刚刚起步的企业和团体网站来说,可能没有使用CDN的成本预算,但是随着目标用户群的不断扩大和愈加全球化,CDN就是实现快速呼应所必需的了。以Yahoo来说,他们转移到CDN上的网站程序静态内容节省了终端用户20%以上的呼应时间。使用CDN是一个只需求绝对简单地修正代码实现明显改善网站访问速度的方法。

12、为文件头指定Expires或Cache-Control

这条守则包括两方面的内容:

  • 对于静态内容:
    设置文件头过期时间Expires的值为“Never expire”(永不过期)
  • 对于动态内容:
    使用恰当的Cache-Control文件头来协助浏览器进行有条件的请求

网页内容设计如今越来越丰富,这就意味着页面中要包含更多的脚本、款式表、图片和Flash。第一次访问你页面的用户就意味着进行多次的HTTP请求,但是通过使用Expires文件头就可以使这样内容具有缓存性。它避免了接下来的页面访问中不必要的HTTP请求。Expires文件头经常用于图像文件,但是应该在所有的内容都使用他,包括脚本、款式表和Flash等。

浏览器(和代理)使用缓存来减少HTTP请求的大小和次数以加快页面访问速度。Web服务器在HTTP呼应中使用Expires文件头来通知客户端内容需求缓存多长时间。下面这个例子是一个较长时间的Expires文件头,它通知浏览器这个呼应直到2010年4月15日才过期。

Expires: Thu, 15 Apr 2010 20:00:00 GMT
如果你使用的是Apache服务器,可以使用ExpiresDefault来设定绝对当前日期的过期时间。下面这个例子是使用ExpiresDefault来设定请求时间后10年过期的文件头:
ExpiresDefault "access plus 10 years"
要切记,如果使用了Expires文件头,当页面内容改变时就必须改变内容的文件名。依Yahoo!来说我们经常使用这样的步骤:在内容的文件名中加上版本号,如yahoo_2.0.6.js。

使用Expires文件头只要会在用户曾经访问过你的网站后才会起作用。当用户初次访问你的网站时这对减少HTTP请求次数来说是无效的,由于浏览器的缓存是空的。因此这种方法对于你网站功用的改进情况要依据他们“预缓存”存在时对你页面的点击频率(“预缓存”中曾经包含了页面中的所有内容)。Yahoo!建立了一套测量方法,我们发现所有的页面浏览量中有75~85%都有“预缓存”。通过使用Expires文件头,添加了缓存在浏览器中内容的数量,并且可以在用户接下来的请求中再次使用这些内容,这甚至都不需求通过用户发送一个字节的请求。