先進的HTTP2.0
我們上網(wǎng)言疗,2016年之前基本用的都是HTTP 1.1協(xié)議晴圾。漸漸的,瀏覽一個頁面時需要加載的數(shù)據(jù)越來越多噪奄,圖片死姚、樣式表、視頻勤篮、js腳本都毒,幾十上百都很平常,于是頁面加載速度越來越慢——HTTP 1.1本質(zhì)上還是90年代的方案碰缔。
作為互聯(lián)網(wǎng)流量大戶的Google坐不住了账劲,秉承著You Can You Up的淳樸理念,他們推出了SPDY協(xié)議金抡,并利用自己掌握服務(wù)端流量——搜索引擎和客戶端瀏覽器Chrome的上下游優(yōu)勢瀑焦,開始部署。
在這一秒鐘幾十萬上下的時代梗肝,Amazon 的網(wǎng)頁載入時間每多一秒榛瓮,該公司的年度營收就減少 16 億美元、Google 的搜尋時間每多 0.4 秒巫击,每天的搜尋次數(shù)就會減少 8 百萬網(wǎng)頁禀晓、KISSmetric 分析報告指出等待時間超過 4 秒,Bounce Rate 就會增加 25%坝锰。人的思緒在等 1 秒後就開始飄移粹懒,如果需要等 10 秒,就會感覺這東西是不是壞了
-- from AlphaCamp
效果非常顯著什黑,節(jié)省了流量和服務(wù)器負載的開銷崎淳,看到甜頭之后堪夭,其他巨頭紛紛跟進愕把,一個更全面,面向新時代服務(wù)的HTTP2.0協(xié)議就出爐了森爽。
好處有:
多路復(fù)用
HTTP基于TCP恨豁,作為網(wǎng)絡(luò)傳輸?shù)幕琓CP的可靠性是很多場合棄用UDP的主要原因爬迟,然而可靠性需要犧牲速度橘蜜,任何一個連接發(fā)起都需要三次通訊握手,設(shè)想一下打開網(wǎng)易云音樂首頁傳輸上百個小文件是多么的酸爽。
HTTP2則只會建立一個TCP連接计福,所有的文件傳輸都走這條路跌捆,而且提供了優(yōu)先級比如樣式表和js先走,圖片視頻最后象颖。服務(wù)器節(jié)省了維護TCP連接的開銷佩厚,客戶端加載速度提高了,真是皆大歡喜说订。
默認開啟ssl
國內(nèi)的ISP如聯(lián)通抄瓦、電信、鐵通等等陶冷,基本都干過流量劫持的勾當(*通:我有KPI要考核钙姊,我要賺錢,我用自己的實力劫持流量9÷住)技術(shù)上很簡單煞额,就是在HTTP1的返回html里插入一段廣告代碼即可。
開啟SSL之后沾谜,流量劫持生意就不好做了立镶,估計有人恨得牙癢癢的,但沒辦法类早,落后生產(chǎn)力總會進垃圾堆的嘛媚媒!
壓縮Header
HTTP1里文件頭是不壓縮的,在現(xiàn)在各種服務(wù)端中間件都喜歡往文件頭里塞幾行信息涩僻,一個請求可能只有10 Bytes的json數(shù)據(jù)缭召,然而請求Header卻高達600 Bytes......
HTTP2使用HPACK算法壓縮之后,體積起碼縮小了2/3逆日。服務(wù)器和客戶端都節(jié)省了流量費用嵌巷,大善!
網(wǎng)站不能訪問室抽?
蘋果的safari瀏覽器從2015年底開始支持http2搪哪,無論是iPhone上還是mac上,在和服務(wù)器握手的時候發(fā)現(xiàn)對方支持HTTP2坪圾,就會采用HTTP2去請求資源晓折。
這本來是很好的做法,然而兽泄,昨天我常上的一個網(wǎng)站突然不能訪問了漓概,一看log:
全都是HTTP2的請求。然而改用chrome訪問又是正常的(Chrome:言下之意我沒有Safari先進病梢?)胃珍,突然想起,服務(wù)器端nginx里新增的http2是分開配置的,估計是網(wǎng)站管理員升級了webserver觅彰,默認打開了http2吩蔑,然而http2的目錄沒有指向?qū)嶋H工作目錄,于是就掛了填抬。
接受新生事物需要時間
在這種需要開源軟件開發(fā)者(nginx)哥纫,網(wǎng)站管理員,瀏覽器提供商痴奏,用戶反饋四方面達成一致的業(yè)務(wù)邏輯蛀骇,至少還要好幾年才能走上正軌。
其中主要的推動力量读拆,還是用戶反饋擅憔。只有不能正常上網(wǎng)的用戶多了,錯誤反饋才會被網(wǎng)站重視檐晕,才會有后續(xù)的升級或者配置更新暑诸。
然而瀏覽器提供商也不可或缺:只有不斷向用戶提供最先進的工具,才能推動用戶提高生產(chǎn)率辟灰。兼容IE6給業(yè)界造成的損失連始作俑者微軟都覺得不好意思个榕。
網(wǎng)管更是需要起碼的新事物敏感度,升級完了web server芥喇,起碼多找?guī)讉€客戶端測測吧西采?
作為開源軟件開發(fā)者,提供了新功能继控,默認打開械馆,是一種推廣的姿態(tài),犧牲的是對舊服務(wù)配置的兼容性武通,雖然這么做正確與否有待商榷霹崎,從推動歷史前進角度是值得肯定的。
“歷史是這樣創(chuàng)造的:最終的結(jié)果總是從許多單個的意志的相互沖突中產(chǎn)生出來的冶忱,而其中每一個意志尾菇,又是由于許多特殊的生活條件,才成為它成為的那樣囚枪。這樣就有無數(shù)互相交錯的力量派诬,有無數(shù)個力的平行四邊形,由此就產(chǎn)生出一個合力眶拉,即歷史結(jié)果千埃,而這個結(jié)果又可以看作一個作為整體的憔儿、不自覺地和不自主地起著作用的力量的產(chǎn)物忆植。因為任何一個人的愿望都會受到任何另一個人的妨礙,而最后出現(xiàn)的結(jié)果就是誰都沒有希望過的事物。所以到目前為止的歷史總是像一種自然過程一樣地進行朝刊,而且實質(zhì)上也是服從于同一運動規(guī)律的耀里。但是,各個人的意志——其中的每一個都希望得到他的體質(zhì)和外部的拾氓、歸根到底是經(jīng)濟的情況(或是他個人的冯挎、或是一般社會性的)使他向往的東西——雖然都達不到自己的愿望,而是融合為一個總的平均數(shù)咙鞍,一個總的合力房官,然而從這一事實中決不應(yīng)作出結(jié)論說,這些意志等于零续滋。相反地翰守,每個意志都對合力有所貢獻,因而是包括在這個合力里面的疲酌±澹”
——恩格斯