我在考虑为我的iOS应用实现什么缓存机制时遇到了一些问题。首先,让我们解释一下我的情况。
我想通过使用Alamofire从我的服务器上的RESTful API请求数千个附近位置记录(10000或更多),其中每个记录都由一堆字符串组成。JSON响应格式类似于以下内容:
[
{
"id": 1,
"name": "Name x",
"lat": 59.5025878,
"lng": -0.1509515,
"address": "Address x"
},
{
"id": 2,
"name": "Name y",
"lat": 61.5025878,
"lng": -0.1508515,
"address": "Address y"
},
etc.
]
关键在于我只想在应用程序启动时或过了一定的时间后,或者当应用程序用户将其位置明显移动以至于会改变附近的位置时,才发送/重新发送此查询。为了保持服务器负载低,我计划在应用程序内部对返回的位置进行搜索查询,而不是针对每个单独的请求查询服务器,这将非常低效和昂贵。
因此,我想在手机上缓存我的响应数据,但我不知道该选择哪个选项。我对CoreData和NSCache进行了一些背景阅读。CoreData可以让我将位置结果存储在数据库中。这样做的好处是存储记录保持内部活跃,因为毕竟这是一种永久性存储解决方案。另一方面,使用CoreData可能是完全过度的,因为它带有开销,并且使用NSCache存储位置记录可能不会使用太多内存(记住我仅存储字符串)。但是再次考虑,为什么要将位置数据保存在缓存中,当用户可能甚至不经常访问它们。此外,缓存中的位置条目有机会被释放以节省更多内存。
我相信还有其他解决方案可能更适合我的目的。毕竟,我对iOS中的这个主题相当新,因此我非常感谢一些指导。
提前致谢。