我在AngularJS中缓存部分有问题。
在我的HTML页面,我有:
<body>
<div ng-view></div>
<body>
我的偏导数被载入的地方。
当我改变HTML代码在我的部分,浏览器仍然加载旧数据。
有什么解决办法吗?
我在AngularJS中缓存部分有问题。
在我的HTML页面,我有:
<body>
<div ng-view></div>
<body>
我的偏导数被载入的地方。
当我改变HTML代码在我的部分,浏览器仍然加载旧数据。
有什么解决办法吗?
当前回答
这个代码片段帮助我摆脱了模板缓存
app.run(function($rootScope, $templateCache) {
$rootScope.$on('$routeChangeStart', function(event, next, current) {
if (typeof(current) !== 'undefined'){
$templateCache.remove(current.templateUrl);
}
});
});
以下片段的详细信息可在此链接中找到: http://oncodesign.io/2014/02/19/safely-prevent-template-caching-in-angularjs/
其他回答
这个代码片段帮助我摆脱了模板缓存
app.run(function($rootScope, $templateCache) {
$rootScope.$on('$routeChangeStart', function(event, next, current) {
if (typeof(current) !== 'undefined'){
$templateCache.remove(current.templateUrl);
}
});
});
以下片段的详细信息可在此链接中找到: http://oncodesign.io/2014/02/19/safely-prevent-template-caching-in-angularjs/
如果你谈论的是用于模板缓存而不需要重新加载整个页面的缓存,那么你可以通过如下方式清空它:
.controller('mainCtrl', function($scope, $templateCache) {
$scope.clearCache = function() {
$templateCache.removeAll();
}
});
在标记中:
<巴顿ngk -click=“clearCache()”>清廉缓存</按钮>
并按此按钮清除缓存。
这是Chrome的另一个选项。
按F12打开开发人员工具。然后资源>缓存存储>刷新缓存。
我喜欢这个选项,因为我不需要像其他答案那样禁用缓存。
在@Valentyn回答的基础上,这里有一种方法可以在ng-view内容发生变化时自动清除缓存:
myApp.run(function($rootScope, $templateCache) {
$rootScope.$on('$viewContentLoaded', function() {
$templateCache.removeAll();
});
});
没有解决方案可以防止浏览器/代理缓存,因为您无法控制它。
另一种方式,强制新鲜内容给您的用户它重命名HTML文件!就像https://www.npmjs.com/package/grunt-filerev对资产所做的那样。