有谁知道为什么要缓存此请求?
我正在使用未经修改的.default
URLSessionConfiguration
。
回复标题为:
(来自Charles,通过调试数据任务完成块中的响应确认)
{
"Accept-Ranges" = bytes;
"Content-Length" = 1480;
"Content-Type" = "application/json";
Date = "Mon, 22 May 2017 19:14:13 GMT";
Etag = "\"42bebc5fb88323b8cd145ed85ea7a018\"";
"Last-Modified" = "Mon, 22 May 2017 14:54:38 GMT";
Server = AmazonS3;
"x-amz-id-2" = "abcdefghijklmn";
"x-amz-request-id" = 1A2B3C4D5E;
}
我正在验证请求是否使用Charles代理缓存 - 第一个请求出现,但后续请求没有。
使用.ephemeral
会话配置,或者将内存和磁盘大小设置为0的自定义URL缓存显示Charles中的所有请求,因此我知道Charles是一个有效的测试。
我一直认为,如果没有缓存标头,则不会缓存响应:|
任何想法?
编辑:这是我正在制作的请求
po task.originalRequest
▿ Optional<URLRequest>
▿ some : http://s3-eu-west-1.amazonaws.com/path/path/configuration.json
▿ url : Optional<URL>
▿ some : http://s3-eu-west-1.amazonaws.com/path/path/configuration.json
- cachePolicy : 0
- timeoutInterval : 60.0
- mainDocumentURL : nil
- networkServiceType : __ObjC.NSURLRequest.NetworkServiceType
- allowsCellularAccess : true
▿ httpMethod : Optional<String>
- some : "GET"
- allHTTPHeaderFields : nil
- httpBody : nil
- httpBodyStream : nil
- httpShouldHandleCookies : true
- httpShouldUsePipelining : false
答案 0 :(得分:5)
我一直认为,如果没有缓存标头,则无法缓存响应:|
如果它不起作用,即使没有Cache-Control
或Expires
标头,它也会缓存响应,如果all other criteria met。但是,它将使用启发式方法来确定缓存的响应新鲜度,因为响应头中未提供准确的到期时间。 NSURLCache
是根据RFC 2616第13条实施的,此处列出了此行为。
有关详细信息,请查看以下文章: