【发布时间】:2025-07-07 21:00:01
【问题描述】:
我帮助维护了几个发布新闻和参考信息的基于 Wordpress 的网站。
我们一直在努力使网站上的页面尽可能快地加载。
我们所做的其中一件事是在我们的大多数静态文件(例如图像和 css 文件)的“缓存控制”http 标头中实现非常长的“max-age”时间。
我们使用的特定缓存控制设置是“public, max-age=31536000”。 31,536,000 秒是 365 天。
好处是,事实上,此设置确实会在访问者浏览我们网站的不同页面时缓存静态文件。
但这就是问题所在。这个缓存控制设置在浏览器会话中对我们没有多大作用。即使设置应该告诉浏览器“将此文件缓存一整年”,如果我们网站的访问者关闭了他们的浏览器,然后在五分钟后启动它并返回我们的网站,浏览器坚持重新加载所有静态文件,即使它仍然在缓存中。
我在 Firefox 中仔细检查了这一点,查看了带有 Live HTTP 标头的标头。但我也可以定性地看到在其他浏览器中发生了同样的事情。
显然,如果在当前浏览器会话期间内容没有被加载一次,浏览器会坚持重新加载网站的所有内容。
那么……我们有什么方法可以向浏览器“礼貌地建议”它们总是从缓存中加载缓存的内容,即使浏览器在当前浏览器会话期间没有访问我们的网站?
【问题讨论】:
-
我花了很多时间进一步研究我上面描述的问题。似乎该问题主要发生在 Internet Explorer 上。我最初在 Firefox 中观察到的问题是由于我的特定版本的 Firefox 中的离线存储设置造成的。更改设置后,Firefox 现在似乎非常擅长跨浏览器会话使用缓存内容,而 Chrome 在同一方面似乎也表现良好。 Internet Explorer(我已经用 IE7 完成了大部分测试)不是很好。我会做更多的测试并报告我的发现。
标签: caching http-headers browser-cache cache-control