跨浏览器会话强制浏览器缓存

时间:2011-07-22 17:01:55

标签: caching http-headers browser-cache cache-control

我帮助维护几个发布新闻和参考信息的基于Wordpress的网站。

我们一直在努力使网站上的网页尽快加载。

我们所做的一件事是在我们的大多数静态文件(例如图像和css文件)的“缓存控制”http标头中实现非常长的“最大 - 年龄”时间。

我们使用的特定缓存控制设置是“public,max-age = 31536000”。 31,536,000秒是365天。

好处是,实际上,当访问者浏览我们网站的不同页面时,此设置会导致静态文件被缓存。

但这就是问题。这种缓存控制设置对我们在浏览器会话中没有太大作用。即使该设置应该告诉浏览器“缓存此文件整整一年”,如果我们网站的访问者关闭了他们的浏览器,然后在五分钟后启动它并返回我们的网站,浏览器坚持重新加载所有静态文件,即使它仍然在缓存中。

我在Firefox中仔细检查了这一点,使用Live HTTP Headers查看标题。但我也可以定性地看到其他浏览器中发生的事情。

显然,如果在当前浏览器会话期间内容尚未加载一次,浏览器会坚持重新加载网站的所有内容。

那么......我们是否有任何方式可以“礼貌地向浏览器提出”他们总是从缓存中加载缓存内容,即使浏览器在当前浏览器会话期间没有访问过我们的网站?

1 个答案:

答案 0 :(得分:0)

同时检查ETag,Expires和Last-Modified标头。

您需要一个Expires标头,有时ETag和Last-Modified可以阻止缓存。