SDWebImage刷新

时间:2017-03-28 05:35:05

标签: ios objective-c caching swift3 sdwebimage

我正在使用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
                }
            })

2 个答案:

答案 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];