我想对多个组使用多个缓存方案,例如:
1-该图像组应每60秒刷新一次。
2-除非发生内存警告,否则此映像组应该永远存在。
我不知道如何使用AlamofireImage(或Kingfisher)之类的库来实现多个缓存程序。我写了这段代码,但无法清除文件夹中的过期图像(我不想清除所有缓存文件夹内容):

let downloader = ImageDownloader(name: "shortlived_image_downloader")
let cache = ImageCache(name: "shortlived_cache")
cache.maxCachePeriodInSecond = 60
cell.onPlayingImageView.kf.setImage(with: url,
                                                  placeholder: UIImage(named:"Placeholder_S"),
                                                  options: [.transition(ImageTransition.fade(0.25)),
                                                            .downloader(downloader),
                                                            .targetCache(cache)],
                                                  progressBlock: nil,
                                                  completionHandler: nil)

func clearKFShortLiveCache() {
         let cache = ImageCache(name: "shortlived_cache")
         cache.clearMemoryCache()
         cache.cleanExpiredDiskCache()}

最佳答案

翠鸟中,

您可以使用以下方法清除不同类型的cache:

let cache = ImageCache(name: "shortlived_cache")

cache.clearMemoryCache()
cache.clearDiskCache()

要根据您的要求设置cache size and time,可以使用:
cache.maxMemoryCost = YOUR_VALUE
cache.maxCachePeriodInSecond = YOUR_VALUE
cache.maxDiskCacheSize = YOUR_VALUE

除非发生内存警告,否则映像组应该永远存在:它由Kingfisher自动处理。
AutoPurgingImageCache不处理Kingfisher概念。 AlamofireImage支持此功能。在Kingfisher中,您必须自己根据auto purging处理last access date

有关这些属性和方法的详细信息,可以参考:

https://github.com/onevcat/Kingfisher/wiki/Cheat-Sheet
http://cocoadocs.org/docsets/Kingfisher/1.1.2/Classes/ImageCache.html

关于ios - 如何使用Kingfisher(或AlamofireImage)在缓存中的图像上设置最大期限并手动清除过期项目?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44260849/

10-10 21:03