SDWebImageOptions.refreshCached不会刷新缓存

问题描述 投票:0回答:2

我一直有麻烦我SDWebImage缓存时的图像在我的火力存储后端的更新来更新。在其他的答案建议我在这里对堆栈交换阅读,我实现.refreshCached但还是一样的形象似乎在服务器已经更新后才会被载入。为了证实这是一个缓存问题我已经测试下载图像未缓存,并获得正确的结果。什么我可以做错了任何想法或更好的缓存库。谢谢!

据我所知,这个问题从更新已缓存,但有没有办法当数据已在服务器上更改检测相同的URL茎。

SDWebImage, Swift: SDWebImageRefreshCached unresolved identifier

How to update image in cache when image changed on server with SDWebImage

Firebase Storage Tutorial Using 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)")
                    }
 })
ios swift firebase sdwebimage nscache
2个回答
0
投票

更改的文件在云存储(用于火力地堡)没有通知机制。因此,为了确保您获得最新的数据文件的唯一途径,现在是不缓存它。

另外许多开发人员使用无论是火力地堡实时数据库或云公司的FireStore保存每个文件的一些元数据,然后更新元数据每当文件更改。由听众连接到元数据在数据库中的文件(见Realtime Database例子,Cloud Firestore),你就可以强制图像的重载。

你甚至可以更进一步,并使用Cloud Functions当一个文件被写入检测,然后从那里更新该文件的元数据。这意味着,上传图片没有更新数据库本身,因为云计算功能做它幕后的应用程序。


0
投票

试试下面的代码。在这一点,你需要从完成中设定的图像。

self.imageView.sd_setImage(with: URL(string: url)!, placeholderImage: nil, options: .refreshCached) { (image, error, cacheType, url) in
            self.imageView.image = image
        }
© www.soinside.com 2019 - 2024. All rights reserved.