HTTP/2有哪些值得期待的特性

jopen 10年前發布 | 7K 次閱讀 HTTP

英文原文:What to Expect From HTTP/2

  隨著 HTTP/2 工作組的工作接近尾聲以及新標準的實現開始出現,工作組主席 Mark Nottingham 寫了一篇博客對新協議中 9 件值得期待的事情發表了看法:

  1. 使用與 HTTP 相同的 API。就像 Mark 提到的:“要想讓 HTTP/2 成功,就必須讓它能在現有的 Web 中正常工作。因此我們所做的努力是讓現有的 HTTP 更好地工作,而不是去改變這個協議。”盡管也許有機制能讓你優化一些新功能,但一般情況下不會有新的方法、header 和狀態碼。
  2. 更廉價的請求。“HTTP/2 使用多路技術,允許多個消息在一個連接上同時交差,因此一個大的響應(或者一個需要消耗服務器很長時間的響應)并不會阻止其它的響應。此外,它增加了頭壓縮(header compression),因此即使非常小的請求,其請求和響應的 header 都只會占用很小比例的帶寬。這對于移動平臺來說,是非常重要的。因為太大的請求 header,再加上頁面所需的大量資源經過幾個來回后,很可能導致頁面加載失敗。”
  3. 新協議對網絡和服務提供了更友好的設計。“HTTP/2 將使用更少的連接,因此服務器和網絡的負載都將減少。這對于越來越擁擠的網絡來說具有非常重要的意義。HTTP/1 采用多連接的方式實現并行數據傳輸,加劇了網絡擁擠的問題。”HTTP/2 對每臺主機只需一個單獨連接,而且只要可能,應盡量將多個網站合并到一臺主機上。
  4. HTTP/2 引入了“服務端推(server push)”的概念,它允許服務端在客戶端需要數據之前就主動地將數據發送到客戶端緩存中,從而提高性能。當然,在某些場景下,客戶端可能并不希望這么做,因此 HTTP/2 也允許客戶端拒絕。
  5. 當客戶端(瀏覽器)改變主意,不再需要某個請求的響應時,HTTP/1 的客戶端只能關閉連接,而新協議則提供了更好的解決辦法。“HTTP/2 增加了 RST_STREAM frame,允許客戶端改變主意。當瀏覽器進行頁面跳轉或者用戶取消下載時,它可以防止建立新連接,避免浪費所有帶寬。”
  6. HTTP/2 提供更多的加密支持,Mark 早前的文章說明了其優缺點。
  7. 如果你喜歡那些可以監聽和人工解析 HTTP 請求和響應的功能,例如使用 telnet 連接服務器,那么你要做好這些功能不再可用的準備。HTTP/1 是基于文本的協議而 HTTP/2 是基于二進制的。“盡管二進制協議的解析具有更小的開銷,以及更小的網絡消耗,但這個巨大變化的真正原因是二進制協議更簡單,因此更少錯誤,這是它的優 點。”Mark 就此進行了討論,結果表明確實如此。例如,如何界定文本,HTTP/1 的嚴重缺陷之一是脆弱的安全性。“HTTP/1 的文本特性也導致了一些安全問題。因為不同的實現對于如何解析一條消息有著不同的決定,因此惡意團體能夠以某種的方式入侵(例如,通過 response splitting attack)”
  8. 別期望 HTTP/2 能夠奇跡般地提升服務端或客戶端的性能。“關于新協議,更準確的看法是,它清除了一些制約性能的重要障礙。只有當客戶端和服務端都學會了如何以及何時使用 它的先進特性,性能才會開始逐漸提升。”正如 Mark 指出的,當今絕大部分網站是基于 HTTP/1 開發的,都不可避免地受其限制。只有經過時間推移,當它們經過重新配置后,才能發揮 HTTP2 所提供的先進特性。“此外,HTTP/2 的網絡友好特性的缺點是可能導致 TCP 擁塞控制變得更加突出。因為瀏覽器對每臺主機只建立一個連接,初始窗口和丟包將會更加明顯。”
  9. HTTP/2 并不是發展的終點,團隊已經在考慮后續的發展。“現在人們非常期待 HTTP/2 正式發布,因此一些高級(和實驗性)的特性并沒有加入到此版本中。例如推送 TLS 認證和 DNS 條目到客戶端,兩者都能夠提升性能。如果實驗順利的話,也許 HTTP/3 會包含這些。當然,HTTP/3 也可能是個解決所有目前未發現的問題的版本。但到目前為止,信心正在不斷地增長。無論是社區發布的 SPDY 的體驗,還是 HTTP/2 的各種實現都表明 HTTP/2 已經接近完成了。”
  10. </ol>

      以上這些就是 Mark 對于即將到來的 HTTP/2 的精彩和準確的概覽。你覺得這些功能怎么樣?哪些會讓你有些擔心?當它成為主流,你開始使用時,哪些又會讓你覺得很興奮?

    來自: InfoQ
                        <span id="shareA4" class="fl">                          </span>
     本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
     轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
     本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!