我帮助维护几个基于wordpress的发布新闻和参考信息的网站。
我们一直在努力使网页在网站加载尽可能快。
我们所做的一件事是在"cache-control"http头中为大多数静态文件(如图像和css文件)实现了很长的"max-age"时间。
我们使用的特定缓存控制设置是"public, max-age=31536000"。31,536,000秒等于365天。
这样做的好处是,事实上,当访问者浏览我们网站的不同页面时,静态文件会被缓存。
但问题就在这里。这个缓存控制设置对我们跨浏览器会话没有多大帮助。尽管这个设置应该告诉浏览器"缓存这个文件一整年",如果我们网站的访问者关闭了他们的浏览器,然后在五分钟后重新启动它并回到我们的网站,浏览器坚持重新加载所有的静态文件,即使它仍然在它的缓存中。
我在Firefox中仔细检查了这一点,使用Live HTTP headers查看标题。但我也可以定性地看到同样的事情发生在其他浏览器。
显然,如果一个网站的内容在当前浏览器会话中没有被加载一次,浏览器会坚持重新加载所有的内容。
所以…我们是否有办法"礼貌地建议"浏览器总是从缓存中加载缓存内容,即使浏览器在当前浏览器会话期间没有访问我们的网站?
检查ETag, Expires和Last-Modified头。
你需要一个Expires头,有时ETag和Last-Modified可以打败缓存