【问题标题】:Providing custom key value for $CacheFactory cache in $resource为 $resource 中的 $CacheFactory 缓存提供自定义键值
【发布时间】:2016-01-12 19:43:18
【问题描述】:

根据 AngularJS 文档,$resource 服务现在也支持缓存。

cache – {boolean|Cache} – 如果为 true,则默认使用 $http 缓存来缓存 GET 请求,否则如果使用 $cacheFactory 构建的缓存实例,则此缓存将用于缓存。

所以我可以这样写$resource:

app.factory('myResourceWithCache', function($resource, $cacheFactory) {
    var myCache = $cacheFactory('MyCache');
    return $resource(apiBaseUrl + '/myservice/:id', {id: '@id'}, {
        'get': { method:'GET', cache: myCache },
        'query': { method:'GET', cache: myCache , isArray:true }
    });
});

我想知道的是:

  1. 缓存中的键名是什么? $http缓存,key是service/api的路径,如果我们使用自定义缓存会不会一样?
  2. 有没有办法为自定义缓存提供我们自己的键名(此处为 myCache)

我尝试了 AngularJS 文档和其他 stackoverflow 线程,但没有找到任何答案。请帮忙。

【问题讨论】:

  • 您需要自己直接访问该缓存的用例是什么?每当您再次需要数据时,$resource 从缓存中返回它
  • 嗨 charlietfl,用例如下:在我们的应用程序中,我们通过 WebAPI 从数据库中获取一些数据,这些数据是用户偏好的,不会经常更改,但用户可以更改它。由于它不会经常更改,因此我们考虑将其缓存在 Angular 中。但是当用户更改它时,我们需要将更改发送到 Db 以保留并删除缓存,以便任何下一次调用将再次从 Db 获取数据并填充缓存。我需要提供自己的键值,以获取更好的键名而不是 API 的 URL。
  • 那么它不是已经在$cacheFactory('MyCache') 中了吗?
  • 当我在 MyCache 中放入任何值时,我们通过 MyCache.Put(key, value) 进行。当我们想要访问放入 Cache 中的值时,我们会像 MyCache.get(key) 一样进行操作。我需要知道是否在使用 Cache 和 $resource 时指定我自己的键名,如上面的问题中所述。

标签: angularjs angular-resource cachefactory


【解决方案1】:

我不确定你是否还需要回答这个一年前的问题。

Angular Documentation $http - Caching section 没有提到自定义键

从 $http 库中,自定义或默认缓存将使用 this line to "put" cache,这是请求 url。

所以回答你的问题:

  1. 请求网址。是的,客户缓存也是如此
  2. 没有(至少到目前为止)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-16
    • 2012-12-08
    • 1970-01-01
    • 2014-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多