如何清除缓存的angularjs文件

时间:2016-04-20 17:33:27

标签: html angularjs caching

我有一个基于angularjs的Web应用程序,其中部署了一些我需要隐藏的功能。我添加了代码来隐藏它并成功验证控件是否在适当时隐藏,但仍然有用户拥有旧版本的文件并可以执行不需要的活动。有没有办法可以从服务器控制视图文件在客户端刷新? (测试人员能够清除他们的缓存,但这对现场用户来说是一种负担)

谢谢! 斯科特

1 个答案:

答案 0 :(得分:4)

处理此问题的一种方法是对文件进行版本控制。例如,index.html

中的以下行
<script src="abc.js" />

可以改写为

<script src="abc.js?v1" />

v1是当前文件版本,应在abc.js发生更改时针对您的应用程序的每个部署进行更改。

由于index.html(初始页面)是从服务器获得的,因此abc.js的更新现在将反映在您的所有客户端上。

这需要在庞大的应用程序中实现自动化。你可以使用Grunt。您可以在StackOverflow上参考以下答案来自动执行此操作:

https://stackoverflow.com/a/20446748/802651

更新
使用AngularJS中的$ templateCache缓存HTML视图/模板。基本上,当您第一次请求模板时,浏览器会从服务器请求模板并将其放入模板缓存中。对模板缓存提供对同一模板的任何后续请求。

如果您不希望缓存这些内容,可以在$routeChangeStart块内收听app.run事件以删除特定模板。

app.run(function($rootScope, $templateCache) {
    $rootScope.$on('$routeChangeStart', function(event, next, current) {
        if (typeof(current) !== 'undefined'){
            $templateCache.remove(current.templateUrl);
        }
    });
});

参考:http://opensourcesoftwareandme.blogspot.in/2014/02/safely-prevent-template-caching-in-angularjs.html