讓你的網(wǎng)站升級到HTTP/2

相比前端界、APP開發(fā)中各種新事物層出不窮,服務(wù)端的新標(biāo)準(zhǔn)和新技術(shù)相對而言關(guān)注的人就少多了,這些標(biāo)準(zhǔn)、技術(shù)是互聯(lián)網(wǎng)的基石,可是跟消費者、用戶有點距離,什么毫秒級別100%的乃至500%的性能提升,多少KB字節(jié)的優(yōu)化balabala對于用戶來說也是沒有多大感受,某種程度上,覺得倒蠻心疼的,吃水的不會記得挖井的人,吃好水的人記不住保護環(huán)境的人,最后記住的都是飲水機的代言人。

今年早些時候,Nginx 曾發(fā)布過一個 early-alpha patch 來提供對 HTTP/2 的支持,但從最新發(fā)布的 Nginx 1.9.5 開始,http_v2_module 已經(jīng)替換了 ngx_http_spdy_module 并正式開始提供全面的 HTTP/2 支持。

前段時間在看《HTTP權(quán)威指南》,想著就再折騰一下吧。

HTTP/2今年也算是一個熱點,幾經(jīng)扭轉(zhuǎn),終于在今年5月定稿發(fā)布了。

谷娘同他的親兒子Chrome早早地就在推SPDY,世界上幾個最大的網(wǎng)站Facebook、雅虎、Twitter、Youtube也都早早地部署了SPDY協(xié)議。今年二月,在HTTP/2.0集成了SPDY并進入標(biāo)準(zhǔn)化的最后階段時,Google宣布不再開發(fā)SPDY。

然,SPDY這個小妾某種程度上可以理解已經(jīng)被休了,或者換個角度,SPDY正式當(dāng)上了正房大夫人。

對于SPDY和HTTP/2的詳細(xì)就不再啰嗦,強烈推薦一下360前端工程師@屈光宇的系列文章:

挺欣賞@屈光宇前輩的,對HTTP和Web性能的研究十分深入,他的博客就是集Web優(yōu)化大成者。

下面說下如何升級到HTTP/2,目前nginx 1.9.5已經(jīng)實驗性地支持HTTP/2了。

SSL部署

對于從無到有的問題就不再這里再多廢文墨,請大家自行谷歌SSL部署HTTPS等關(guān)鍵字即可。

CentOS / Red Hat 升級HTTP/2

首先升級nginx版本,確保使用的是主源(包含了最新實驗發(fā)行版)。

修改/etc/yum.repos.d/nginx.repo的nginx倉庫地址

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

如果還沒有安裝nginx,直接執(zhí)行yum install nginx,如果已經(jīng)安裝了,則可以通過yum clean all && yum update nginx升級。

Ubuntu / Debian 升級HTTP/2

同理,首先修改apt倉庫源/etc/apt/source.list的地址,增加下面兩行倉庫。

deb http://nginx.org/packages/mainline/debian/ codename nginx
deb-src http://nginx.org/packages/mainline/debian/ codename nginx

接下來執(zhí)行apt-get clean && apt-get install nginx即可。

驗證Nginx版本

下面確認(rèn)我們機器上的Nginx已經(jīng)升級到至少1.9.5版本。

$ nginx -v
nginx version: nginx/1.9.5

Nginx啟動HTTP/2

開啟HTTP/2也十分簡單,直接在指定的域名nginx.conf中配置。


server {
  listen        443 ssl http2; 
  server_name   luolei.org;

  #SSL配置
  ssl                   on;
  ssl_certificate       /etc/nginx/conf.d/certificate.crt;
  ssl_certificate_key   /etc/nginx/conf.d/certificate.key;

}

listen后面增加http2即可。

  • 注意:不能混用SPDY和HTTP/2,如果你兩個都同時開啟,會報錯。
nginx: [warn] invalid parameter "spdy": ngx_http_spdy_module was superseded by ngx_http_v2_module in /etc/nginx/conf.d/vhost.conf:12

重啟Nginx

service nginx restart重啟nginx。

這個時候回到你的瀏覽器,打開開發(fā)者工具,進入網(wǎng)絡(luò)Network,打開Protocol

刷新一下你的網(wǎng)頁,主域的Protocol已經(jīng)變了成了h2,這就意味著已經(jīng)成功升級到HTTP/2。

或者使用Chrome的網(wǎng)絡(luò)工具,在地址欄中輸入chrome://net-internals/#http2

這個時候,應(yīng)該也能看到你網(wǎng)站的請求信息,Protocol Negotiated一欄也已經(jīng)變成了h2

性能差異

對于HTTPS、SPDY和HTTP/2性能的比較,推薦可以參考:

后言

Web性能優(yōu)化這塊對于前端開發(fā)者而言,也是很值得深入研究的,雅虎14條什么的是個人都會背,不要僅僅局限在紙上談兵,自己動手實踐一遍。

下面,問題來了:

從輸入URL 到頁面加載完成發(fā)生了什么事?

這是一個很好的問題,每一步,每一個節(jié)點,都能從不同的角度發(fā)現(xiàn)很多好玩的東西。

如果你是一名前端開發(fā)者,你會怎么回答這個問題呢,每一步都能做到哪些優(yōu)化呢?

嗯哼,看書去了。(?`⊿′)?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載于:http://mrpeak.cn/blog/http2/ HTTP 2.0的那些事 在我們所處的互聯(lián)網(wǎng)世界...
    柒黍閱讀 2,465評論 0 8
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,351評論 25 708
  • 第一章 Nginx簡介 Nginx是什么 沒有聽過Nginx?那么一定聽過它的“同行”Apache吧!Ngi...
    JokerW閱讀 33,040評論 24 1,002
  • 本文轉(zhuǎn)載自:眾成翻譯譯者:為之漫筆鏈接:http://www.zcfy.cc/article/22原文:https...
    極樂君閱讀 773評論 0 10
  • 我喜歡詩,我總想把日子過成詩的模樣,可奈生活讓我濕了一片。 最近一段時間以來,我把自己關(guān)在小房間里...
    衘觴賦詩閱讀 301評論 1 1

友情鏈接更多精彩內(nèi)容