2016-12-05 28 views

回答

2

兩種簡單的方式浮現在腦海中:

  • 呼叫[[NSURLCache sharedURLCache] cachedResponseForRequest:request]您做出請求之前,存儲緩存響應,然後做你完成接收數據後,再次和比較這兩個緩存響應,看看他們是相同的。
  • 使用NSURLRequestReturnCacheDataDontLoad緩存策略發起初始請求,如果失敗,請使用更合理的策略發出第二個請求。

第一種方法通常比較可取,因爲第二種方法將返回緩存中存在的數據,即使它是陳舊的。但是,在極少數情況下(例如離線模式),這可能就是您想要的,這就是我提到它的原因。

+0

我如何比較兩個cachedResponse? –

0

使用request.cachePolicy = NSURLRequestReloadIgnoringCacheData代替。 NSURLRequestUseProtocolCachePolicy是默認策略。基本上,這意味着緩存行爲在NSURLProtocol實現或從NSURLSessionConfiguration緩存策略中定義。

+0

但我需要確定響應是否來自緩存或不 –

+0

這種方式可以保證,該響應不是來自緩存。 有其他幾種方法: – dosi

+0

但我也想緩存響應...只需要知道數據是否緩存 –

0

如果您的信息需求只是出於好奇,您可以查看您的網絡使用情況Xcode運行時網絡metics。將策略更改爲不同的設置並觀察其差異。

相關問題