【发布时间】: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 }
});
});
我想知道的是:
- 缓存中的键名是什么? $http缓存,key是service/api的路径,如果我们使用自定义缓存会不会一样?
- 有没有办法为自定义缓存提供我们自己的键名(此处为 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