Swift 应用程序终止删除翠鸟磁盘缓存
Swift App Termination removes Kingfisher Disk Cache
我的 kingfisher 缓存有问题。场景:我将 URL 中的图像保存到自定义 kingfisher 缓存中。
当我读取给定的 URL 时,它告诉我它首先从内存中获取图像,并在几秒钟后刷新时从磁盘中获取图像。当我手动关闭应用程序并重新启动时,翠鸟在打开时告诉我缓存磁盘大小例如为 20MB。 (这是我所期望的)
基本上,缓存一直运行良好,除了:当我将应用移至后台时,它会保持打开状态 5-30 分钟,直到 Apple/iOS出于内存原因将其杀死 (Terminated due to signal 9
)。当我启动应用程序时,缓存(内存和磁盘)都是空的!这怎么可能?用户杀应用和苹果杀应用有什么区别?
是的,这是可能的。你可以像这样给出一个目录 url:ImageCache(name: "test", cacheDirectoryURL: url) -> url 可以是你的文档文件夹,例如
内存存储和磁盘存储都有默认的过期设置。内存存储中的图像将在上次访问后 5 分钟后过期(或在应用程序终止期间将被删除),而磁盘存储中的图像是一周。您可以通过以下方式更改此值:
// Memory image expires after 10 minutes.
cache.memoryStorage.config.expiration = .seconds(600)
// Disk image never expires.
cache.diskStorage.config.expiration = .never
如果您想在缓存某个图像时覆盖该图像的过期时间,请传入一个选项:
// This image will never expire in memory cache.
imageView.kf.setImage(with: url, options: [.memoryCacheExpiration(.never)])
过期的内存缓存将被清除,持续时间为 2 分钟。如果你想让它更频繁地发生:
// Check memory clean up every 30 seconds.
cache.memoryStorage.config.cleanInterval = 30
我的 kingfisher 缓存有问题。场景:我将 URL 中的图像保存到自定义 kingfisher 缓存中。
当我读取给定的 URL 时,它告诉我它首先从内存中获取图像,并在几秒钟后刷新时从磁盘中获取图像。当我手动关闭应用程序并重新启动时,翠鸟在打开时告诉我缓存磁盘大小例如为 20MB。 (这是我所期望的)
基本上,缓存一直运行良好,除了:当我将应用移至后台时,它会保持打开状态 5-30 分钟,直到 Apple/iOS出于内存原因将其杀死 (Terminated due to signal 9
)。当我启动应用程序时,缓存(内存和磁盘)都是空的!这怎么可能?用户杀应用和苹果杀应用有什么区别?
是的,这是可能的。你可以像这样给出一个目录 url:ImageCache(name: "test", cacheDirectoryURL: url) -> url 可以是你的文档文件夹,例如
内存存储和磁盘存储都有默认的过期设置。内存存储中的图像将在上次访问后 5 分钟后过期(或在应用程序终止期间将被删除),而磁盘存储中的图像是一周。您可以通过以下方式更改此值:
// Memory image expires after 10 minutes.
cache.memoryStorage.config.expiration = .seconds(600)
// Disk image never expires.
cache.diskStorage.config.expiration = .never
如果您想在缓存某个图像时覆盖该图像的过期时间,请传入一个选项:
// This image will never expire in memory cache.
imageView.kf.setImage(with: url, options: [.memoryCacheExpiration(.never)])
过期的内存缓存将被清除,持续时间为 2 分钟。如果你想让它更频繁地发生:
// Check memory clean up every 30 seconds.
cache.memoryStorage.config.cleanInterval = 30