如果在服务器上更新了图像,是否可以自动删除缓存的图像并下载更新的图像?我尝试过AlamofireImage和STXImageCache,但他们都只下载了一次图像而不更新它。 我这样试试:
private let downloader = ImageDownloader()
func downloadImage(path: String?, completion: @escaping (UIImage?) -> ()) {
guard let path = path else { return }
let urlRequest = URLRequest(url: URL(string: path)!)
downloader.download(urlRequest) { response in
completion(response.result.value)
}
}
手动更新也不太好,因为如果我不知道服务器上是否更新了图像,我根本不会忘记图像缓存。
答案 0 :(得分:0)
在服务器上更改内容时,似乎没有任何可用的pod能够刷新缓存的图像或任何其他缓存的内容。由于内容控制技术,技术上是可行的,但苹果似乎没有提供这种可能性https://developer.apple.com/documentation/foundation/nsurlrequest.cachepolicy/1414422-reloadrevalidatingcachedata
<强> reloadRevalidatingCacheData 强> 指定现有缓存数据 如果原始来源确认其有效性,则使用,否则 URL是从源源加载的。 此常量未实现,不应使用。
您最好的举动是要求服务器开发人员为任何将要更改的图像(头像,背景,图标等)生成唯一的URL地址,或者如果服务器开发人员不可用,您应该在以下地方摆脱缓存有这样的问题,并使用随意下载。
在任何情况下,您都可以使用我的要点下载缓存但未缓存的图片https://gist.github.com/sam-moshenko/562ec61431c4a0ebeb68899b4d1b4d26(只是不要忘记安装pod 'AlamofireImage'
)