sis*_*imh 7 angularjs angular-http
当我将$ http设置为缓存请求时,我仍然看到从浏览器网络发送到服务器的重复请求(具有相同的URL和相同的数据),
$http.post(url, data, {cache:true} ).success(function(response) {
Run Code Online (Sandbox Code Playgroud)
我有以下问题:
来自文档:
仅缓存GET和JSONP请求.
如果要缓存POST请求,则必须手动执行.您需要创建一个缓存响应的服务/工厂,并在$ http之前充当图层.您可以使用$cacheFactory
或仅使用普通对象.
function cacheService($http, $q){
var cache = {};
this.callSomething = function(postData){
let deferred = $q.defer();
let hash = angular.toJson(postData);
if(cache[hash]){
deferred.resolve(cache[hash]);
} else {
$http.post('path/to/resource', postData).then(function(response){
cache[hash] = response;
deferred.resolve(response);
});
}
return deferred.promise;
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个简单的例子,你当然可以使用相同的原理并制作一个更通用的服务,它接受一个URL,postData和一个缓存对象,并返回一个执行请求并缓存它的函数.
归档时间: |
|
查看次数: |
3944 次 |
最近记录: |