Alamofire回调缓存

时间:2018-11-22 10:08:37

标签: swift alamofire

我一直在考虑将Alamofire用于我的网络请求。我读过Alamofire进行回调缓存的地方。我的意思是,当我对同一个URL执行多个GET时,实际请求只有1个,并且两个都只收到响应。这样,我可以避免对同一资源进行多次网络调用,但是在两个回调中都具有该资源

我只是在他们的文档中找不到这个概念的真相。

所以我的问题可能吗?如果是这样,这仅仅是幕后的事情还是我该如何使用?

我一直在使用他们文档中的以下代码进行测试:

func x() {
    Alamofire.request("https://httpbin.org/get").responseJSON { response in
        print("Request: \(String(describing: response.request))")   // original url request
        print("Response: \(String(describing: response.response))") // http url response
        print("Result: \(response.result)")                         // response serialization result
        print("Timeline: \(response.timeline)")

        if let json = response.result.value {
            print("JSON: \(json)") // serialized json response
        }

        if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) {
            print("Data: \(utf8Text)") // original server data as UTF8 string
        }
    }
}

x()
x()
x()

方法x被调用3次,并且在网络上触发了3个GET。

1 个答案:

答案 0 :(得分:0)

我不确定您已经阅读了什么,但是Alamofire没有任何类型的请求重复数据删除。 AlamofireImage确实可以处理图像请求,但是该功能仅存在于该库中。但是,Alamofire确实支持标准的HTTP缓存方法,因此,如果您两次请求相同的资源,并且服务器正确返回了其中一个缓存头,则Alamofire应该接受本地缓存的副本。这是通过标准URLCache类完成的,因此您应该阅读其文档以了解更多信息。