如何仅使用Kingfisher在磁盘中caching图像?

我正在使用Kingfisher库下载和caching图像。 我在执行中遇到一些问题:

  1. 图像是caching在内存和磁盘?

  2. 有没有提供只在磁盘上caching图像?

我已经阅读了多篇文章,但是找不到任何解决scheme。

请帮忙..!!

是的,翠鸟caching内存和磁盘上的图像。

默认情况下,将使用的RAM数量不受限制,您必须自行设置该值:

 ImageCache.default.maxMemoryCost = 1024 * 1024 * yourValue 

其中1024 * 1024 * yourValue是百万像素的全球成本(我知道这是奇怪的,但它不是兆字节,它是百万像素,因为图像可以有不同的位深度等)。

例如,在我的testing中, 1024 * 1024 * 500的最大值在120MB到300MB之间波动。

顺便说一句,这也是你告诉Kingfisher永远不要使用RAM并且只caching到磁盘的方法:

 ImageCache.default.maxMemoryCost = 1 

这将迫使Kingfisher只使用磁盘caching。


如何debugging

首先要检查您是否在右侧caching中设置了最大值。 也许你确实创build了一个自定义caching? 我的例子是设置默认caching的值,如果没有其他定义的使用。

您可能还需要手动清除内存caching,并比较前后的内存占用情况:

 ImageCache.default.clearMemoryCache() 

如果您认为某个大图像在内存caching中不存在,则可以使用isImageCached进行validation:

 if let result = ImageCache.default.isImageCached(forKey: imageLink) { print(result.cached) print(result.cacheType) }