相比前端界、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)化呢?
嗯哼,看書去了。(?`⊿′)?