加勒比HEZYO黑人专区-久久精品国产99国产精品亚洲-精品国产18久久久久久-久久人妻少妇嫩草AV

歡迎光臨 織晶網(wǎng)絡(luò)官網(wǎng)!

  • 服務(wù)支持
  • 020-39182790
服務(wù)支持您現(xiàn)在的位置:首頁 > 服務(wù)支持

借助 HTTP/2 打造更迅捷的 Web 體驗(yàn)

作者:織晶客服部   發(fā)布于:2015/4/3 20:12:16  點(diǎn)擊量:  來源:www.codeceo.com

HTTP/2 的目標(biāo)

2015 年 2 月,互聯(lián)網(wǎng)工程任務(wù)組(IETF)批準(zhǔn)了 HTTP/2 標(biāo)準(zhǔn)提案,1999 年 HTTP/1.1 正式標(biāo)準(zhǔn)化 ,而 HTTP/2 是自那時以來的首個重大升級。HTTP/2 的主要目標(biāo)是與 HTTP/1.1 完全語義兼容的基礎(chǔ)上,進(jìn)一步減少網(wǎng)絡(luò)延遲。換句話說,HTTP/2 要在不破壞原有 Web 體系的基礎(chǔ)上使它變得更快。

SPDY 的起源


自 2009 年底以來,Google 一直在開發(fā)一個實(shí)驗(yàn)性的協(xié)議,這個神秘的協(xié)議名叫 SPDY(讀作 speedy)。SPDY 并不是一個首字母縮略詞,其實(shí),它是 Google 注冊的一個商標(biāo),HTTP/2 正是起源于這個 SPDY 實(shí)驗(yàn)。事實(shí)上,后來有許多曾經(jīng)參與 SPDY 項(xiàng)目的核心開發(fā)者同樣也加入到 HTTP/2 的開發(fā)中去。在 2015 年 2 月,Google正式宣布停止支持 SPDY 計劃,全力支持 HTTP/2 的開發(fā),預(yù)計在 2016 年前實(shí)現(xiàn)全部功能。


HTTP/1.1


自 1999 年以來,HTTP/1.1 默默地為我們服務(wù)了十幾年,它是在當(dāng)時那樣的計算機(jī)和網(wǎng)絡(luò)應(yīng)用場景下被設(shè)計出來的。我不說你也知道,HTTP 早就應(yīng)該升級了。為了便于描述 HTTP/1 是如何工作的,我在下面放了幾張圖解。根據(jù)序號的順序你就會看到,從客戶端開始(很可能是一個web瀏覽器)與右方的服務(wù)器建立一個 HTTP/1 的連接。


(2) 客戶端/瀏覽器隨后發(fā)送一個 GET 請求(HTTP 方法)獲取 index.html 頁面。 (3) 服務(wù)器響應(yīng)客戶端請求的資源。 (4-7) 在我們這個簡單的示例中,這個不斷進(jìn)行的 請求-響應(yīng)循環(huán)過程 持續(xù)地獲取樣式表和腳本來完善整個 HTML 文檔。 (8) 最終,這個 HTTP/1 連接斷開了。



線頭阻塞(Head-of-Line Blocking)


如你所見,客戶端/瀏覽器 花費(fèi)大量的時間等待每一個資源被響應(yīng)。因?yàn)?HTTP/1 不能在同一個連接上進(jìn)行并發(fā)請求,瀏覽器通常需要開啟多個連接來加速請求資源的過程。


代價高昂的連接


即使開啟多個連接能有效提高資源的加載速度,但是從計算機(jī)網(wǎng)絡(luò)的角度來看,開啟每一個連接的代價都很高。所以,現(xiàn)代瀏覽器通常都有最多 6-8 個 HTTP/1.1 連接的限制,許多網(wǎng)站現(xiàn)在需要加載 80多個或者更多的資源,這些連接限制逐漸成為了整個 Web 系統(tǒng)的性能瓶頸。


HTTP 管線化(HTTP Pipelining)


