我正在部署由AngularJS,Grunt和其他UI组件组成的UI应用程序。
每当我更新我的UI并使用apache-tomcat重新部署它时,浏览器总是从缓存中获取我的资源。 (由于css,html等新资源的路径相同)
用户需要执行CTRL + F5(硬重载)以清除缓存并使用新资源。
重新部署应用程序时如何强制浏览器清除缓存?
如果我能以某种方式使用angular + grunt来完成此任务,那也是 很好。
我不想每次重新部署产品时都更新文件的版本。由于我的文件也在内部下载许多html文件。
所以我只想清除浏览器缓存。
谢谢!
答案 0 :(得分:0)
您可以将版本添加到html文件中
app.factory('preventTemplateCache', function () {
return {
'request': function (config) {
if (config.url.indexOf('partials') !== -1) {
config.url = config.url + '?t=' + 101;
}
return config;
}
}
})
,同时还将.js文件的版本指定为
<script src='app.js?v=101'></script>
101是版本号
答案 1 :(得分:0)
没有文件名版本控制就无法更新缓存。但是您不必手动进行。如果您使用Grunt,只需签出一些npm软件包。例如:https://www.npmjs.com/package/grunt-cache-breaker
在重建时,它将为您的资产创建新的哈希并将它们注入到html文件中。因此,当您的用户下载您的html文件(下载后,它们不会被缓存)时,这些html文件将包含具有新名称的css和js之类的资产,因此浏览器将强制进行下载,而不是从内存中提取这些文件。>