我正在使用SDWebImage
从网址加载图片。当在服务器上更新图像时,即使我使用options: .refreshCached
,图像也不会在图像视图中更新。更新图像后,URL保持不变。
我可以直接在缓存中更改此URL的图像吗?
我搜索了这个问题,我知道我不能直接在缓存中更改它。如果我无法直接更改缓存中的图像以指定URL,是否可以清除特定密钥(URL)的缓存值?
self.imgView.sd_setImage(with: url, placeholderImage: #imageLiteral(resourceName: "Timg"), options: .refreshCached, completed: { (image: UIImage?, error: Error?, cacheType: SDImageCacheType, imageURL: URL?) in
if image != nil{
self.imgView.contentMode = .scaleAspectFill
}
})
答案 0 :(得分:3)
看起来SDWebImage的官方GitHub页面已经提出了这个问题。很明显,答案表明[[SDImageCache sharedImageCache] removeImageForKey:image_url fromDisk:YES];
没有做足够的工作来清理图像。
建议的答案说
[[SDImageCache sharedImageCache] clearMemory];
[[SDImageCache sharedImageCache] cleanDisk];
现在是否需要这两个语句取决于您如何配置SDImageCache。
他们是什么意思?
SDWebImage广泛地缓存图像,它将缓存副本保存在RAM和HardDisk中。当请求图像时,它首先命中RAM Cache以找到图像,如果没有找到,则命中磁盘缓存。并从磁盘缓存加载RAM缓存。
因此,仅从磁盘清除仍然会将图像保留在磁盘缓存中,并且在请求图像而不是从Web下载时,它会从磁盘加载并在RAM中保留副本以供将来使用。因此它违背了从缓存中删除图像的想法。
我知道它不是您特别寻找的答案,但遗憾的是我不知道从SDImageCache中删除特定图像。
答案 1 :(得分:2)
[[SDImageCache sharedImageCache] removeImageForKey:image_url fromDisk:YES];