1

加载 javascript 文件时,我可以通过在加载文件时添加版本来强制浏览器不使用缓存,例如

<script src="~/angular/myapp/app.js?version=123"></script>

从我的角度应用程序内部,我正在这样做:

$routeProvider.when("/", {
  controller: "userController",
  controllerAs: "vm",
  templateUrl: "Path/to/Template/Index.html"
});

如何确保我对 的任何更改Index.html都不会被缓存?或者由于某种原因这不是问题?

角度 1.x

4

1 回答 1

3

你可以对你的Index.html文件做同样的事情。只需像您对 js 文件所做的那样,附加一个“缓存破坏器”查询字符串。有一些技术可以做到这一点,但一个简单的Date.now()时间戳应该可以证明目标......

$routeProvider.when('/', {
  controller: 'userController',
  controllerAs: 'vm',
  templateUrl: `Path/to/Template/Index.html?t=${Date.now()}`
});

如果您的应用程序变得越来越复杂,并且您希望完全防止缓存模板,您可以使用一些中间件来实现这一点......

angular.module('preventTemplateCache').factory('preventTemplateCache', function($injector) {
  return {
    'request': function(config) {
      if (config.url.indexOf('views') !== -1) {
        config.url = `${config.url}?t=${Date.now()}`
      }
      return config;
    }
  }
}).config(function($httpProvider) {
  $httpProvider.interceptors.push('preventTemplateCache');
});

上面的示例假设views您的模板有一个目录。


最后,正如评论指出的那样,如果您只是希望阻止本地开发缓存,您可以切换设置以通过浏览器开发工具禁用缓存资源。

于 2017-11-09T15:25:18.853 回答