Rob*_*ins 6 caching nsurlcache ios nsurlsession
使用NSURLSession默认缓存,如何使特定URL的缓存无效?
我注意到NSURLCache的removeCachedResponseForRequest:方法,但这需要一个NSURLRequest对象,我没有原始请求.我是否需要在创建它们时存储它们,以便我可以将它们传回,removeCachedResponseForRequest:或者我可以创建一个具有相应URL的新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)
Run Code Online (Sandbox Code Playgroud)
由于响应的缓存控制头hax的最大年龄为0(强制),因此执行此请求时将永远不会返回响应.
您的答案适用于强制单个请求,但如果您希望有两个版本的请求,一个强制,另一个依赖于缓存的响应,则需要在强制请求后删除缓存的响应.
解决方案不是使现有 URL 的缓存失效,而是设置:
request.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
当您对您知道无效的资源发出下一个请求时。有一些选项可以仅忽略本地缓存,或者请求上游代理也忽略其缓存。有关详细信息,请参阅NSURLRequest / NSMutableURLRequest文档。
| 归档时间: |
|
| 查看次数: |
5521 次 |
| 最近记录: |