1. Expires and Max-Age
a. Expires可以指示浏览器使用缓存组件直到有效期,通过指定一个特定有效期时间(Expires: Thu, 15 Apr 2010 20:00:00 GMT),需要考虑服务器和客户端同步性;
b. Cache-Control使用max-age来指定缓存被缓存多久,指定的是一个相对时间,单位为秒(Cache-Control: max-age=315360000);
c. Cache-Control优先级更高,同时存在时可以重写Expires,但是HTTP1.0不支持Cache-Control;
d. mod_expires Apache模块可以让Expires和Cache-Control一样使用相对时间:
<FilesMath "\.(gif|jpg|js|css)$">
ExpiresDefault "access plus 10 years"
</FilesMath>
可以用年、月、周、日、小时、分钟、秒作为单位。
2. 不仅仅是图片
长久的Expires头应该包含任何不经常变化的组件,包括脚本、样式表和flash组件。
3. 修订文件名
设置了长久的Expires,当服务器更新组件时,可能通过修订组件文件名来让浏览器重新加载组件。
php中可以为所有组件的文件名使用变量,在页面更新时只需要简单地在某个地方修改变量。
4. 如果一个组件没有长久的Expires头,它仍然会存储在浏览器缓存中,在后续请求中,浏览器会发送条件GET请求。(Last-Modified and If-Modified-Since)这些条件GET请求就会很浪费。