IOS 如何防止以编程方式缓存下载的图像
IOS how to prevent downloaded images from caching programmatically
我正在开发社交网络应用程序,每次打开个人资料视图时,它都会从服务器下载用户的个人资料照片。我还没有实现任何缓存。但似乎 iOS 会自动执行此操作。
问题是有时当用户更新个人资料照片时,即使我可以看到该图像已成功上传到服务器,用户可能需要一段时间才能在其他设备上看到更新后的照片。我注意到,如果在更新个人资料照片后我重新安装应用程序,它将立即获得最新图像。所以我唯一的假设是,即使我的应用程序每次打开配置文件视图时都会发送从服务器下载图像的请求,但该请求并不总是由 iOS 执行,而是 iOS 提供缓存副本。
如果我是对的,请告诉我如何解决这个问题。是否需要手动删除缓存?
我正在使用 Alamofire 和 Xcode 6.4
更新:
在我看来,向 AppDelegate 添加以下两行解决了这个问题。
let sharedCache:NSURLCache = NSURLCache(memoryCapacity: 0, diskCapacity: 0, diskPath: nil)
NSURLCache.setSharedURLCache(sharedCache)
Alamofire 在后台使用 NSURLCache,因此您只需调用:
NSURLCache.sharedURLCache().removeAllCachedResponses()
更新 Swift 4.1
URLCache.shared.removeAllCachedResponses()
我正在开发社交网络应用程序,每次打开个人资料视图时,它都会从服务器下载用户的个人资料照片。我还没有实现任何缓存。但似乎 iOS 会自动执行此操作。
问题是有时当用户更新个人资料照片时,即使我可以看到该图像已成功上传到服务器,用户可能需要一段时间才能在其他设备上看到更新后的照片。我注意到,如果在更新个人资料照片后我重新安装应用程序,它将立即获得最新图像。所以我唯一的假设是,即使我的应用程序每次打开配置文件视图时都会发送从服务器下载图像的请求,但该请求并不总是由 iOS 执行,而是 iOS 提供缓存副本。
如果我是对的,请告诉我如何解决这个问题。是否需要手动删除缓存?
我正在使用 Alamofire 和 Xcode 6.4
更新: 在我看来,向 AppDelegate 添加以下两行解决了这个问题。
let sharedCache:NSURLCache = NSURLCache(memoryCapacity: 0, diskCapacity: 0, diskPath: nil)
NSURLCache.setSharedURLCache(sharedCache)
Alamofire 在后台使用 NSURLCache,因此您只需调用:
NSURLCache.sharedURLCache().removeAllCachedResponses()
更新 Swift 4.1
URLCache.shared.removeAllCachedResponses()