SDWebImageOptions.refreshCached не обновляет кеш - PullRequest
0 голосов
/ 08 февраля 2019

У меня были проблемы с получением моего SDWebImage кеша для обновления при обновлении образа в моей базе данных Firebase.Как и предлагалось в других ответах, которые я читал здесь, о замене стека, я реализовал .refreshCached, но, тем не менее, тот же образ, кажется, загружается после обновления сервера.Чтобы убедиться, что это проблема с кешем, я протестировал загрузку изображения без кэширования и получил правильные результаты.Любые идеи о том, что я могу делать неправильно или лучше кеширование библиотеки.Спасибо!

Я понимаю, что проблема связана с обновлением того же URL, который кешируется, но есть ли способ определить, когда данные были изменены на сервере.

SDWebImage, Swift: SDWebImageRefreshCached неразрешенный идентификатор

Как обновить изображение в кэше при изменении изображения на сервере с помощью SDWebImage

Учебное пособие по хранению Firebase с использованием sd_setImage

Моя реализация

 self.userProfileImage.sd_setImage(with: URL(string: user.photoURL), placeholderImage: placeHolder, options: SDWebImageOptions.refreshCached, completed: {image,error,imageCacheType,storageRef in
                    if let error = error{
                        print("Error during initial cache load 1: \(error)")
                    }
 })

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Попробуйте приведенный ниже код.В этом вам нужно установить изображение из блока завершения.

self.imageView.sd_setImage(with: URL(string: url)!, placeholderImage: nil, options: .refreshCached) { (image, error, cacheType, url) in
            self.imageView.image = image
        }
0 голосов
/ 08 февраля 2019

В Cloud Storage (для Firebase) нет механизма уведомлений об изменениях в файлах.Таким образом, единственный способ гарантировать, что вы получите самые последние данные для файла прямо сейчас, это не кэшировать его.

В качестве альтернативы многие разработчики используют либо базу данных Firebase Realtime, либо Cloud Firestore для хранения метаданных для каждого файла, а затемобновлять эти метаданные при каждом изменении файла.Подключив прослушиватель к метаданным для файла в базе данных (см. Примеры для База данных в реальном времени и Cloud Firestore ), вы можете принудительно перезагрузить образ.

Можно даже пойти еще дальше и использовать Облачные функции , чтобы определить, когда записывается файл, а затем обновить оттуда метаданные для этого файла.Это означает, что приложение, которое загружает изображение, не должно обновлять саму базу данных, потому что Cloud Functions делает это негласно.

...