AngularJS templateUrl未刷新,始终使用缓存版本

时间:2016-03-01 19:22:21

标签: angularjs internet-explorer caching angularjs-directive

app.directive('myDirective',function() {
    return {
         restrict : 'A', 
         templateUrl : 'app/html.html'
       };
});

我遇到了模板html在Internet Explorer中缓存的问题。每次更改html时,都需要执行以下任一操作来加载新的模板:

  1. 删除浏览历史记录并清除临时互联网文件。
  2. 将浏览器设置'检查存储页面的较新版本'从自动更改为'每次访问'
  3. 陈述了类似的问题Here。标记的答案有效,但正在考虑是否有更好的解决方案来解决问题,而不是打败浏览器缓存。

2 个答案:

答案 0 :(得分:1)

您必须使用应用版本并在每次更新后增加:

<html data-ver="1.0">

在你的js代码中:

// for example: read app version from data-ver attribute on html tag
window.appVersion = angular.element(document.getElementsByTagName('html')).attr('data-ver');

app.directive('myDirective',function() {
    return {
         restrict : 'A', 
         templateUrl : 'app/html.html?v=' + window.appVersion
       };
});

答案 1 :(得分:0)

我遇到了这个问题,我对模板进行了更改。通过以下步骤,我能够摆脱我需要的单个模板文件:

  1. 打开Internet Explorer
  2. 点击工具(Alt-X)按钮,然后点击互联网选项
  3. 点击常规标签,然后点击浏览历史记录,点击设置
  4. Internet临时文件和历史记录设置对话框中,单击查看文件
  5. 找到已修改的模板文件并将其删除。
  6. 我希望这会有所帮助。