我正在尝试在我的应用中启用eTag支持。 我在我的快速3项目中使用Alamofire 4。
似乎eTag是由Alamofire使用的URLRequest透明处理的:
但它不起作用。
这是Web服务器发送的http标头:
headers {
Connection = "keep-alive";
"Content-Length" = 47152;
"Content-Type" = "application/json";
Date = "Tue, 06 Dec 2016 22:43:18 GMT";
Etag = "\"ecf38288be2f23f6710cafeb1f344b8c\"";
} })
你有任何暗示吗?
非常感谢。
答案 0 :(得分:8)
默认情况下,缓存为ON。如果您在应用程序中记录HTTP流量,您可能会看到缓存的响应,而此时应用程序没有向服务器发出请求。
如果URLSession
决定返回缓存响应而不是去服务器,您将看到相同的Date
HTTP响应标头。
为确保缓存正常,您应检查应用和服务器之间的网络数据包。
答案 1 :(得分:1)
这是使用URLRequest
时的默认缓存策略。
如果您想要更改此行为并查看来自网络的“真实”响应,以便您可以自己处理eTag和statusCode,则只需将缓存策略更改为reloadIgnoringCacheData
:< / p>
var exampleRequest = try! URLRequest(url: route, method: .post, headers: headers)
// This is the important line.
exampleRequest?.cachePolicy = .reloadIgnoringCacheData
希望这有助于某人!
答案 2 :(得分:-1)
我遇到了同样的问题。
而不是将\"ecf38288be2f23f6710cafeb1f344b8c\"
发送回服务器
发送"ecf38288be2f23f6710cafeb1f344b8c"