【发布时间】:2014-08-14 18:22:21
【问题描述】:
我正在使用 NSURLCache (AFNetworking) 来缓存来自后端的响应,设置为 Cache-Control = max-age=3600, public。到目前为止,这工作正常。当用户打开应用程序并且数据不超过一小时时,它会从缓存中获取它。较旧时,它会从后端加载它。
我还有一个拉动刷新选项,它允许用户通过覆盖缓存从后端获取新数据,即使它仍然具有有效的缓存数据,这也可以正常工作。
我遇到的问题是,新检索的数据(通过覆盖缓存)没有被缓存。场景是这样的:
- 用户打开应用程序,时间戳为 x 的数据正在从后端以
Cache-Control = max-age=3600, public加载 - 用户研究数据 10 分钟。
- 用户现在手动刷新数据,并且带有时间戳 y 的新数据正在使用
Cache-Control = max-age=3600, public从后端提取 - 用户再研究新数据 10 分钟,然后关闭应用。
- 用户再次打开应用,但看到的是时间戳为 x 的数据,而不是时间戳为 y 的数据
在我看来,只要 NSURLCache 具有有效的缓存数据,它就不会缓存来自同一资源的数据,即使同时来自同一资源的新数据也进来了。有谁知道如何告诉 NSURLCache 缓存最近检索到的数据,即使它仍然有有效数据?或者它只是按设计工作?非常感谢任何帮助。
【问题讨论】:
标签: ios objective-c cocoa-touch caching nsurlcache