【问题标题】:Refresh cached image in AlamofireImage?刷新 AlamofireImage 中的缓存图像?
【发布时间】:2018-02-14 14:00:28
【问题描述】:

如果图像在服务器上更新,是否可以自动删除缓存的图像并下载更新的图像?我已经尝试过 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)
    }
}

手动更新也不是很好,因为如果我不知道图像是否在服务器上更新,我就必须完全忘记图像缓存。

【问题讨论】:

标签: ios swift caching alamofire image-caching


【解决方案1】:

当服务器上的内容发生更改时,似乎没有可用的 pod 能够刷新缓存的图像或任何其他缓存的内容。由于 Content-Control 技术,这在技术上是可行的,但苹果似乎没有提供这种可能性https://developer.apple.com/documentation/foundation/nsurlrequest.cachepolicy/1414422-reloadrevalidatingcachedata

reloadRevalidatingCacheData 指定现有的缓存数据可以 如果原始来源确认其有效性,则可以使用,否则 URL 是从原始源加载的。 此常量未实现,不应使用。

您最好的做法是要求服务器开发人员为任何会更改的图像(头像、背景、图标等)生成唯一的 URL 地址,或者如果服务器开发人员不可用,您应该在有这样的问题,随便下载。

在任何情况下,您都可以使用我的 gist 下载缓存和未缓存的图像https://gist.github.com/sam-moshenko/562ec61431c4a0ebeb68899b4d1b4d26(只是不要忘记安装pod 'AlamofireImage'

【讨论】:

猜你喜欢
  • 2016-08-10
  • 2017-09-18
  • 2016-09-30
  • 2012-08-02
  • 2016-09-28
  • 2017-02-11
  • 1970-01-01
  • 1970-01-01
  • 2017-05-31
相关资源
最近更新 更多