一尘不染

如何清除AlamofireImage setImageWithURL缓存

swift

我在项目中经常使用AlamofireImage,并且使用

let URL = NSURL(string: "https://cdn.domain.com/profile/image.jpg")!
imageView.af_setImageWithURL(URL)

从我的CDN获取图像。我已经做了一些测试,但是如果我错了,请纠正我,这似乎会将下载的图像存储到缓存中。我的测试包括下载5mb的图片。第一次大约花了20秒,第二次是瞬间。

我想知道的是如何清除特定URL /图像的缓存并重新下载图像?

例如,我更新了用户个人资料照片。图像名称/
URL会完全相同,但是我知道图像会随着用户从库或相机中选择新图像而发生变化。我知道该图像已成功上传到CDN,因为我可以直接在CDN上的文件夹中看到新图像。


阅读 317

收藏
2020-07-07

共1个答案

一尘不染

您需要从内存缓存和磁盘缓存中删除映像。您可以按照以下步骤进行操作:

func clearImageFromCache() {
    let URL = NSURL(string: "https://cdn.domain.com/profile/image.jpg")!
    let URLRequest = NSURLRequest(URL: URL)

    let imageDownloader = UIImageView.af_sharedImageDownloader

    // Clear the URLRequest from the in-memory cache
    imageDownloader.imageCache?.removeImageForRequest(URLRequest, withAdditionalIdentifier: nil)

    // Clear the URLRequest from the on-disk cache
    imageDownloader.sessionManager.session.configuration.URLCache?.removeCachedResponseForRequest(URLRequest)
}

当前,URLCache只能以这种方式在master分支上将其清除。我只是把f35e4748允许访问底层sessionManagerImageDownloader。该版本尚未在实际版本中提供,但应在本周的某个时候发布。

2020-07-07