性能提升的14条规则(三)

规则3——添加Expires头
在设计Web页面的时候,首次访问的响应时间并不是唯一需要考虑的。如果是这样的话,我们可以将规则1发挥到极致,并且不再页面上放置任何图片、脚本和样式表。然而,我们都知道,图片、脚本和样式表能够加强用户体验,尽管这意味着页面需要花更长的时间进行加载。这一章介绍的规则3展示了如何配置组件,使其能够最大化的利用浏览器的缓存能力来改善页面的性能。
现在的Web页面都包含了大量组件,并且数量在不断增长。页面的初访者会进行很多HTTP请求,但通过使用一个长久的Expires头,使这些组件可以被缓存。这会在后续的页面浏览中避免不必要的HTTP请求。长久的Expires头最常用于图片,但应该将其用在所有组件上,包括脚本、样式表和Flash。很多顶级网站现在都还没有做到这一点。
Expires头
浏览器(和代理)使用缓存来减少HTTP请求的数量,并减小HTTP响应的大小,使Web页面加载的更快。Web服务器使用Expires头来告诉Web客户端它可以使用一个组件的当前副本,直到指定的时间为止。HTTP规范中简要的称该头为“在这一日期/时间之后,响应将被认为是无效的”。
Max-Age和mod_expires
在解释缓存如何很好地改善传输性能之前,需要提及除了Expires头之外的另一种选择。HTTP1.1引入了Cache-Control头来克服Expires头限制。因为Expires头使用一个特定的时间,它要求服务器和客户端的时钟样同步。另外,过期日期需要经产后检查,并且一旦未来这一天到来了,还需要在服务器配置中提供一个新的日期。
换一种方式,Cache-Control使用max-age指令指定组件被缓存多久。它以秒为单位定义了一个更新窗。如从组件被请求开始过去的秒数少于max-age,浏览器就使用缓存的版本,这就避免了额外的HTTP请求。
使用带有max-age的Cache-Control可以消除Expires的限制,但对于不支持HTTP1.1的浏览器(尽管这只占你的访问量的1%以内),你可能仍然希望提供Expires头,你可以同时指定这两个响应头——Expires和Cache-Control max-age。如果你很尽职尽责,你仍然需要担心Expires带来的时钟同步和配置维护问题。

posted @ 2015-06-16 14:44  范丁文  阅读(103)  评论(0编辑  收藏  举报