我喜欢这个类似的问题,但它太老了。
我正在使用 SDWebImage 库从远程服务器下载图像。
远程图像可能会更改(但保持相同的名称),因此我必须在使用缓存的图像之前检查远程图像是否已更改。
我怎样才能做到这一点?
提前致谢(抱歉英语不好)
我喜欢这个类似的问题,但它太老了。
我正在使用 SDWebImage 库从远程服务器下载图像。
远程图像可能会更改(但保持相同的名称),因此我必须在使用缓存的图像之前检查远程图像是否已更改。
我怎样才能做到这一点?
提前致谢(抱歉英语不好)
我这样做是使用:
[SDWebImage sd_setImageWithURL:[NSURL URLWithString:strURL] placeholderImage:[UIImage imageNamed:@"placeholder.png"] options:SDWebImageRefreshCached];
/** * 即使图像被缓存,也要遵守 HTTP 响应缓存控制,并在需要时从远程位置刷新图像。* 磁盘缓存将由 NSURLCache 而不是 SDWebImage 处理,导致性能略有下降。* 此选项有助于处理在同一请求 URL 后面更改的图像,例如 Facebook graph api profile pics。* 如果缓存的图像被刷新,完成块被缓存的图像调用一次,最终的图像被调用一次。* * 仅当您无法使用嵌入的缓存清除参数使您的 URL 成为静态时才使用此标志。*/
我今晚只是在做这项非常研究,并且基于 SDWebImage 的当前实现,看起来没有“内置”方式来使用对服务器的条件 GET(etag 或日期)类型请求来检查更新。
我现在正在探索的方式是创建一个唯一的 URL,以便在图像的服务器版本更新时,将哈希或版本附加到末尾。就像是:
http://example.com/myimage.png?v=2
并随着图像的变化增加该版本号,但保持 myimage.png 名称相同,因为它不会改变。这应该会强制 SDWebImage 下载新图像并为新版本的图像构建新缓存。
否则,您必须调整cacheMaxCacheAge
SDImageCache.m 中的常量值以比其默认值 1 周更频繁地检查。