0

我的应用程序需要从我正在维护的在线 MySQL 数据库中下载大约 50 张图像。我知道我可以控制它们的缓存方式(例如):

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:aURL] 
                                         cachePolicy:NSURLRequestReturnCacheDataElseLoad 
                                     timeoutInterval:30.0];


但是:
1)使用这种缓存策略是否意味着图像在第一次下载后将真正永远保留在用户的设备上?或者,
2)我最好自己手动将它们保存到应用程序的 Documents 文件夹(也许同时将数据库写入那里以镜像在线)以确保它们的持久性 - 这样我就可以从那里加载它们(设备的 Documents文件夹)从那时起,在应用程序的所有后续运行中?

基本上只需要建议在初始下载后将图像保存在用户设备上的最佳方式 - 所以用户总是有一些东西查看连接问题是否阻止他们获取已添加到在线数据库中的任何新图像。

任何和所有的建议将不胜感激。

4

1 回答 1

2

NSURLCache 使用内存和磁盘缓存来下载请求。我记得在 iOS 5 之前存在一些问题,这些问题导致了像 SDURLCache 这样的单独库,但我认为不再需要它们了。

即使有磁盘缓存,当设备上的空间不足时,它仍可能被 iOS 清除。如果您不希望发生这种情况,您可以自己将图像存储在 Documents 文件夹中……但这种情况正是 Caches 目录的用途。您下载图像,除非设备空间不足,否则它们会一直存在,在这种情况下,它们会根据需要被清除并重新下载。如果我是该应用程序的用户,我更喜欢这种行为,而不是永久占用磁盘空间来存储可以轻松从网络恢复的内容。

于 2012-07-16T03:33:35.053 回答