HTTP/1.1 嘗試?yán)靡粋名為 HTTP管線化的技術(shù)解決性能瓶頸問題,不幸的是,單一的大文件和過慢的響應(yīng)仍然會阻塞所有后續(xù)的請求。HTTP管線化 不難部署,但你基本上不太可能去部署它,現(xiàn)代瀏覽器幾乎都不怎么支持 HTTP 管線化的功能,因?yàn)樵S多媒介和服務(wù)器不能正確地處理它(譯者注:可以參考 http://en.wikipedia.org/wiki/HTTP_pipelining 查看一下支持的平臺)。


HTTP/2 多路復(fù)用(Multiplexing)


多路復(fù)用允許同時通過單一的 HTTP/2 連接發(fā)起多重的請求-響應(yīng)消息,為了向你們量化展示一個 HTTP/2 連接到底快多少,我準(zhǔn)備了一套并排的圖對比 HTTP/2 與 HTTP/1 的性能,在這個簡單的示例中只請求 3 個資源,從 web 頁面開始渲染到加載結(jié)束,HTTP/2 比 HTTP/1 節(jié)省不少時間。


推而廣之,當(dāng) 80 個資源復(fù)合請求時,與 HTTP/1.1 相比,很明顯通過單一連接進(jìn)行傳遞的 HTTP/2 更高效!



其它提高 HTTP/2 性能的因素


除了多路復(fù)用,HTTP/2 還是二進(jìn)制的,與 HTTP/1 這樣的文本協(xié)議相比,二進(jìn)制協(xié)議解析起來更加高效。很顯然,二進(jìn)制的協(xié)議更適合在線路進(jìn)行傳輸,并且更不容易出錯。


HTTP/2 同時也減少了壓縮頭部的開銷,這些在 HTTP/1 里都沒有實(shí)現(xiàn)。


服務(wù)器推送(Server Push)


在 HTTP/2 中,服務(wù)器推送是指在客戶端請求之前發(fā)送數(shù)據(jù)的機(jī)制。如果一個請求是由你的主頁發(fā)起的,服務(wù)器很可能響應(yīng)主頁內(nèi)容、logo以及樣式表,因?yàn)樗揽蛻舳藭玫竭@些東西。這相當(dāng)于在一個 HTML 文檔內(nèi)集合了所有的資源,不過與之相比,服務(wù)器推送有一個很大的優(yōu)勢:可以緩存!


當(dāng)然這同時也是它的一個缺點(diǎn),如果客戶端已經(jīng)緩存了數(shù)據(jù),此時會產(chǎn)生不必要的冗余。這也是為什么我推薦服務(wù)器提示(Server Hints)的原因。


服務(wù)器提示(Server Hints)


服務(wù)器提示可以先于客戶端檢測到將要請求的資源,提前通知客戶端,服務(wù)器不發(fā)送所有資源的實(shí)體,它只發(fā)送資源的 URL。客戶端接到提示后進(jìn)一步驗(yàn)證之前的緩存,如果發(fā)現(xiàn)需要這些資源,則正式發(fā)起請求。服務(wù)器提示對 HTTP/2 來說興許不是最新的,但非常值得在這里順便一提,因?yàn)樗鼪]有上文提到的服務(wù)器推送冗余的缺點(diǎn)。



進(jìn)一步了解資源提示


預(yù)加載關(guān)聯(lián)用于聲明一個資源和它的 fetch 屬性,這個規(guī)范通過額外的處理策略擴(kuò)展了功能,有效地獲取在下一個導(dǎo)航可能需要請求的資源,舉個例子


一些瀏覽器中,loadpolicy=”next inert” 等同于 rel=prefetch 這樣的實(shí)現(xiàn),loadpolicy 屬性的 next 值在語義上與 rel=prerender 相同,這個規(guī)范對預(yù)獲取和預(yù)渲染的功能進(jìn)行了標(biāo)準(zhǔn)化,并且給他們擴(kuò)展了額外的功能。


欲了解更多,移步發(fā)布在 W3C 的由 Ilya Grigorik 編輯的文章 資源提示


HTTP/2 安全批判


