【问题标题】:Alamofire callback cachingAlamofire 回调缓存
【发布时间】:2018-11-26 12:26:02
【问题描述】:

我一直在考虑使用 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。

【问题讨论】:

    标签: swift alamofire


    【解决方案1】:

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

    【讨论】:

    • 谢谢你。我将创建自己的。
    猜你喜欢
    • 2017-12-12
    • 2017-07-14
    • 2021-04-17
    • 2019-11-03
    • 2019-02-24
    • 2015-11-18
    • 2016-12-08
    • 1970-01-01
    相关资源
    最近更新 更多