首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SDWebImage刷新

SDWebImage刷新
EN

Stack Overflow用户
提问于 2017-03-28 13:35:05
回答 2查看 962关注 0票数 0

我正在使用SDWebImage从URL加载图像。当在服务器上更新图像时,即使我使用了options: .refreshCached,图像视图中的图像也不会更新。更新图像后,URL保持不变。我可以直接在缓存中更改此URL的图像吗?我用谷歌搜索了这个问题,我发现我不能直接在缓存中修改它。如果我不能为指定URL直接更改缓存中的图像,是否可以清除特定键(URL)的缓存值?

代码语言:javascript
复制
   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
                }
            })
EN

回答 2

Stack Overflow用户

发布于 2017-03-28 14:46:26

看起来这个问题已经在SDWebImage的官方GitHub页面上提出了。显然,答案表明[[SDImageCache sharedImageCache] removeImageForKey:image_url fromDisk:YES];在清除图像方面做得不够公平。

建议答案是

代码语言:javascript
复制
 [[SDImageCache sharedImageCache] clearMemory];
 [[SDImageCache sharedImageCache] cleanDisk];

现在,您是否需要这两个语句取决于您如何配置SDImageCache。

它们是什么意思?

SDWebImage广泛地缓存图像,它将缓存的副本保存在内存和HardDisk中。当一个图像被请求时,它首先命中RAM缓存以找到该图像,如果找不到,则命中磁盘缓存。并从磁盘高速缓存中加载RAM高速缓存。

因此,简单地从磁盘清除仍然会将图像留在磁盘缓存中,并且当请求图像时,它不是从web下载,而是从磁盘加载,并在RAM中保留一个副本以供将来使用。因此,它否定了从缓存中删除图像的想法。

我知道这不是你特别想要的答案,但不幸的是,我不知道从SDImageCache中删除特定的图像。

票数 3
EN

Stack Overflow用户

发布于 2017-03-28 13:46:14

[SDImageCache sharedImageCache removeImageForKey:image_url fromDisk:是];

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43061334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档