【问题标题】:How to refresh a series of images cached by Kingfisher?如何刷新Kingfisher缓存的一系列图片?
【发布时间】:2019-03-22 20:17:28
【问题描述】:

A previous question 看起来好像在问一个类似的问题,但没有得到回答。

我是否可以只更改服务器上的图像,保持相同的 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)

【问题讨论】:

    标签: ios caching browser-cache kingfisher


    【解决方案1】:

    希望这会对您有所帮助 跳过缓存搜索,再次强制下载图片

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

    【讨论】:

    • 并非如此。如果应用程序必须强制刷新缓存,那么这意味着应用程序知道缓存的图像何时停止有效。它没有。存储的图像可以在下载位置发生变化,并且应用程序在 HTTP 状态应该导致缓存刷新它之前没有任何线索。
    【解决方案2】:

    首先为 Kingfisher 分配一个默认占位符并强制刷新

    let tempImage = UIImage(named: "user_placeholder")
     self.avatarImageView.kf.indicatorType = .activity
     self.avatarImageView.kf.setImage(with: avatarURL,placeholder: tempImage,options: [.forceRefresh])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-14
      • 2017-10-18
      • 1970-01-01
      • 2018-09-14
      • 1970-01-01
      • 2018-11-07
      相关资源
      最近更新 更多