根据这个问题,我只需要在{cache: true}
中设置$http.get()
。我的问题是,当我执行$http.get()
时,如何检查URL是否已经缓存?
答案 0 :(得分:1)
当使用带有{cache:true}选项的$ http.get()时,它将使用内置于$ cacheFactory中的angular来自动缓存http GET请求。
假设您使用默认配置进行缓存,那些缓存在名为“$ http”的缓存对象中。 要访问控制器中的缓存对象,您需要注入$ cacheFactory服务并按如下方式访问它:
angular.module('cacheExampleApp', []).
controller('CacheController', ['$scope', '$cacheFactory', '$log', function($scope, $cacheFactory, $log) {
var url = 'http://jsonplaceholder.typicode.com/posts/1';
var httpCacheObj = $cacheFactory.get('$http');
var urlCache = httpCacheObj.get(url)
if (urlCache && urlCache[1]) {
$log.debug('request already cached.');
} else {
$log.debug('request is not cached.');
}
$http.get(url, {cache: true}).then(function(response){
// do something with the response...
});
};
}]);
一些注意事项:
urlCache[0]
- >响应代码(例如200)urlCache[1]
- >响应主体为字符串。如果响应采用json格式,则可以使用JSON.parse(urlCache[1]);
urlCache[2]
- >包含标题及其值的键值列表的对象。urlCache[3]
- >表示响应代码含义的String(例如“OK”状态200)。