NSMutableURLRequest конвейерная путаница
Я хочу загрузить много изображений с одного и того же HTTP-сервера, поэтому я хочу сделать все это на одном и том же TCP-соединении. Все, что я могу найти, это то, что NSMutableURLRequest
позволяет мне включить конвейерную обработку (HTTPShouldUsePipelining
), но я не понимаю, как он знает, какие запросы отправлять вместе, когда я включаю конвейерную обработку.
Я попробовал это, и согласно Wireshark, эти два запроса и ответы находятся в отдельных потоках TCP, поэтому не похоже, что это на самом деле конвейерная обработка запросов:
var request0 = NSMutableURLRequest(URL: NSURL(string: "http://strabo.com/gallery/albums/wallpaper/foo_wallpaper.sized.jpg")!)
var request1 = NSMutableURLRequest(URL: NSURL(string: "http://strabo.com/gallery/albums/wallpaper/foo_wallpaper.sized.jpg")!)
request0.HTTPShouldUsePipelining = true
request1.HTTPShouldUsePipelining = true
var queue = NSOperationQueue()
NSURLConnection.sendAsynchronousRequest(request0, queue: queue) { (response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in
println("response0")
}
NSURLConnection.sendAsynchronousRequest(request1, queue: queue) { (response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in
println("response1")
}
Я также попробовал на своем локальном сервере Nginx на тот случай, если Strabo.com не поддерживает конвейерную обработку.
Также, SDWebImageDownloader
как-то использует HTTP-конвейеризацию, я заметил. Я вижу, что несколько запросов отправляются в одном потоке TCP. Однако он не отправляет их все в один поток, и я хочу это сделать, поэтому я пытался реализовать собственный загрузчик.