客户端会报告我们的JS重型应用程序中的错误,我们修复了它,但客户端的浏览器仍在使用缓存副本。这种情况发生了很多,并要求我们的客户刷新他们的浏览器缓存似乎非常低技术和麻烦。
我们知道?ver=xxx
解决方法,但我们使用RequireJS因此应用此类黑客攻击并不容易。
HTTP缓存控制是否有效?但是,我们注意到IIS没有立即获取JS文件更改,并且HTTP标头(上次修改)未反映最新更改。
ETag会更好吗?在IIS上最后修改它是好还是坏?
还有其他解决方案吗?感谢
答案 0 :(得分:5)
RequireJS有cache busting property你可以使用 - :
require.config({
urlArgs: "bust=" + (new Date()).getTime()
});
编辑 - :但是,正如Ian在下面指出的那样,建议不要将这种方式用于生产代码。
每次将新提交推送到生产时,您都可以改为添加特定的版本号。
require.config({
urlArgs: "ver=1.1.1"
});