Javascript 如何强制浏览器重新加载角度模板文件而不是缓存它?

Javascript 如何强制浏览器重新加载角度模板文件而不是缓存它?,javascript,angularjs,angularjs-templates,Javascript,Angularjs,Angularjs Templates,加载javascript文件时,我可以通过在加载文件时添加版本来强制浏览器不使用缓存,例如 <script src="~/angular/myapp/app.js?version=123"></script> 如何确保对Index.html所做的任何更改都不会被缓存?或者出于某种原因,这不是一个问题 angular 1.x您可以对Index.html文件执行相同的操作。只需像添加到js文件一样添加一个“cache buster”查询字符串。有一些技巧可以做到这一点,但是

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

<script src="~/angular/myapp/app.js?version=123"></script>
如何确保对
Index.html
所做的任何更改都不会被缓存?或者出于某种原因,这不是一个问题


angular 1.x

您可以对
Index.html
文件执行相同的操作。只需像添加到js文件一样添加一个“cache buster”查询字符串。有一些技巧可以做到这一点,但是一个简单的
Date.now()
timestamp应该可以说明这个目标

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

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');
});
上面的示例假定模板有一个
视图
目录



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

这是AngularJS(v1)还是AngularJS(v2+)问题?@甲壳虫汁1.xIf它用于开发,然后你可以在浏览器控制台(Chrome)的“网络”选项卡下禁用缓存好的,这是我回答的第三个小问题。以上所有内容都应适用。如果需要,请告诉我helpful@coolbreeze换句话说,我不理解你的评论,因为它涉及到我回答的一个非常小的问题。你尝试过上面的技术吗?我只是回应你的“如果你只是想阻止缓存用于本地开发”。谢谢我还是不明白,我的答案对你有用吗?请接受(绿色检查),如果它这样做,我们既可以得到一个小的代表,并让其他用户看到这是一个解决方案。谢谢
$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');
});