我希望能够创建一个定制的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);
});
}