原文:https://www.clarencep.com/2016/11/17/upgrade-nginx-to-support-http2/nginx
這兩天把公司的網站升級到了全站https. 順便瞄到了HTTP2的瀏覽器支持狀況:chrome
支持得還都蠻好的嘛。忍不住試用了一把HTTP2 – 就直接拿本博客來作示例了。瀏覽器
主流瀏覽器基本上都支持了HTTP2,可是nginx只有升級到1.10以上版本才行 – 鄙站以前用的仍是nginx 1.6的某個版本。網絡
更新了下apt-get,發現倉庫中沒有1.10版本 – 囧 – 只好本身編譯吧:工具
首先,下載nginx和openssl:性能
1 |
cd /usr/local/src |
而後,編譯nginx:測試
1 |
|
接着,就是移植老的配置了,老的配置均可以直接使用,直接拷貝過來便可。
最後,啓用HTTP2 – 目前HTTP2只能和ssl(https)一塊兒使用,只要修改下listen語句便可:優化
1 |
# 老的配置: |
別忘了重啓nginx (sudo nginx -s reload
).網站
搞定nginx後,隨手拿個chrome就可使用HTTP2了 – chrome 49及以上版本都支持HTTP2,還好chrome會自動升級,基本不用擔憂chrome太老。ui
打開F12查看下HTTP頭部,果真Request Headers都不同了:
這些:authority
, :method
和 :path
等冒號打頭的就是HTTP2的特徵之一 – 手邊沒有抓包工具,只能這樣粗淺的判斷了。
看看HTTP2的流水:
再比比HTTP1.1的流水:
HTTP2的流水簡潔多了,有沒有!
HTTP2的性能通常應該比HTTP1.1的高一些,可是,可不必定喲:
上圖是本博客首頁在相同nginx、相同PC、相同網絡條件下對HTTP2和HTTP1.1分別測試的PK結果。 可見雖然HTTP2的網絡加載時間(Load)比HTTP1.1要短,可是DOM渲染時間(DOMContentLoaded)卻比HTTP1.1要長。。。
多是因爲本博沒有專門爲HTTP2優化所至。也多是瀏覽器渲染沒有爲HTTP2優化的緣故。
最後總結一句:HTTP2入坑要謹慎。