angularjs - 当 AngularJS 模板在服务器上发生更改时,如何取消缓存?

标签 angularjs templates caching angularjs-ng-include

我们有一个 Angular 项目,由于我们的“敏捷”环境,模板已经更改了多次。由于 html 文件类型,浏览器似乎会强烈缓存模板。这意味着当业务在更新后访问我们的开发网站时,他们偶尔会看到旧模板。我们如何确保当对模板进行更改时,用户下载新模板而不是从缓存加载?

最佳答案

我们使用 Jade 并为了防止缓存,我们有一个基于附加到 JS/CSS 包含末尾的时间的变量 (style.css?v=2012881)。由于我们已经通过此变量获得了“appVersion”,因此我选择使用 Angular 模块和常量来公开该变量:

script.
      angular.module('appVersion',[]).constant('appVersion',#{curDate});

在我的主要 Angular 模块中,我有:

.config(['$httpProvider','appVersion',function($httpProvider,appVersion){
  $httpProvider.interceptors.push(function() {
      return {
       'request': function(config) {
           if(!config.cached && config.url.indexOf('.html') > -1){
            if(config.url.indexOf("?") > -1){
              config.url = config.url.replace("?","?v="+appVersion+"&");
            }
            else{
              config.url += "?v="+appVersion;
            }
           }
           return config;
        }
      };
    });
}])

由于模板是使用 $http.get 加载的,因此我添加了一个拦截器来检测请求是否是对模板的请求,如果是,则将 appVersion 附加到请求中。这样我们的 CSS、JS 和 HTML 就有相同的版本。

关于angularjs - 当 AngularJS 模板在服务器上发生更改时,如何取消缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33741354/

相关文章:

c# - 增加 IMemoryCache 内的计数器

javascript - AngularJS : Function only updates variable in view after an event happens

javascript - 如何将 AngularJs 值设置为 javascript 变量

javascript - 如何从单词字符中清除字符串,Javascript

javascript - 将幻灯片动画添加到 ng-repeat

c# - 在 Visual Studio 模板中更改项目文件夹路径

处理取消引用语法的 C++ 泛型类

c++ - 将参数定义为未指定的模板类型

java - 聚集 HashMap

ios - 如何在 AFNetworking 库中管理缓存内存