小编典典

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

all

我希望能够创建一个自定义 AngularJS 服务,该服务在其数据对象为空时发出 HTTP ‘Get’ 请求并在成功时填充数据对象。

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

这可能吗?


阅读 83

收藏
2022-06-24

共1个答案

小编典典

Angular
$http有一个内置的缓存。根据文档:

缓存 ” {boolean|Object} ——一个布尔值 使用 $cacheFactory 创建的对象,用于启用或禁用 HTTP
响应的缓存。有关详细信息,请参阅 $http
缓存

布尔值

因此,您可以在其选项中设置cachetrue :

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

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

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

缓存对象

您还可以使用缓存工厂:

var cache = $cacheFactory('myCache');

$http.get(url, { cache: cache })

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

var cache = $cacheFactory('myCache');

var data = cache.get(someKey);

if (!data) {
   $http.get(url).success(function(result) {
      data = result;
      cache.put(someKey, data);
   });
}
2022-06-24