在當今的移動互聯開發趨勢中,nghttp2是一個很值得大家去關注的一個開源項目。
我們在nghttpx模塊中實現了HTTP/2服務器推送功能,並且在我們的nghttp2.org網站中啟用了該推送功能。當你通過HTTP/2協議訪問 https://nghttp2.org網站時,CSS文件/stylesheets/screen.css就會被推送到客戶端。
nghttp2 blog
當你通過網絡瀏覽器的調試功能觀察該頁面的加載過程的時候,你會發現有不少東西會冒出水面給你個驚喜:
大家可以看到圖片中的 response
應答包頭包含了一個 link:
的資源屬性來發送額外的內容到瀏覽器客戶端,而這個過程其實並不需要瀏覽器客戶端主動的去請求的(因此這就需要對該DOM結構進行相應的解析了)。這向大家展示了真正的HTTP/2服務器推送功能了。
注意: 為了在你的瀏覽器調試界面的網絡標簽中顯示出HTT/2協議信息, 請運行Chrome Canary這個版本的瀏覽器,詳情請看http://ma.ttias.be/view-httpspdyhttp2-protocol-google-chrome/
這種服務器進行推送的方式所帶來的好處是讓下載stylesheet的過程更加快速。這你可以通過比較訪問傳統的HTTP/1.1網站和開啟了服務器推送功能的HTTP/2的網站就很容易看出來了。
傳統的HTTP/1.1頁面加載
比如,以下圖片顯示的就是通過典型的傳統HTTP/1.1協議方式訪問我的博客網站時的流程。
從上圖可以看到,在 GET /
這個請求發出后,就會需要等待大概20毫秒的時間去解析網頁內容,然后才會開始對下一個資源 widget.css
的請求。
啟動了服務器推送的HTTP/2網頁加載
相比HTTP/2的流程:
從中可以看到,DOM和其他額外的資源都不需要進行解析,客戶端就已經可以下載 screen.css
這個資源了。這就不需要“浪費時間”在處理DOM和哪些額外的資源上面了,需要做的僅僅是發送另外一個請求到服務器端去把它們拿下來而已。
一旦你在你的一個頁面中的所有資源都加上該功能后,你就很大可能為你的網站該網頁的加載/渲染速度省掉100-200毫秒了。這些數據相信已經足夠吸引你來實現HTTP/2功能了吧。
就響應速度和網頁速度來說,HTTP/2將會給你帶來巨大的驚喜--特別是當你使用了服務器端推送功能之后。
-----------------------完---------------------
引用英文連接:http://ma.ttias.be/service-side-push-http2-nghttp2/?s=hn
請尊重原創作/譯者 |
微信知識共享公眾號 |
CSDN |
天地會珠海分舵 |
TechGoGoGo |
http://blog.csdn.net/zhubaitian |