apache之mod_expires

前面提前过yahoo前端工程师提出的14条网站性能优化的建议,第四条是通过mod-deflate模块来对网站内容进行压缩,从而减少页面大小。
其中第三条也提到了这里的mod_expires,就是通过延长页面组件的有效期来加速网页的加载。

因为浏览器在第一天打开了一个网站后,会对里面的图片、脚本等组件进行缓存,所以每次在第一次打开一个网站的时候,明显感觉到速度很慢,但第二次再浏览时,打开速度就会快很多,这就是因为第一次用户访问网站时,由于缓存过期,所以过期的组件需要从服务器上重新下载,那么第二次再打开相同的页面时,由于第一次已经下载过了这些组件,所以这次就直接从缓存里读取,而不需要从浏览器重新下载。
但默认的浏览器缓存时间是很短的,在浏览器关闭时,缓存就是失效,就是意味着,如果刚浏览的网页,在浏览器关闭后,再次浏览,又会重新下载所有的资源。但我们知道,这期间这些资源似乎都没有任何变化。所以在一段时间里,我们是没有必要再去下载这些资源的。
所以我们可能通过延长组件的过期时间来实现这样的要求。

纵观几天闻名网站,都对网站的过期时间进行了延长。

可以使用apache的mod_expires模块来实现这些模块。
编译模块时加上

--enable-expires

然后在配置文件中开启缓存功能。

 ExpiresActive On

延长图片、样式、脚本的过期时间

<filesmatch "\.(gif|jpg|js|css)$">
ExpiresDefault "access plus 10 years"
</filesmatch>

时间可以以年、月、周、小时、分钟、秒为单位来设置。

如果对于一个脚本的有效期延长10年,如果这期间用户不清除缓存,就意味着我们对脚本的所有修改都不会体现到用户。用户浏览页面时,还是使用先前缓存里的脚本。如果要让用户使用最新的脚本,就需要更改文件的链接地址。

所以为了每一次文件更新时,让用户重新下载最新的资源,我们可以将这些资源以版本号的形式来命名。如q_3.2.1.js.每次对其进行更新时,并更新相应的版本号。这样就可能解决用户既然下载最新资源的问题。如果资源不更改,用户还是从缓存读取资源。
嵌入版本号不仅能改变文件命,还能在高度时更容易的找到准确的源代码文件。

机器人 2009-03-19 0:06 于 北京

此条目发表在 LAMP 分类目录。将固定链接加入收藏夹。

apache之mod_expires》有 5 条评论

  1. 车品弘智 说:

    有帮助,支持一下

  2. 车品弘智 说:

    来路过了哈,不错,顶了

  3. Pingback 引用通告: penis enlargement

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>