我正在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中不会发生缓存。
答案 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就不会被缓存了!