我想对多个组使用多个缓存方案,例如:
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/