通过Http头设置缓存,可以减少重复的HTTP请求 — 因为第二次下载时只需从浏览器缓存中去拿。
有两种头可以设置。
1. Expires: “此图片将在2010年12月30日过期,在此之前的重复请求可以使用浏览器中的缓存”
2. Cache-Control max-age: “在未来10年里都可以使用浏览器中的缓存来获得此图片”
第一种头用的是绝对时间,这就存在时钟同步的问题,而且真正到期后服务器端还要更新一下这个日期;第二种头的问题在于它不适用于只支持Http 1.0的浏览器
第三种方案是:如果你用的是Apache服务器,可以使用mode_expires指令来设置超时。它可以避免上述第二种方案的问题。
==============================================================================
现在的问题是,如果静态内容真的变了,需要浏览器刷新缓存怎么办? 办法是修改静态内容的文件名。当它被请求时,浏览器中由于没有相应的缓存,所有就会请求服务器以重新下载。
当然这会带来版本管理上的负担。
=====================================================================
注意:如果没有设置缓存头浏览器仍会试图通过缓存来提高效率;第二次请求一个图片时,浏览器会先发送一个 Conditional Get Request问一下此内容是否已被修改,如果没有的话就使用缓存。