IOS:仅当远程图像未更改时才缓存 SDWebImage

Posted

技术标签:

【中文标题】IOS:仅当远程图像未更改时才缓存 SDWebImage【英文标题】:IOS: SDWebImage cache only if remote image has not changed 【发布时间】:2019-12-06 16:35:23 【问题描述】:

我正在使用以下代码将图像加载到我的视图中:

private func setUpImage(imageFile: String, cell: ShowCollectionViewCell) 
    cell.showImageView.sd_imageIndicator = SDWebImageActivityIndicator.gray
    cell.showImageView.sd_setImage(with: URL(string: imageFile), placeholderImage: nil, options: .refreshCached)

问题是,如果我们替换服务器中的图像,则应用程序中的图像永远不会刷新,即使用户关闭应用程序并重新启动它也是如此。只有全新安装才能获得新映像。

SDWebImage 能否在使用缓存版本之前检测到图像是否已远程更改?

我正在使用最新版本的 SDWebImage 与 Swift 4.2 和 XCode 11.1。

【问题讨论】:

【参考方案1】:

我在*** 中搜索并找到了。

在here

import SDWebImage

@IBAction func clearCache(sender: UIButton) 
    SDImageCache.sharedImageCache().clearMemory()
    SDImageCache.sharedImageCache().clearDisk()

如@guidev 所述,您尝试重置缓存。

这个文档可能很旧,但我相信你可以让它工作。

【讨论】:

【参考方案2】:

缓存基于 URL,因此如果要重新下载图像,则需要更改 url 名称。考虑将诸如上次修改日期之类的内容附加到 url。或者在图像更新时发送推送,然后使用 removeImageForKey 从缓存中手动逐出 url。

【讨论】:

以上是关于IOS:仅当远程图像未更改时才缓存 SDWebImage的主要内容,如果未能解决你的问题,请参考以下文章

仅当它们已更改时才强制浏览器重新加载 css/js

iOS 未检测到新的外围设备名称

JPA:仅当结果集不为空时才缓存查询

仅当应用程序在后台请求位置后进入前台时才调用 didUpdateLocations

Firestore:仅当有更新时才从服务器获取数据,否则从缓存中获取

仅当以下行未注释时才提取注释行