HTTP管線化

维基百科,自由的百科全书
跳转至: 导航搜索
Schema of non-pipelined vs. pipelined connection.

HTTP管線化 是將多個HTTP要求(request)整批送出的技術,而在傳送過程中不需先等待伺服端的回應。

請求結果管線化使得 HTML 網頁載入時間動態提升,特別是在具體有高延遲的連接環境下,如衛星上網。在寬帶連接中,加速不是那麼顯然的,因為需要服務器端應用 HTTP/1.1 協議:服務器端必須按照客戶端的請求順序恢復請求,這樣整個連接還是先進先出的,對頭阻塞(HOL blocking)可能會發生,造成延迟。未來的 HTTP/2.0 或者SPDY中的異步操作將會解決這個問題。因為它可能將多個 HTTP 請求填充在一個TCP數據包內,HTTP 管線化需要在網絡上傳輸較少的 TCP 數據包,減少了網絡負載。

管線化機制須透過永久連線(persistent connection)完成,並且只有 GET 和 HEAD 等要求可以進行管線化,非幂等的方法,例如POST将不会被管线化。连续的 GET 和 HEAD 请求总可以管线化的。一个连续的幂等请求,如 GET,HEAD,PUT,DELETE,是否可以被管线化取决于一连串请求是否依赖于其他的。此外,初次建立連線時也不應啟動管線機制,因為對方(伺服器)不一定支援 HTTP/1.1 版本的協定。

HTTP 管线化同时依赖于客户端和服务器的支持。遵守 HTTP/1.1 的服务器支持管线化。这并不是意味着服务器需要提供管线化的回复,而只是要求在收到管线化的请求时候不会失败。

實作[编辑]

實作在網頁伺服器[编辑]

實作在瀏覽器[编辑]