2

我想为多个组使用多个缓存方案,例如: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()}
4

1 回答 1

1

翠鸟中,

您可以清除不同类型的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

于 2017-05-30T12:36:58.277 回答