相比前端界洒试、APP開發(fā)中各種新事物層出不窮,服務(wù)端的新標準和新技術(shù)相對而言關(guā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并進入標準化的最后階段時甥雕,Google宣布不再開發(fā)SPDY踩身。
然,SPDY這個小妾某種程度上可以理解已經(jīng)被休了犀农,或者換個角度惰赋,SPDY正式當上了正房大夫人。
對于SPDY和HTTP/2的詳細就不再啰嗦呵哨,強烈推薦一下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版本
下面確認我們機器上的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)化呢卖哎?
嗯哼碌补,看書去了。(?`⊿′)?