iOS REST调用和缓存策略

时间:2013-11-04 20:33:29

标签: ios rest caching user-experience nsurlcache

过去,我使用了一些不同的策略,以便在浏览基于REST的iOS应用的各种屏幕时提供最佳用户体验:

  • 杠杆NSURLCache:虽然这适用于某些用例, 我对这种方法更感兴趣:“显示 调用API时立即缓存,然后用更新的更新屏幕 必要的数据“.NSURLCache似乎只为我提供了选择 例如读取表单缓存或根据各种不同从远程读取 策略,但不从缓存中读取,然后从远程读取。
  • 利用核心数据:通过Restkit,AFIncrementalStore或自定义框架,这里的想法是从核心数据中获取数据 正在进行通话。一旦呼叫返回,核心数据就会更新 最新数据和界面刷新。它可以很好用,但是 需要大量的配置和维护,增加了很多 复杂程度。在需要离线模式时,这是一个很好的选择, 但如果只需要缓存,这看起来有点过分。 -

是否有人采用不同的方法,或者有一个轻量级的库,建议提供高级缓存功能,而不需要核心数据?

2 个答案:

答案 0 :(得分:0)

利用NSURLCache:您基本上希望将内存缓存合并到框架中。是的,它存在,并被称为AFNetworkingHere是指定相同的文档。它从您的代码中抽象出缓存机制。

您必须设计一个数据控制器,检查磁盘(核心数据)上是否有数据,如果没有,则使用AFNetworking(还包括内存缓存)发出网络请求。

没有框架可以使用NSURLcache使用核心数据和内存缓存为您提供磁盘缓存

答案 1 :(得分:0)

我的问题的一个可能答案是利用NSCoding / NSKeyedArchiver。

可在此处http://nshipster.com/nscoding/

找到对此的详细说明

通过NSKeyedArchiver,我可以持久保存数据,而无需使用Core Data设置整个数据模型。 问题是如何围绕NSKeyedArchiver构建一个有效的缓存机制,以及第三方库是否已经在这样做。看起来答案叫做TMCache https://github.com/tumblr/TMCache

所以我的目的是让我的类符合NSCoding,通过TMCache保留一些对象。我计划首先将我的API调用路由到缓存,同时在后台更新缓存。