NSMutableURLRequest管道混淆

时间:2015-06-09 00:47:34

标签: nsmutableurlrequest http-pipelining

我想从同一个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流中发送了多个请求。但是,它并没有在同一个流上发送所有这些内容,我想这样做,所以我一直在尝试实现自定义下载程序。

0 个答案:

没有答案