当前位置: 首页 > 面试题库 >

如何清除AlamofireImage setImageWithURL缓存

终逸仙
2023-03-14
问题内容

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

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

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

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

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


问题答案:

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

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。该版本尚未在实际版本中提供,但应在本周的某个时候发布。



 类似资料:
  • 我使用Drupal 7最新的开发版本。 我已经安装了清漆和过期模块并设置它们。它们工作得很好,但是我有一个关于从清漆中删除缓存的问题。 问题是如何只删除索引(主页)页面的清漆缓存,而不删除其他页面的缓存。我看了清漆日志,发现每次Drupal执行命令时,整个清漆缓存都被删除了 此命令由varnish模块或expire模块执行,它表示删除主页(索引)页的缓存。但正如我看到的,它正在删除varnish中

  • 问题内容: 我使用nginx作为前端服务器,我修改了CSS文件,但是nginx仍在使用旧文件。 我试图重新启动nginx,但没有成功,我已经用Google搜索,但是找不到清除它的有效方法。 一些文章说我们只能删除缓存目录:,但是我的服务器上没有这样的目录。 我现在该怎么办? 问题答案: 我遇到了完全相同的问题-我在Virtualbox中运行了Nginx。我没有打开缓存。但是看起来像已经设置好了,这

  • 我正在尝试使用Android Studio,第一次启动它,需要45分钟来编译...如果我不退出应用程序,那也没关系--每次后续编译/运行应用程序大约需要45秒。 我试着检查了我的一些缓存:在我的主目录中有一个文件夹,它包含123 MB。 我的项目文件夹中还有文件夹...其中一个大小为200 MB。我不敢随便用核弹攻击他们两个。删除文件夹的哪些部分是安全的? 有没有更好的解释为什么我的Android

  • 问题内容: 部署网站的新版本时,我需要清除所有APC缓存条目。APC.php有一个用于清除所有操作码缓存的按钮,但我看不到用于清除所有用户条目,所有系统条目或所有按目录条目的按钮。 是否可以通过命令行或其他方式清除所有缓存条目? 问题答案: 您可以使用PHP函数。 调用将清除系统缓存,而调用将清除用户缓存。

  • 我正在用Ionic Cordova项目开发一台iMac电脑。我将github帐户上的一个插件克隆到自己的repo中,并将该插件安装到一个带有ionic cordova插件add的ionic应用程序中https://github.com/axelcostaspena/MobileSDK-Cordova 。现在,每次我尝试使用ionic cordova plugin add@selligent mar

  • js import() 如何清除缓存?我有个需求需要动态导入一些js脚本,使用import()导入默认会有缓存,会有很大影响,如何才能实现每次导入的时候清除缓存? 加时间戳的方式其实我刚开始也试了,但使用的第一种方式,这种就会报错,但是我改成方式二,就可以,真奇怪,没有大佬能解释一下这个原因?使用的是vite