【发布时间】:2011-04-14 06:18:44
【问题描述】:
我有一个图像密集型 iPhone 应用程序,我希望将远程下载的图像存储在本地应用程序的沙箱 tmp 目录中,以避免不必要的网络请求。存储在应用程序目录中的文件的总大小是否有限制,或者应用程序是否需要管理它?应用如何确定 tmp 目录中文件的大小?
另外,如果应用需要管理缓存的大小,我想实施某种缓存策略来确定哪些文件无效。我该怎么做呢?如果我想实现一个基本的 LRU 缓存策略 - 使最近最少使用的文件无效 - 似乎我需要存储每个图像的访问计数并将其存储在磁盘上,这似乎有点时髦。我想一个简单的大小管理策略是在每次应用程序终止时简单地完全擦除缓存。
另外,使用 NSCachesDirectory 和 NSTemporaryDirectory 中的目录有什么区别? Apple docs 提到了两者,但没有谈论将哪一个用于什么类型的文件。我认为 NSTemporaryDirectory 更像是一个 Unix /var/tmp 目录,用于存储可以随时清除的临时数据。在我看来,NSCachesDirectory 更适合存储缓存的图像,因为在多个应用生命周期中可能需要这些文件。
【问题讨论】:
-
NSURLCache 不符合要求有什么原因吗?我自己正在处理图像缓存问题,并且想了解 NSURLCache 作为不需要完整的自定义 LRU 或 LRU-ish 数据存储的解决方案有多么有用
标签: iphone image caching sandbox