我想缓存回复[即解析了HTTP请求的JSON响应,而不是响应本身。我的数据很大且经过了解压缩,所以实际上有一个公平的性能命令解压缩,因此希望存储原始数据。
目前我正在使用HTTP拦截器进行缓存和TimeToLive机制described here以及AngularJS'内置于this.Detail = ViewModel.ChangeMasterItem(seleteditem);
。
那么我怎样才能使用截取器停止HTTP请求并返回我自己的响应。请注意,我仍然计划使用$cacheFactory
,我只管理自己的数据。
$cacheFactory
答案 0 :(得分:1)
我会考虑将此注入您的服务并使您的工厂只处理已接收/缓存的数据。这次我只为你创建了一个包含HTTP / Cache切换逻辑的服务。我认为您将能够创建一个工厂来自行处理您的数据/状态。
.service('getService', ['$cacheFactory', '$http', '$q', function($cacheFactory, $http, $q) {
return {
request: function() {
function getData () {
var deferred = $q.defer();
if (angular.isUndefined($cacheFactory.get('getServiceData'))) {
$http({
'method': 'GET',
'url': 'someUrl'
}).then(function (result) {
$cacheFactory.put('getServiceData', result.data);
deferred.resolve(result.data);
});
} else {
deferred.resolve($cacheFactory.get('getServiceData'));
}
}
return getData();
},
flush: function () {
$cacheFactory.remove('getServiceData');
},
refresh: function () {
this.flush();
return this.refresh();
}
};
}]);
答案 1 :(得分:0)