当前位置: 首页 > 面试题库 >

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

贺运良
2023-03-14
问题内容

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

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

这可能吗?


问题答案:

Angular的$ http

内置了一个缓存。根据文档:

cache – {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);
   });
}


 类似资料:
  • 我希望能够创建一个自定义的AngularJS服务,当其数据对象为空时发出HTTP“GET”请求,并在成功时填充数据对象。 下一次调用此服务时,我希望绕过再次发出HTTP请求的开销,而是返回缓存的数据对象。 这可能吗?

  • 问题内容: 我想确保浏览器永远不会缓存服务器的响应,这样即使发出两个相同的请求(相隔一纳秒),也始终会与服务器联系。这是实现此目标的正确方法: 谢谢唐 问题答案: 不,那不是正确的方法。这是正确的方法: 您可能会看到其他人在建议其他条目/属性,但是当至少提及上述内容时,它们是完全不相关的。 更改后,请不要忘记在测试之前清除浏览器缓存。 也可以看看: 网站站长缓存教程

  • 问题内容: 我想使用Promises在AngularJS中实现静态资源的动态加载。问题:我在页面上有几个组件,这些组件可能(或不依赖于所显示的内容,因此是动态的)需要从服务器获取静态资源。加载后,可以在整个应用程序生命周期中对其进行缓存。 我已经实现了这种机制,但是我对Angular和Promises还是陌生的,所以我想确保这是否是正确的解决方案。 因此,仅发出一个请求,并且所有对loadData

  • 问题内容: 我最近公布的我面对这个问题的详细说明,这里的SO。由于我无法发送实际的请求,因此我使用了超时来模拟异步行为。在@Gloopy的帮助下,从模型到视图的数据绑定工作正常 现在,当我使用而不是(在本地测试)时,我可以看到异步请求成功,并且在我的服务中充满了json响应。但是,我的看法没有更新。 在这里更新了Plunkr 问题答案: 这是一个可以满足您需求的Plunk:http ://plnk

  • 我试图检查gitubaction上的lint。我的github操作步骤如下 你能帮我修一下吗?

  • 问题内容: 我最近公布的我面对这个问题的详细说明,这里的SO。由于我无法发送实际的请求,因此我使用了超时来模拟异步行为。在@Gloopy的帮助下,从模型到视图的数据绑定工作正常 现在,当我使用而不是(在本地测试)时,我可以看到异步请求成功,并且在我的服务中充满了json响应。但是,我的看法没有更新。 问题答案: 这个想法是您直接使用promise及其promise,然后使用它们的“ then”函数