【问题标题】:Use local data with Angular resource将本地数据与 Angular 资源一起使用
【发布时间】:2013-09-08 12:17:36
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript database angularjs


    【解决方案1】:

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

    • 什么时候应该刷新缓存
    • 服务器数据更新后会发生什么。
    • 您能否忍受任何被缓存的数据不一致的情况。
    • 我不确定,但标准实现$http 服务缓存是否尊重HTTP expiration header(如果有的话)。

    整体基于服务器的 HTTP 过期标头是提供缓存的最佳方式,因为对服务器有更多控制,并且大多数浏览器都支持 GET 请求。

    【讨论】:

    • 好点,虽然就我目前的需求(仅供我使用的应用程序)而言,数据一致性应该不是问题
    【解决方案2】:

    您可以通过cache:true 使用缓存

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

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

    【讨论】:

    • 很好的答案,虽然我在发布后不久编辑了这个问题。你能帮助解决问题的第二部分吗?
    猜你喜欢
    • 2017-12-11
    • 2020-09-01
    • 2011-10-10
    • 1970-01-01
    • 2016-12-26
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 2011-10-17
    相关资源
    最近更新 更多