启动应用程序的更新版本时如何清除浏览器缓存?

时间:2019-04-12 10:03:50

标签: angularjs tomcat web-applications gruntjs browser-cache

我正在部署由AngularJS,Grunt和其他UI组件组成的UI应用程序。

每当我更新我的UI并使用apache-tomcat重新部署它时,浏览器总是从缓存中获取我的资源。 (由于css,html等新资源的路径相同)

用户需要执行CTRL + F5(硬重载)以清除缓存并使用新资源。

  

重新部署应用程序时如何强制浏览器清除缓存?

     

如果我能以某种方式使用angular + grunt来完成此任务,那也是   很好。

我不想每次重新部署产品时都更新文件的版本。由于我的文件也在内部下载许多html文件。

所以我只想清除浏览器缓存。

谢谢!

2 个答案:

答案 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之类的资产,因此浏览器将强制进行下载,而不是从内存中提取这些文件。