在AngularJS中缓存HTTP“Get”服务响应?

我希望能够创建一个定制的AngularJS服务,当其数据对象为空时发出HTTP“Get”请求,并在成功时填充数据对象

下次调用此服务时,我希望绕过再次发出HTTP请求的开销,而是返回缓存的数据对象

这可能吗

Angular的$http内置了一个缓存。根据文件:

缓存–{boolean | Object}–使用$cacheFactory创建的布尔值或对象,用于启用或禁用HTTP响应的缓存。看见
$http缓存以获取更多信息
信息

布尔值

因此,您可以在其选项中将cache设置为true

$http.get(url,{cache:true}).success(…);

或者,如果您更喜欢调用的配置类型:

$http({cache:true,url:url,method'GET'});

缓存对象

您还可以使用缓存工厂:

var cache=$cacheFactory(’myCache’);
$http.get(url,{cache:cache})

您可以使用$cacheFactory自己实现它(尤其是在使用$resource时):

var cache=$cacheFactory(’myCache’);
var data=cache.get(someKey);
如果(!数据){
$http.get(url).success(函数(结果){
数据=结果;
cache.put(someKey,data);
});
}

发表评论