ys2519 发表于 2011-12-24 13:20

Expires的应用不仅仅限于图片

    为图片使用长久的Expires头非常之普遍,但这一最佳实践不应该仅限于图片。长久的头应该包含任何不经常变化的组件,包括脚本、样式表和Flash组件。但是,HTML文档不应该使用长久的Expires头,因为它包含动态内容,这些内容在每次用户请求时都将被更新。
    理想情况下,页面中的所有组件都应该具有长久的Expires头,并且后续的页面浏览中只需为HTML文档进行一个HTTP请求。当文档中的所有组件都是从浏览器缓存中读取出来时,响应时间会减少50%或更多。
    我调查了美国十大Internet网站,并记录了有多少图片、脚本和样式表使用了Expires或头并设置了至少30天以上。如表3-2所示,但这看起来并不好。
    这里统计了三类组件—图片、样式表和脚本。表3-2展示了可缓存30天以上的组件和对应的每种类型组件的总数。我们来看一下这些网站在实践缓存组件时采用的时间范围:
5个网站使其大部分图片可缓存30天以上。
4个网站使其大部分样式表可缓存30天以上。
2个网站使其大部分脚本可缓存30天以上。


    表3-2中的整体百分比指出,所有组件中74.7%或者是不可缓存的,或者可缓存但时间不超过30天。一种可能的解释是,这些组件是不应该缓存的。例如像cnn.com这样的新闻网站,其138个图片0个可缓存,可能是有太多的新闻图片,由于需要更新,这些图片会经常刷新,而不是缓存在用户的浏览器中。如果组件是因为经常变化而不被缓存.我们期望看到很近的Last-Modified日期。

表3-2展示了所有未缓存组件的Last-Modified增量(当前日期和Last-Modified日期之间的差)中值。在这里cnn.com的Last-Modified增量中值是227天。一半的未缓存组件天以来都没有更改过,因此图片的刷新并不是问题所在。
    这也是Yahoo!过去的情况。过去,Yahoo!没有任何可缓存的脚本、样式表和图片。不缓存这些组件背后的逻辑是,用户应该每次都请求它们以便获得更新,因为它们经常改变。然而.在发现实际上这些文件改变得不那么频繁之后,我们意识到将它们缓存起来可以得到更好的用户体验。来源:北京(万博永信)网站建设公司
页: [1]
查看完整版本: Expires的应用不仅仅限于图片