2014-10-06 73 views
0

我有一個iOS應用程序每秒使用NSURLRequest發送數百個HTTP請求。它總是通過WiFi等等性能優良,內容是每個響應不同的,所以我通過NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData已經禁用緩存:停止NSURLRequest寫入緩存

let request = NSURLRequest(URL: requestURL, 
     cachePolicy: .ReloadIgnoringLocalCacheData, timeoutInterval: 0.1) 

然而,NSURLRequest仍然將數據寫入磁盤 - 百兆在短短的一會兒。

這是特別關注的,因爲我的應用程序是用於數據監控,可能會一次運行幾個小時 - 而NSURLRequest每秒鐘向磁盤寫入數百次......我擔心閃存可能會磨損在這種情況下,即使我認爲它已經損耗平衡。

如何阻止NSURLRequest將緩存數據寫入磁盤?

回答

1

NSURLRequest的緩存策略僅控制是否以及如何讀取緩存,而不是是否寫入下載的數據。

如果您使用NSURLRequestNSURLSession,請在委託中實施 URLSession(_:dataTask:willCacheResponse:completionHandler:)方法,然後使用nil參數調用completionHandler。

如果您使用的是NSURLConnection,則可以使用類似的代理呼叫;詳情請參閱this question

+0

謝謝。這需要將一行代碼更改爲大約40行代碼 - 如果您有委託,則基於塊的API發送請求無法使用,並且委託API需要執行諸如創建NSMutableData對象之類的內容並逐漸附加到它,直到您得到一個完成的消息。似乎應該有一個更簡單的方法。 : - / – 2014-10-06 21:18:28