gpt4 book ai didi

iOS URLCache 在不应该的时候缓存(恕我直言)

转载 作者:可可西里 更新时间:2023-11-01 05:32:51 25 4
gpt4 key购买 nike

有谁知道为什么要缓存这个请求?

  • 我使用的是未修改的 .default URLSessionConfiguration

  • 响应 header 是:

(来自 Charles,通过调试数据任务完成 block 中的响应确认)

{
"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 session 配置,或将内存和磁盘大小设置为 0 的自定义 url 缓存会显示 Charles 中的所有请求,因此我知道 Charles 是一个有效的测试。

我一直假设没有缓存 header 就不会缓存响应:|

有什么想法吗?


编辑:这是我提出的要求

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

最佳答案

I've always assumed that without cache headers a response won't be cached :|

这不是它的工作原理,它会缓存响应,即使没有 Cache-ControlExpires header ,如果 all other criteria met .但是,它将使用启发式方法来确定缓存响应的新鲜度,因为响应 header 中未提供确切的过期时间。 NSURLCache 是根据 RFC 2616 的第 13 节实现的并在此处说明了此行为。

有关更多信息,您可以查看以下文章:

关于iOS URLCache 在不应该的时候缓存(恕我直言),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44122092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com