如何刷新Kingfisher缓存的一系列图像?

3

之前的一个问题看起来很像是在问类似的问题,但没有得到答案。

如果我只是更改服务器上的图像,保持相同的 URL,并依赖于 HTTP 304 和其他机制重新加载图像的新版本,即使它们存在于缓存中,是否可行?

我的第一个想法是,任何对图像的更改都必须同时更改图像的名称以强制刷新。

可能的解决方法 - 假设我有一堆共享公共 URL 根的图像,例如https://server/path/A/image.pnghttps://server/path/B/anotherimage.png。我能否删除一个路径下的所有图像而不使其他路径下的图像失效 - 例如,当与https://server/path/A的内容表示的信息块发生更改时,我可以重新加载与其关联的每个图像,但不包括其他文件夹中的图像?

我目前使用 Kingfisher 的扩展仅基本地将其用于 UIImageView:

myImage.kf.setImage(with: imageURL)

2个回答

5

希望这能帮到您 跳过缓存搜索,强制重新下载图片

imageView.kf.setImage(with: url, options: [.forceRefresh])

不完全是这样。如果应用程序必须强制刷新缓存,则意味着应用程序知道缓存的图像何时失效。但实际上并不知道。存储的图像可能会更改下载位置,直到 HTTP 状态应导致缓存刷新之前,应用程序都不知情。 - Adam Eberbach

1
对���Kingfisher,首先分配一个默认的占位符并强制刷新。
let tempImage = UIImage(named: "user_placeholder")
 self.avatarImageView.kf.indicatorType = .activity
 self.avatarImageView.kf.setImage(with: avatarURL,placeholder: tempImage,options: [.forceRefresh])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接