盡管 HTTP/2 的主要目標(biāo)是使網(wǎng)絡(luò)更快,但是因?yàn)樗粡?qiáng)制加密連接,目前飽受批判。還好的是,主導(dǎo)的瀏覽器廠商迄今為止都拒絕開發(fā)不加密的 HTTP/2,所以 HTTP/2 需要通過代理部署一個加密的連接。如果你不認(rèn)為這對 Web 的未來大有裨益,請移步我的文章 HTTPS 無所不在


瀏覽器支持


HTTP/2 現(xiàn)在或者將來會被所有主流瀏覽器支持。


Chrome 40 支持 HTTP/2 14 號草案,但是默認(rèn)不開啟。HTTP/2 17 號草案(也就是最終草案),現(xiàn)在可以在 Chrome Canary 43(開發(fā)者預(yù)覽版)里使用了,目前只有基于 TLS(加密的)的 HTTP/2 實(shí)現(xiàn)。 如需在 Chrome 中啟用 HTTP/2,訪問: chrome://flags/#enable-spdy4 Firefox 支持 HTTP/2,在第 36 版中默認(rèn)啟用,早在第 34 版中,就已經(jīng)開始添加針對 HTTP/2 的實(shí)驗(yàn)性支持。目前也只有基于 TLS 的HTTP/2 實(shí)現(xiàn)。 IE11 支持 HTTP/2,但是只在 Windows 10 Beta 版里默認(rèn)啟用。目前也只有基于 TLS 的 HTTP/2 實(shí)現(xiàn)。 Spartan 預(yù)計也會支持基于 TLS 的 HTTP/2,盡管微軟為 Windows 10 打造的新瀏覽器的有關(guān)細(xì)節(jié)尚未完全曝光。 Safari 在 Mac OS X Yosemite(10.10)和 iOS 8 中默認(rèn)支持 SPDY,對于 HTTP/2 的全支持預(yù)計在 2015 年底完成。 Opera 默認(rèn)支持 SPDY。預(yù)計在 Chrome 全部實(shí)現(xiàn) HTTP/2 最終草案的特性后全面支持 HTTP/2。


服務(wù)器支持


支持 HTTP/2


IIS(互聯(lián)網(wǎng)信息服務(wù))在 Windows 10 beta 版中支持 HTTP/2。 OpenLiteSpeed 1.3.8 和 1.4.5 支持 HTTP/2 第 17 號草案。


支持 SPDY,但不支持 HTTP/2


Apache 通過 mod_spdy 模塊支持老版本的 SPDY,目前這個模塊已經(jīng)停止開發(fā)。 LiteSpeed Web 服務(wù)器目前支持 SPDY/3.1。 Nginx 通過一個模塊提供針對 SPDY(Draft 3.1) 的實(shí)驗(yàn)性支持,計劃在 2015 年底支持 HTTP/2。


目前沒有支持 HTTP/2 計劃的


    lighttpd 在版本 1.x 中沒有支持 SPDY 或 HTTP/2 的計劃


其它 HTTP/2 實(shí)現(xiàn)


其它已知的 HTTP/2 實(shí)現(xiàn)可以在 Github HTTP/2 wiki 中找到


最后,有關(guān) HTTP/2 的暢想


正如我們所探索的,HTTP/2 早就應(yīng)該為升級 Web 而出現(xiàn),當(dāng)它在接下來的幾年中被廣泛接受,網(wǎng)站和其它 web 服務(wù)將會變得更快,比以前任何時候更加能干。感謝有遠(yuǎn)見的瀏覽器廠商們,HTTP/2 將會增強(qiáng)用戶的隱私和安全。我認(rèn)為對于整個 Web 生態(tài)來說,HTTP/2 是一次至關(guān)重要的飛躍,未來有許多新的事業(yè)正等著我們?nèi)ラ_拓。


如果關(guān)于 HTTP/2 你有任何的問題或建議,可以在 Twitter 上 @BenjaminPatch



上一篇:WebAPP移動前端性能優(yōu)化規(guī)范和設(shè)計指導(dǎo)

下一篇:番禺原創(chuàng)網(wǎng)站設(shè)計,就找織晶網(wǎng)絡(luò)