繁体   English   中英

NSURLCache是​​否删除过期的缓存响应?

[英]Does NSURLCache remove expired cached responses?

从iOS 5.0开始,Apple支持磁盘缓存。 之前我正在使用自制的解决方案,但是我正在测试NSURLCache ,希望最终能够使用它,因为我在过去看到了奇怪的行为。

我遇到的一个更令人困惑的问题是cachedResponseForRequest:返回过期的请求。 我一直在测试我正在使用的iPhone上的时钟。 解析标题清楚地表明设备时间早于到期日期。

我愿意接受可能有一个后台任务,定期修剪过期的请求。 我已经完成了测试,我实际上在等待查看请求是否“自然”到期,但事实并非如此。

Apple是否未能正确实现缓存失效?

我正在使用Charles代理进行测试。 这是一个棘手的问题 ,我不羡慕任何必须实现缓存失效的人,但iOS应该是一个成熟的SDK。

有两种http缓存机制:到期和验证。
如果响应未到期,则客户端可以从缓存中提供响应,而无需向服务器发出请求。
如果它已过期,则客户端可以使用If-MatchIf-Modified-Since标头条目进行条件请求。
如果服务器以304 Not Modified响应,则客户端可以使用缓存中的数据,即使它已过期。

有关更多详细信息,请参阅http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM