HTTP/2 資料匯總

jopen 9年前發布 | 18K 次閱讀 HTTP Web服務器

隨著今年 5 月 14 日 HTTP/2 協議正式版的發布,越來越多的網站開始部署 HTTP/2 了。我對 HTTP 協議一直都比較有興趣,本文匯總一些關于 HTTP/2 的資料以及我寫過的文章,會持續更新。如果大家有任何問題,歡迎留言交流探討。

協議

HTTP/2 協議由以下兩個 RFC 組成:

網上有一份由百度 FEX 翻譯的「h2-13 中文版」,更新于一年前,也可以看看。h2-13 說明這是協議的第 13 版草案,HTTP/2 一共經歷了 00~17 共 18 版草案才正式發布。

很多支持 HTTP/2 的 Web 服務器和客戶端,都會標注出自己支持的具體版本,例如 h2、h2-14,分別表示自己支持正式版、第 14 版草案。有時候還會看到某個軟件寫著支持 h2c,這是指它支持運行于非加密通道之上的 HTTP/2(HTTP/2 Cleartext)。

HTTP/2 協議是從 SPDY 演變而來,SPDY 已經完成了使命并很快就會退出歷史舞臺(例如 Chrome 將在「2016 年初結束對 SPDY 的支持」;Nginx 在今年年底正式支持 HTTP/2 后,也不再支持 SPDY),故本文不再討論 SPDY。

在「HTTP/2 官網」可以找到更多有關 HTTP/2 協議的資料。

部署

根據 caniuse 的統計,目前支持 HTTP/2 的瀏覽器有 Chrome 41+、Firefox 36+、Safari 9+、Windows 10 上的 IE 11 和 Edge。服務器方面則有 F5、H2O、nghttp2 等數十種選擇,各種語言實現的都有。Nginx 則相對謹慎一些,在「本月初才提供對 HTTP/2 的實驗性支持」,年底才會正式支持。這里有一份「HTTP/2 服務器及客戶端」的完整清單。

Akamai 這個頁面」提供了 HTTP/1 和 HTTP/2 的對比,大家可以用自己的瀏覽器測試一下。

HTTP/2 協議本身并沒有要求必須基于 TLS 部署,但是 Chrome 和 Firefox 這兩大瀏覽器均表示只支持 HTTP/2 Over TLS。這樣做一方面更安全,另一方面利用 TLS 的加密機制可以更好地穿透網絡中間節點。

所以如果要部署 HTTP/2,首先需要將網站升級為 HTTPS。這個過程涉及到購買證書、生成證書和配置 Web 服務器等幾個步驟,網上很多教程,這里略過。有兩點需要注意:1)選擇層級少的證書(點擊 Chrome 地址欄的綠色小鎖,查看證書信息就可以看到層級);2)一定不要使用 SHA1 算法的證書。

本博客先后使用過 H2ONginx 這兩個服務器提供 HTTP/2 服務,下面是具體的介紹:

優化

將網站升級為 HTTPS 之后,多了 TLS 握手過程,如果沒有做好優化肯定會比之前更慢。下面兩篇對 Nginx 的配置心得,是我在本博客實踐之后寫的,可以先看看:

HTTP/2 究竟會給 WPO(Web Performance Optimization)帶來什么,我也寫了一系列文章來介紹:

在 Velocity 2015 ? SC 會議上,來自 Google 的 Ilya Grigorik 分享了「HTTP/2 is here, let's optimize! - Yesterday's perf best-practices are today's HTTP/2 anti-patterns」話題,重點講述 HTTP/2 與 HTTP/1 關于 WPO 的相同和不同之處,值得推薦。

目前我沒有找到只針對 HTTP/2 的性能測試工具,下面在線工具的結果可以作為參考:

調試

不同于 HTTP/1 的文本格式報文,HTTP/2 傳輸的都是二進制幀,調試起來要麻煩一些。

首先,要辨別某個網站是否啟用了 HTTP/2,可以通過瀏覽器開發工具的「網絡」面板中的 Protocol 字段查看。也可以通過擴展在瀏覽器地址欄顯示當前的協議類型,HTTP/2 指示器擴展:Chrome 版Firefox 版

在 Chrome 地址欄輸入chrome://net-internals/#http2,打開 Chrome 自帶的 HTTP/2 查看工具,可以很方便地查看 HTTP/2 幀信息。

新版 Wireshark(dev 1.99)也可以調試 HTTP/2,詳細介紹請查看「官網 Wiki」和這篇文章:HTTP2 traffic in Wireshark

書籍

以下書籍都有可供免費閱讀的電子版:

本文鏈接:https://imququ.com/post/http2-resource.html

--EOF--

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