IOS如何防止下载的图片以编程方式缓存

Posted

技术标签:

【中文标题】IOS如何防止下载的图片以编程方式缓存【英文标题】:IOS how to prevent downloaded images from caching programmatically 【发布时间】:2015-08-03 19:40:37 【问题描述】:

我正在开发社交网络应用程序,每次打开个人资料视图时,它都会从服务器下载用户的个人资料照片。我还没有实现任何缓存。但似乎 ios 会自动执行此操作。

问题是,有时当用户更新个人资料照片时,即使我可以看到该图像已成功上传到服务器,但在其他设备上用户可以看到更新的照片可能需要一段时间。我注意到,如果在更新个人资料照片后我重新安装应用程序,它将立即获得最新图像。所以我唯一的假设是,即使我的应用程序每次打开配置文件视图时都会发送从服务器下载图像的请求,但该请求并不总是由 iOS 执行,而是 iOS 提供了缓存副本。

如果我是对的,请高人告诉我如何解决这个问题。我需要手动执行缓存删除吗?

我正在使用 Alamofire 和 Xcode 6.4

更新: 在我看来,将以下两行添加到 AppDelegate 解决了这个问题。

    let sharedCache:NSURLCache  = NSURLCache(memoryCapacity: 0, diskCapacity: 0, diskPath: nil)
    NSURLCache.setSharedURLCache(sharedCache)

【问题讨论】:

【参考方案1】:

Alamofire 在后台使用 NSURLCache,所以你只需要调用:

NSURLCache.sharedURLCache().removeAllCachedResponses()

Swift 4.1 更新

URLCache.shared.removeAllCachedResponses()

【讨论】:

感谢您的提示,我想我找到了解决方案。 能否请您发布您的解决方案? 您可以在 UPDATE 语句下的初始帖子中找到它。 这只是禁用了 url 缓存。这不是你想要的。缓存是一件好事,它使整个应用程序更快,因为您不必每次都重新下载。您的问题有多种解决方案:您可以仅为此特定图像禁用缓存,您可以仅为特定图像删除缓存等...

以上是关于IOS如何防止下载的图片以编程方式缓存的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式在 ios 中的 iMessage 中发送图片+文本?

[iOS开发]SDWebImage源码学习

如何在 ios 应用程序中以编程方式获取任何站点上图像的 url?

使用软引用和弱引用防止内存溢出

iOS利用SDWebImage图片下载缓存

iOS多图片下载