如何防止在Office任务窗格应用程序中缓存AngularJs视图

时间:2015-04-27 13:34:24

标签: angularjs caching office-app apps-for-office

我正在AngularJs中构建一个Office Web App,我的视图正在被缓存,我正试图找出如何防止我的AngularJS视图的缓存。

更改Index.html文件,并且* .js会反映在选项卡窗格中,但视图中的任何更改都不会。以下是一些没有效果的事情:

将这些添加到index.html的标题中:

<meta http-equiv="cache-control" content="no-store">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="expires" content="-1">

将此添加到application.js:

app.run(function ($rootScope, $templateCache) {
    $templateCache.removeAll();

    $rootScope.$on('$viewContentLoaded', function () {
        $templateCache.removeAll();
    });
 });

将此添加到web.config:

  <system.webServer>
    <staticContent>
      <clientCache cacheControlMode="DisableCache" />
    </staticContent>
  </system.webServer>

唯一有效的方法是重命名视图。

独立使用时,Chrome,Firefox或IE中不会发生缓存。

1 个答案:

答案 0 :(得分:1)

这可以通过ng-include标记中的简单查询字符串来解决,如this explanation of html caching with query strings in general中所述(但在本例中也适用于Angular)。

因此,在我的Office任务窗格应用程序中,我有ng-include="'partials/allhtml.html'"并将其更改为ng-include="'partials/allhtml.html?v=1.0.1'"并解决了我的缓存问题。

如链接中所述,您不需要每次都更改?v的值;只要你有一个查询字符串,那么http get就不会被缓存了!