Я использую 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)
}
}