刷新AlamofireImage中的缓存图像?

时间:2017-09-06 07:19:06

标签: ios swift caching alamofire image-caching

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

手动更新也不太好,因为如果我不知道服务器上是否更新了图像,我根本不会忘记图像缓存。

1 个答案:

答案 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'