Кэширование Alamofire при изменении тела запроса - PullRequest
0 голосов
/ 18 апреля 2019

Я использую Alamofire для сетевых запросов и включил кеширование. Сейчас это работает так: если url запроса совпадает с тем, который использовался в прошлом (в течение промежутка времени кеша), он будет получать данные с диска, а не с удаленного сервера.

Я хочу изменить это так, чтобы, если url - это то же самое, но body было другим, он должен рассматриваться как новый запрос.

delegate.dataTaskWillCacheResponseWithCompletion = { session, datatask, cachedResponse, completion in
    if let response = cachedResponse.response as? HTTPURLResponse,
        var headers = response.allHeaderFields as? [String: String] {

        if isCachable {
            headers[HTTPHeaderKeys.CacheControl] = "max-age=\(cacheDuration)"
            print("GET CACHED RESPONSE: \(String(describing: response.url))")
        } else {
            headers[HTTPHeaderKeys.CacheControl] = "no-store"
        }

        let modifiedResponse = HTTPURLResponse(url: response.url!,
                                               statusCode: response.statusCode,
                                               httpVersion: ServiceConstants.HTTP_VERSION,
                                               headerFields: headers)
        let modifiedCachedResponse = CachedURLResponse(response: modifiedResponse!,
                                                       data: cachedResponse.data,
                                                       userInfo: cachedResponse.userInfo,
                                                       storagePolicy: cachedResponse.storagePolicy)

        completion(modifiedCachedResponse)
    }
}
...