AngularJS在开发机器上禁用部分缓存
我在AngularJS中缓存部分有问题。
在我的HTML页面中,我有:
<body>
<div ng-view></div>
<body>
我的部分被加载。
当我更改HTML代码时,浏览器仍会加载旧数据。
有什么解决方法吗?
对于开发,您也可以停用浏览器缓存 - 在右下角的Chrome开发工具中点击齿轮并勾选选项
禁用缓存(DevTools处于打开状态时)
更新:在Firefox中,在Debugger - > Settings - > Advanced Section中有相同的选项(已针对版本33进行了检查)
更新2:虽然这个选项出现在Firefox的某些报告中,但它不起作用。 我建议使用萤火虫,并遵循hadaytullah的答案。
在@ Valentyn的答案的基础上,有一种方法可以在ng-view内容改变时始终自动清除缓存:
myApp.run(function($rootScope, $templateCache) {
$rootScope.$on('$viewContentLoaded', function() {
$templateCache.removeAll();
});
});
正如其他答案中提到的,在这里和这里,可以使用以下方法清除缓存:
$templateCache.removeAll();
然而,正如gatoatigrado在评论中所建议的那样,只有在html模板没有任何缓存头文件的情况下才能使用。
所以这对我有用:
角度:
app.run(['$templateCache', function ( $templateCache ) {
$templateCache.removeAll(); }]);
您可能会以各种方式添加缓存标头,但这里有几个适用于我的解决方案。
如果使用IIS
,请将此添加到您的web.config中:
<location path="scripts/app/views">
<system.webServer>
<staticContent>
<clientCache cacheControlMode="DisableCache" />
</staticContent>
</system.webServer>
</location>
如果使用Nginx,你可以将它添加到你的配置中:
location ^~ /scripts/app/views/ {
expires -1;
}
编辑
我只是意识到这个问题提到dev
机器,但希望这可能仍然有助于某人...