首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当不应该使用iOS URLCache缓存时(IMHO)

当不应该使用iOS URLCache缓存时(IMHO)
EN

Stack Overflow用户
提问于 2017-05-22 21:00:31
回答 1查看 718关注 0票数 5

有人知道为什么这个请求会被缓存吗?

  • 我使用的是未经修改的.default URLSessionConfiguration
  • 响应头是:

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

代码语言:javascript
复制
{
    "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是一个有效的测试。

我一直认为如果没有缓存头,响应就不会被缓存:

有人有什么想法吗?

编辑:这是我提出的要求

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-25 09:10:35

我一直认为如果没有缓存头,响应就不会被缓存:

这不是它的工作方式,即使没有Cache-ControlExpires头(如果是所有其他标准均符合 ),它也会缓存响应。但是,它将使用启发式方法来确定缓存的响应新鲜度,因为响应头中没有提供确切的过期时间。NSURLCache是根据RFC 2616第13节实现的,并在这里描述了这种行为。

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

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44122092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档