将本地数据与Angular资源一起使用

时间:2013-09-08 12:17:37

标签: javascript database angularjs

我的角度应用程序只需要在应用程序加载时从服务器获取数据,然后只与服务器通信以覆盖数据。有没有推荐的方法来实现它?

到目前为止,我正在使用$resource.query来获取初始数据集,将资源存储在服务中,并且我认为现在我需要覆盖GET操作,但我不确定如何去抑制它与服务器通信。

我还有另一个名为getLatest的Web服务,该服务执行大量服务器端工作以获取其他记录,然后我需要将其附加到我的缓存资源。我该怎么做呢?我想过从检索到的数据中以某种方式手动创建Resource实例,或者在getLatest调用返回后可能触发一个新的(未缓存的)资源查询(虽然这对我来说似乎效率低下)

2 个答案:

答案 0 :(得分:2)

@tschiela是对的,您可以在资源上使用cache属性来缓存资源。 但是你应该了解缓存失效策略。

  • 什么时候应该重新调用缓存
  • 服务器数据更新后会发生什么。
  • 对于任何缓存的内容,您是否可以忍受数据不一致。
  • 我不确定,但是标准实现$http服务缓存荣誉HTTP expiration header(如果有的话)。

基于总体服务器的HTTP过期标头是提供缓存的最佳方式,因为服务器上有更多控制权,大多数浏览器都会为GET请求提供服务。

答案 1 :(得分:1)

您可以使用cache:true

进行缓存
.factory('Data', function($resource){
      return $resource('http://some.url.of.api', {}, {
        'get' : { method:'GET', cache: true }
      });
    })

或者您可以实现自己的缓存工厂。请阅读AngularJS文档中的更多信息:$resource