一、 添加 Expires 头
1、 Expires 头
浏览器(和代理)使用缓存来减少 HTTP 请求的数量,并减小 HTTP 响应的大小。 Web 服务器使用 Expires 头来
告诉 Web 客户端它可以使用一个组件的当前副本,直到指定的间为止。
Apache 中添加 Expires 头的配置例子:
第一步:
LoadModule expires_module modules/mod_expires.so
第二步:
<IfModule expires_module>
ExpiresActive on
ExpiresByType image/gif "access plus 72 hour"
ExpiresByType image/jpeg "access plus 72 hour"
ExpiresByType text/css "now plus 24 hour"
ExpiresByType text/html A86400
ExpiresByType application/x-javascript "now plus 24 hour"
ExpiresByType application/x-shockwave-flash "now plus 24 hour"
ExpiresDefault A86400
</IfModule>
2、 Headers 头
HTTP1.1 引入了 Cache-Control 头来克服 Expires 头限制。因为 Expires 头使用一个特定的时间,它要求服务器和客户端的时钟严格同步。另外,过期日期需要经常检查,并且一旦未来这一天到来了,还需要在服务器配置中提供一个新的日期(针对的是下面的配置方式设置 Expires 头“ Header set Expires "Thu, 16 Apr 2010 20:00:00 GMT" ”) 。如果 Expires 头和 Headers 头同时配置,则 Headers 头中 Cache-Control 的 max-age 会重写 Expires 头。
3、 修订文件名
如果组件配置为可以有浏览器代理缓存,当这些组件改变时用户如何获得更新呢?建议对组件采用版本号的方式命名,这样当用户发出新请求时就会对新的组件进行请求,而不会采用本地的缓存组件(将版本号嵌在组件文件名中会带来一些复杂度,怎样修改文件名即能修改网站内全部对应的组件名) 。
无 Expires 的示例
http://stevesouders.com/hpws/expiresoff.php
长久的 Expires 的示例
http://stevesouders.com/hpws/expireson.php
注:以上方法不适用于第一次访问、手动或软件清空缓存或没有采用页面缓存技术的情况
另外如果页面不存在动态信息,则可以将 HTML 做缓存。