2014-10-06 76 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