【问题标题】:How do I clear cached angularjs files如何清除缓存的 angularjs 文件
【发布时间】:2016-08-13 13:34:02
【问题描述】:

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

谢谢! 斯科特

【问题讨论】:

    标签: html angularjs caching


    【解决方案1】:

    处理此问题的一种方法是对文件进行版本控制。例如,您的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

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

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

    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

    【讨论】:

    • 感谢 Adarsh,这是对 js 文件的一个很好的建议——我实际上是在 view/.html 方面工作,除非我告诉客户清除他们的缓存或为他们提供外出和刷新单个 html 页面的路径。
    • 太棒了,谢谢!我打算这个周末试试,看看下周怎么样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    • 2017-04-06
    • 2017-06-25
    • 1970-01-01
    • 2019-08-16
    • 2017-12-08
    • 1970-01-01
    相关资源
    最近更新 更多