我正在使用HTTP 1.1
Cache-Control
标头来实现客户端缓存。因为我每个月只更新一次我的网站,所以我希望CSS
和JS
文件可以缓存 30 天Cache-Control: max-age=2592000
。问题是定义的30天周期Cache-Control
与网站更新周期不一致,是从用户访问网站的那一刻开始,到30天后结束,这意味着更新可能在此期间发生,用户会使用过时的内容运行一段时间,这可能会破坏网站的呈现,例如,如果HTML
和CSS
不再匹配。
我如何在几天内执行客户端内容缓存,但以某种方式让用户CSS/JS
在网站更新后刷新他们的文件?
我能想到的一种解决方案是,如果网站更新可以定时,max-age
服务器返回的每天可以相应减少,这样无论人们什么时候访问网站,缓存期的结束都会与网站更新同步,但是每天更改服务器配置违背了我的系统管理员原则之一(一旦它运行,就不要碰它)。
添加指纹/散列您的 CSS 和 JS URL 并设置远期的 Expires/Cache-Control 标头。
这也是 Rails Asset Pipeline使用的技术。