2010-04-19 41 views
7

使用HTTP/1.1時管道傳輸標準對於發出多個請求而不等待每個請求完成的說明是什麼?服務器在實踐中做了什麼?使用HTTP/1.1管道發出多個請求

我問,因爲我曾經試圖寫一個客戶端,將發出一批GET請求多個文件,並記得得到錯誤。我不知道這是否是由於我錯誤地發行了GET或者需要等待每個單獨的請求完成才發佈下一個GET

回答

7

流水線就是這樣 - 在單個連接上有多個請求「正在運行」。

在開放的互聯網上,流水線並不是很常見,因爲服務器和中間服務器不能很好地實現,而且流水線混亂的後果可能很嚴重(例如,將響應混合到兩個不同的用戶)。

請記住,只有HTTP/1.1支持流水線;如果你有一個HTTP/1.0服務器,或者中間有一個1.0代理服務器,它可能不起作用。

此外,流水線只能用於「冪等」方法,如GET和HEAD;它不允許POST等

參見: http://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging-09#section-7.1.2.2

+0

@馬克諾丁漢:這是自己感興趣的,所以持久連接不被認爲是流水線 - 多個請求的唯一發行批次被認爲是流水線? – 2010-05-01 23:39:50

+0

是的。持久連接可以在HTTP/10中使用,連接:Keep-Alive(儘管這裏存在一些小的互操作問題)。 – 2010-05-02 09:05:13