AngularJs:如何正确缓存$ http?

时间:2013-09-23 15:58:43

标签: caching angularjs angular-http

我在$ http请求中启用了缓存,现在成功的回调仅在第一次运行。我想知道这是否是预期的,或者我需要了解缓存$ http的内容?

这就是我一直在尝试的:

$http.get('/foo/bar', { cache: true })
.success(function(data){
  // does foo
})
.error(function(){
  // uh oh
});

假设我已经处理了一次数据,但每次都要运行其他命令。所以,如果数据被缓存或已经可用,我不想重复自己,但是让我们说,如果我打开和关闭带有动画的元素,这应该在哪里?!

感谢您的期待!

2 个答案:

答案 0 :(得分:2)

您可以使用$cacheFactory对象。请参阅:http://docs.angularjs.org/api/ng.$cacheFactory

您可以像这样缓存$ http请求:

var $httpDefaultCache = $cacheFactory.get('$http');

如果要在缓存中检索特定网址,请执行以下操作:

var cachedData = $httpDefaultCache.get('http://myserver.com/foo/bar/123');

$您也可以清除缓存:

$httpDefaultCache.remove('http://myserver.com/foo/bar/123');

或:

$httpDefaultCache.removeAll();

在此完成帖子:http://pseudobry.com/power-up-%24http.html

答案 1 :(得分:1)

我很确定新的GET请求没有运行,因此不会调用相应的成功回调。