如何仅使用Kingfisher在磁盘中caching图像?
我正在使用Kingfisher
库下载和caching图像。 我在执行中遇到一些问题:
-
图像是caching在内存和磁盘?
-
有没有提供只在磁盘上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) }