Apple 从 iOS 5.0 开始支持磁盘缓存。我以前使用过家庭滚动解决方案,但我正在测试,NSURLCache希望最终使用它,因为我过去见过奇怪的行为。
我遇到的更令人困惑的问题之一是cachedResponseForRequest:返回过期的请求。我一直在通过将我正在使用的 iPhone 上的时钟调快来进行测试。解析标头清楚地表明设备时间早于到期日期。
我愿意接受可能有一个后台任务会定期修剪过期的请求。我已经完成了测试,我实际上等待查看请求是否“自然”过期,但事实并非如此。
苹果只是未能正确实现缓存失效吗?
我正在使用Charles代理进行测试。这是一个棘手的问题,我并不羡慕任何必须实现缓存失效的人,但 iOS 现在应该是一个成熟的 SDK。
http 缓存有两种机制:过期和验证。
如果响应尚未过期,客户端可以从缓存中提供响应,而无需向服务器发出请求。
如果已过期,客户端可以使用If-Match或If-Modified-Since标头条目发出条件请求。
如果服务器响应304 Not Modified,则即使缓存已过期,客户端也可以使用缓存中的数据。
有关更多详细信息,请查看http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html。
| 归档时间: |
|
| 查看次数: |
828 次 |
| 最近记录: |