我如何使iOS的caching无效的特定url?

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

我注意到NSURLCacheremoveCachedResponseForRequest:方法,但是这需要一个NSURLRequest对象,我没有原始请求。 我是否需要在创build它们时存储这些内容,以便将它们传回到removeCachedResponseForRequest:或者,我可以使用相应的URL创build一个新的URL,然后将其作为等效目的,即使它没有与原始相同的头域和其他属性?

如果你想进一步,你可以重置你想强制重载的url请求的caching响应。 执行以下操作:

 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) 

作为响应的caching控制头部,最大时间为0(强制),当您执行此请求时,永远不会返回响应。

您的答案适用于强制一个请求,但如果您想要两个版本的请求一个强制和另一个依靠caching的响应,一旦您强制请求删除caching的请求是需要的。

该解决scheme不是使现有URL的caching无效,而是设置:

request.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData;

当您对资源发出下一个请求时,您知道这是无效的。 有些选项只能忽略本地caching,或者要求上游代理忽略它们的caching。 有关详细信息,请参阅NSURLRequest / NSMutableURLRequest文档。

以下是一直在为我工作的东西:

 request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringCacheData 

以下是关于chache政策的所有选项,所以您可能会find一个更适合您需求的选项:

在这里输入图像说明

使用Swift 2.2和Xcode 7.3