【问题标题】:Angular Service Restangular CachingAngular 服务 Restangular 缓存
【发布时间】:2015-10-27 16:09:32
【问题描述】:

是否存在 Angular 服务会缓存 Restangular/$http 调用而不被明确告知这样做的情况?例如,我有一个服务做这样的事情:

    function getSomeThings(){
        return Restangular.one('things').get().then(function (thing) {
            return thing;
        });
    }

每次页面刷新时都会调用此服务(它在 UI-router 路由解析中)。是否有可能不会每次都进行此调用,但会以某种方式被 Angular 缓存,而无需明确告知这样做?

我像这样熟悉caching explicitly

RestangularProvider.setDefaultHttpFields({cache: true});

这不是本意。我的问题是角度服务是否有一些固有的缓存逻辑,如果有,如何覆盖它。

【问题讨论】:

    标签: angularjs restangular


    【解决方案1】:

    默认情况下Restangular 不实现任何缓存策略或场景,您需要自己构建。据我所知,这些是您在使用 Restangular 时可以使用 cache 执行的操作:

    1. 您可以按您所说的缓存所有内容,但您可能会发现自己在处理陈旧的数据,所以要小心:

      RestangularProvider.setDefaultHttpFields({cache: true});
      
    2. 您可以缓存单个请求的响应,例如:

      function getSomeThings(){
          Restangular.one('thing', 123).withHttpConfig({ cache: true}).get().then(function (thing) {
              return thing;
          });
      }
      
    3. 您可以参与自定义 $cacheFactory 实例在必要时通过调用此方法使缓存响应过期或失效:$cacheFactory.get('$http').removeAll()

    4. 你可以在自己的缓存界面中滚动而不是设置 true 到缓存。这是我用来删除所有的工厂示例 缓存数据 每当我发送 createupdatedelete 请求时:

          .factory('HTTPCache', ['Restangular', '$cacheFactory', 
            function(Restangular, $cacheFactory) {
             var service = {};
             var cache;
      
             // Creates the cache
             service.init = function() {
                 cache = $cacheFactory('http');
                 Restangular.setDefaultHttpFields({cache: cache});
      
                 Restangular.setResponseInterceptor(function(response, operation) {
                     if (operation === 'put' || operation === 'post' || operation === 'remove') {
                         cache.removeAll();
                     }
                     return response;
                 })
             }
      
             return service;
      
          }])
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-08
      • 1970-01-01
      • 2017-11-24
      相关资源
      最近更新 更多