我正在使用HTTP 1.1 Cache-Control标头来实现客户端caching。 由于我每个月只更新我的网站一次,所以我希望CSS和JS文件可以使用Cache-Control: max-age=2592000caching30天Cache-Control: max-age=2592000 。 问题在于由Cache-Control定义的30天期限与网站更新周期不一致,从用户访问网站的那一刻开始到30天后结束,这意味着更新可能同时发生,用户会用过时的内容运行一段时间,如果HTML和CSS不再匹配,这可能会中断网站的呈现。
我如何执行内容的客户端caching几天的时间,但不知何故让用户更新网站后刷新其CSS/JS文件?
我可以想到的一个解决scheme是,如果网站更新可以安排,服务器返回的max-age可以相应地减less,这样无论人们什么时候访问网站,caching期的结束都会与该网站,但每天更改服务器configuration违反我的系统pipe理员原则之一(一旦运行,不要触摸它)。
添加指纹/哈希你的CSS和JS的URL,并设置远期过期/caching控制标题。
这也是Rails 资产pipe道使用的技术。