Как установить максимальный период для изображения в кеше и очистить элементы с истекшим сроком действия вручную с помощью Kingfisher (или AlamofireImage)?

Я хотел бы использовать несколько сценариев кэширования для нескольких групп, например: 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()}

person Emran    schedule 30.05.2017    source источник


Ответы (1)


В Kingfisher

Вы можете очистить различные типы 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

person PGDev    schedule 30.05.2017