如何配置组件是最大化利用浏览器的缓存能力来改善页面的性能的重要规则。
Expires头:
Web服务器使用Expires头来告诉<strong><em>Web客户端它可以使用一个组件的当前副本,直到指定的时间为止</strong></em>。
Expires头能够显著减少响应时间的原因是:浏览器直接从硬盘上读取缓存组件而无需生成任何HTTP流量。
长久的Expires头应该包含任何不经常变化的组件,不仅仅是图片,还包括脚本,样式表和Flash组件。包含动态内容的HTML文档不应该使用长久的Expires头。
Cache-Control头:
引入Cache-Control头来<strong><em>克服Expires头使用一个特殊的时间并要求服务端和客户端的时钟严格同步的限制</strong></em>。
Cache-Control头max-age指令指定组件被缓存多久(以秒为单位,当请求秒数少于max-age,浏览器使用缓存版本以避免额外的HTTP请求)。<strong><em>使用带max-age的Cache-Control头可以消除Expires头的限制</strong></em>。
mod_expires:
mod_expires Apache模块可以使Expires头在使用时像max-age那样以相对的方式设置日期。通过Expires-Default指令来完成。
<strong>总结:跨浏览器改善缓存的最佳解决方案就是使用Expires-Default设置的头Expires。</strong>
空缓存VS完整缓存
性能的改进取决于用户在访问你的页面时是否有完整的缓存。组件可缓存能够改善响应时间。
当用户访问过网站之后,长久的Expires头才会对页面浏览产生影响,第一次访问时对HTTP请求的数量不产生任何影响,浏览器的缓存为空。
缓存的完整和空是指页面相关的浏览器缓存的状态。
页面组件没有放在缓存中则缓存为“空”;页面中可缓存组件都在缓存中,则缓存是“完整”。
空缓存或者完整缓存页面浏览的数量取决于Web应用程序的本质。