当前位置: 首页 > 知识库问答 >
问题:

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

鲜于玮
2023-03-14

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

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

这可能吗?

共有1个答案

颛孙天宇
2023-03-14

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

cache-{booleanObject}-使用$cacheFactory创建的布尔值或对象,用于启用或禁用HTTP响应的缓存。有关详细信息,请参阅$HTTP缓存。

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

$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“获取”请求,并在成功时填充该数据对象。 下次调用此服务时,我想绕过再次发出HTTP请求的开销,而是返回缓存的数据对象。 这可能吗? 问题答案: Angular的$ http 内置了一个缓存。根据文档: cache – {boolean | Object} – 用$ cacheFactory创建的布尔值

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

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

  • 遵循本课程https://www.pluralsight.com/courses/angular-2-getting-started和github材料产品。服务试图避免调用http。每次单击链接时都会请求get()。我认为每次加载文件而不是将其保存为内存中的对象是一种很大的浪费。 正在尝试替换此代码: 用这个: 如果被低估,则永远不应调用此行 但它被称为!!!! 在镀铬控制台中: 最后一行不应该出

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

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