我使用SDWebImage库来处理图像缓存。我实现了一种从服务器下载图像并在tableView
中填充数据的方法。以下是我在tableViewCell
下载图片并显示的代码
在cellForRowAtIndexPath
中,我执行了以下代码
[cell.profileImageView sd_setImageWithURL:[NSURL URLWithString:url] placeholderImage:nil options:SDWebImageRefreshCached];
这里完美无缺。但是当我在服务器上更新图像时,tableViewCell
仍然显示相同的图像。问题是,它的缓存不是更新图像。我使用相同的关键字进行了搜索,并在StackOverflow上遇到了this问题。但无法解决问题。我还尝试清除viewDidDisappear
-(void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:YES];
[[SDImageCache sharedImageCache]clearMemory];
[[SDImageCache sharedImageCache]clearDisk];
}
但它效率不高。当服务器上的映像更新时,还有其他方法可以更新缓存吗?
答案 0 :(得分:2)
您可以使用SDWebImageRefreshCached选项刷新具体图像,但是您永远不知道图像是否在服务器端更改。因此,只有您决定是否使用图像缓存以及何时应更新缓存。
答案 1 :(得分:1)
来自SDWebImage
docs:
如果您不控制您正在使用的图像服务器,则可能无法在更新内容时更改该网址。在这种情况下,您可以使用SDWebImageRefreshCached标志。这会稍微降低性能,但会尊重HTTP缓存控制头
[imageView sd_setImageWithURL:url
placeholderImage:[UIImage imageNamed:@"placeholder.png"]
options:SDWebImageRefreshCached];
如果在所有代码中使用它,它将无法实现图像缓存的目的。因为每次都会下载图像。相反,你可以:
SDWebImageRefreshCached
一次或类似的事情,并在其他时间使用普通代码。如果可行,您还可以偶尔清除整个缓存以强制刷新。