Кэширование обратных вызовов Alamofire - PullRequest
0 голосов
/ 22 ноября 2018

Я думал об использовании Alamofire для сетевых запросов.Я где-то читал, что Alamofire выполняет обратное кэширование.Под этим я подразумеваю, когда я делаю несколько GET для одного и того же URL, но только 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()

Вызывается метод x3 раза и 3 GET запускаются по сети.

1 Ответ

0 голосов
/ 26 ноября 2018

Я не уверен, что вы прочитали, но у Alamofire нет дедупликации запросов.AlamofireImage делает для запросов изображений, но функция существует только в этой библиотеке.Однако Alamofire поддерживает стандартные методы кэширования HTTP, поэтому, если вы запрашиваете один и тот же ресурс дважды и сервер правильно возвращает один из заголовков кэширования, Alamofire должен принять локально кэшированную копию.Это делается с помощью стандартного класса URLCache, поэтому вы должны прочитать его документацию, чтобы узнать больше.

...