当我的网站更新时,如何确保客户端也更新他们的浏览器缓存?

当我的网站更新时,如何确保客户端也更新他们的浏览器缓存?

我正在使用HTTP 1.1 Cache-Control标头来实现客户端缓存。由于我每个月只更新一次网站,因此我希望使用 缓存CSS和文件 30 天。问题是 定义的 30 天期限与网站更新周期不一致,它从用户访问网站的那一刻开始,并在 30 天后结束,这意味着在此期间可能会发生更新,而用户将在一段时间内使用过时的内容,这可能会破坏网站的呈现,例如如果 和不再匹配。JSCache-Control: max-age=2592000Cache-ControlHTMLCSS

我怎样才能在几天的时间内执行客户端内容缓存,但又以某种方式让用户CSS/JS在网站更新后刷新他们的文件?

我能想到的一个解决方案是,如果网站更新可以安排,那么max-age服务器返回的值可以每天相应减少,这样无论人们何时访问网站,缓存期的结束都会与网站的更新相吻合,但每天更改服务器配置违背了我的系统管理员原则之一(一旦运行,就不要碰它)。

答案1

添加指纹/哈希您的 CSS 和 JS URL 并设置未来的 Expires/Cache-Control 标头。

这也是 Rails 的技术资产管道用途。

相关内容