和 Pipelining 說再見,cURL 放棄使用管道技術
近日,cURL 作者 Daniel Stenberg 在其部落格 釋出公告表示 , 從這個釋出到 cURL 7.65.0 的提交開始 ,cURL 將刪除全部支援 HTTP/1.1 Pipelining 技術的程式碼。事實上,早在 7.62.0 版本中,該特性就已在程式碼中被禁用,因此保持使用最新版本應用的開發者應該不會注意到差異。
Daniel 表示,cURL 在支援 HTTP/1.1 Pipelining 的很長一段時間內,由於一系列已知的錯誤和缺乏足夠的測試,其實這是一個脆弱的功能。此外,由於對時間非常敏感,對 pipelining 的除錯相當棘手,經常需要啟用除錯輸出或類似功能會完全改變性質的行為,影響十分大。
預設情況下,大型桌面瀏覽器從未啟用 HTTP pipelining,因為它存在很多問題,例如伺服器實現中斷等。而且很長一段時間以來,Firefox 和 Chrome 都完全放棄了對管道技術的支援。隨著時間的推移,cURL 在對管道方面技術的支援變得越來越孤獨。
也正是 HTTP pipelining 的糟糕現狀,這成了 HTTP/2 及其多路複用功能背後的主要驅動因素。 HTTP/2 多路複用是真正的 “pipelining done right”。與 HTTP/1.1 Pipelining 相比,它更加穩定和實用,並能以更好的方式解決用例,具有更好的效能和更少的缺點和問題。( 自 7.62.0 起,cURL 預設啟用多路複用 )
所以 Daniel 認為, 在 2019 年更應放棄管道技術,轉而使用 HTTP/2 來替代它。