gpt4 book ai didi

angularjs - 方法发布时的 $http 服务缓存

转载 作者:行者123 更新时间:2023-12-04 11:20:48 26 4
gpt4 key购买 nike

当我将 $http 设置为缓存请求时,我仍然看到从浏览器网络发送到服务器的重复请求(具有相同的 url 和相同的数据),

$http.post(url, data, {cache:true} ).success(function(response) {

我有以下问题:
  • 这是正确的行为吗?
  • 我们可以缓存发布请求吗?
  • 这是这样做的正确方法还是我应该使用 $cachefactory 手动执行此操作?
  • 最佳答案

    来自 docs :

    Only GET and JSONP requests are cached.



    如果要缓存 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;
    }
    }

    这是一个简单的示例,您当然可以使用相同的原理并创建一个更通用的服务,该服务采用 URL、postData 和缓存对象,并返回一个执行请求并缓存它的函数。

    关于angularjs - 方法发布时的 $http 服务缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40018831/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com