使用NSURLCache快速显示数据,在后台更新

时间:2015-06-22 13:53:36

标签: ios caching nsurlrequest nsurlcache

我希望我的iOS应用程序(至少某些端点)具有以下网络行为:

  • 无论何时可用,都要始终使用缓存,无论年龄大小(立即绘制用户界面)
  • 如果数据过时,也会发出网络请求(UI在此期间有陈旧数据,但仍可能非常接近)
  • 如果网络数据返回,请更新缓存并进行所需的任何UI更新。

我更喜欢这样的行为,因为我可以非常积极地设置我的缓存策略(长缓存时间)。对于不经常更新的数据,这会导致常见情况下的快速UI返回以及基本上在后台保持最新的模型层(从用户的角度来看)

我正在阅读有关NSURLCache的内容,但我没有看到缓存政策,甚至没有看到我对此充满信心的两项政策的组合。

选项:

  1. 使用ReturnCacheDataDontLoad始终获取缓存。如果失败或旧缓存使用ReloadIgnoringLocalCacheData进行HTTP提取。 (必须检查自己?年龄是可以检查的吗?)
  2. 使用ReturnCacheDataDontLoad始终获取缓存。然后使用UseProtocolCachePolicy将缓存时间设置为非常低,如果从缓存返回则忽略响应(我可以判断它是否从缓存返回?this说不可靠)
  3. 分开两个问题。对所有用户发起的请求使用ReturnCacheDataDontLoad,如果根本没有缓存,则仅立即触发网络请求。另外,让一名工作人员密切关注存储的模型,并在他们看起来老了时在后台更新它们。
  4. 扩展NSURLCache
  5. 使用已经执行此操作的OTS吗? ( - AFNetworking just uses NSURLSession caching。+ EVURLCache强制磁盘缓存,但希望数据在应用安装上播种。

0 个答案:

没有答案