我正在处理需要多个缩略图的“照片”类型演示的应用程序的一部分。完整尺寸的图像非常大,并且每次生成缩略图的时间都太长,因此我将缓存缩略图。
创建缩略图后,我很难确定如何最好地将缩略图存储在文件系统上。我可以想到几种可能性,但我不喜欢其中任何一种:
NSKeyedArchiver/unArchiver
,但是从我发现的情况来看,无论何时添加/删除缩略图,我都必须重新创建整个存档。也许我忽略了某些东西? 对采取最佳方法有何建议?
最佳答案
我会选择第二种选择。在iDevice上,您使用闪存。与HDD相比,访问许多文件的性能损失非常低。另外,您可以在内存中缓存一些内容,以防止过多地读取一个文件和同一个文件。 SDWebImage缓存机制包含一个很好的示例。
第三种选择-为此使用一个文件可能意味着使用数据库文件。如果您存储未压缩的数据,则可以在那里提高一些性能。您需要进行一些性能测试,因为加载更多数据(未压缩的拇指形式)可能会减慢其速度,从而节省CPU以获得更多存储访问权限。
组合方法是将缩略图存储为文件,但以未压缩的格式(不是.jpg,.png等)
只要缩略图相当小,就值得考虑的第四个选项:将它们保存在CoreData中。