我的应用程序执行一些项目的搜索,并下载每一个结果的图像。它在tableView上显示结果,每个结果显示一个单元格,每个单元格显示相应的图像。
如果搜索已经用相同的参数完成了,我想缓存这些图像以避免下载相同的图像。我一直在阅读NSCache,这是一个很好的选择,例如在这篇文章中,但我也读到了这里,NSCache在应用程序发布之间没有持久化。但是,我在苹果的文档中找不到这些信息,有人能帮我找到吗?
如果我想保存下载的图像,即使是在应用程序发布之间,而且我无法使用NSCache,那么我应该如何管理呢?
发布于 2018-02-13 05:52:55
缓存是一项依赖于应用程序的任务。例如,正如您所说的,d不能使用NPCache,因为它不会永久存储。您可以尝试调优HTTP服务器(!)这样,您的应用程序的URL加载系统将缓存下载的图像尽可能长。但是,很难实现缓存完全满足您的要求。第三种选择是使用免费框架为您进行缓存。即使我觉得他们有一些缺点,你也应该看看。第四个选择是,编写自己的缓存,完全满足您的需要。这并不像听起来那么复杂。正如@rmaddy建议的那样,它本质上是在读取图像并将其写入缓存文件夹。
发布于 2021-03-06 08:16:10
我也遇到了同样的问题。我创建了一个轻量级库。它将数据存储在NSCache中,并与缓存文件夹同步。因此,在应用程序启动之间,您的数据是可用的。
用法:
class MyClass {
private let cache: SmartCache<URL, Data> = .init()
func downloadImage(from url: URL) {
if let data = self.cache[url], let image = NSImage(data: data) {
// Here your `image`
} else {
// Download your image and save it to our cache
cache[url] = image.tiffRepresentation
}
}
}https://stackoverflow.com/questions/48759384
复制相似问题