2016-12-05 91 views

回答

2

两种简单的方式浮现在脑海中:

  • 呼叫[[NSURLCache sharedURLCache] cachedResponseForRequest:request]您做出请求之前,存储缓存响应,然后做你完成接收数据后,再次和比较这两个缓存响应,看看他们是相同的。
  • 使用NSURLRequestReturnCacheDataDontLoad缓存策略发起初始请求,如果失败,请使用更合理的策略发出第二个请求。

第一种方法通常比较可取,因为第二种方法将返回缓存中存在的数据,即使它是陈旧的。但是,在极少数情况下(例如离线模式),这可能就是您想要的,这就是我提到它的原因。

+0

我如何比较两个cachedResponse? –

0

使用request.cachePolicy = NSURLRequestReloadIgnoringCacheData代替。 NSURLRequestUseProtocolCachePolicy是默认策略。基本上,这意味着缓存行为在NSURLProtocol实现或从NSURLSessionConfiguration缓存策略中定义。

+0

但我需要确定响应是否来自缓存或不 –

+0

这种方式可以保证,该响应不是来自缓存。 有其他几种方法: – dosi

+0

但我也想缓存响应...只需要知道数据是否缓存 –

0

如果您的信息需求只是出于好奇,您可以查看您的网络使用情况Xcode运行时网络metics。将策略更改为不同的设置并观察其差异。

相关问题