如何使特定URL的iOS缓存无效?

使用NSURLSession的默认缓存,如何使特定URL的缓存无效?

我注意到了NSURLCache的removeCachedResponseForRequest:方法,但它接受了一个NSURLRequest对象,我没有原始请求.我是否需要在创建它们时存储它们,以便我可以将它们传递回removeCachedResponseForRequest:或者我可以创建一个具有相应URL的新URL,即使它没有相应的目的也是如此.相同的标题字段和原始的其他属性?

如果您想要更进一步,可以重置要强制重新加载的URL请求的缓存响应.执行以下操作:

let newResponse = NSHTTPURLResponse(URL: urlrequest.URL!, statusCode: 200, HTTPVersion: "1.1", headerFields: ["Cache-Control":"max-age=0"])
let cachedResponse = NSCachedURLResponse(response: newResponse!, data: NSData())
NSURLCache.sharedURLCache().storeCachedResponse(cachedResponse, forRequest: urlrequest)

由于响应的缓存控制头hax的最大年龄为0(强制),因此执行此请求时将永远不会返回响应.

您的答案适用于强制单个请求,但如果您希望有两个版本的请求,一个强制,另一个依赖于缓存的响应,则需要在强制请求后删除缓存的响应.

本站公众号
   欢迎关注本站公众号,获取更多程序园信息
开发小院