$ resource caching:cache:true和cache:obj之间的区别是什么

时间:2016-06-01 17:57:59

标签: angularjs caching

正如标题所述,我正在使用$ resource对象来执行GET请求。

具有深入知识的人可以解释设置时的差异 cache:true

query: {
    method: 'GET',
    cache: true
}

VS 有类似的内容:

var theCache = $cacheFactory('myCache');

并通过执行以下操作在资源上使用该缓存对象:

query: {
    method: 'GET',
    cache: theCache
}

1 个答案:

答案 0 :(得分:0)

通过传递true参数,您告诉angular使用默认(全局)$http缓存,这意味着将缓存响应并通过$http进行每个下一个请求或者$resource(这是对$http的高级抽象)将从缓存中提供(没有额外的请求到服务器)。 $http缓存中此请求的关键是完整路径URL。您可以使用$http

获取默认的$cacheFactory缓存实例
var cache = $cacheFactory.get('$http');

现在,如果您要创建特定于资源的缓存,请使用$cacheFactory创建它,并告诉$http$resource使用它:

var myCache = $cacheFactory.get('myCache');

$http.get('/api/users.json', {
    cache: myCache
});

// or 

$resource('/api/users.json', null, {
        query: { cache: myCache }
});

这样,其他任何请求都不再共享此缓存。此外,您可以在实例化时指定此缓存的capacity,或在需要时清除它而不影响其他服务。