關于 HTTP/2,你需要知道哪些?
原文 http://www.techug.com/http2
觀察瀏覽器的地址欄。看最前面的幾個字母:HTTP。這是什么?它是超文本傳輸協議(Hypertext Transfer Protocol)的簡稱,這一機制是瀏覽器用來向服務器請求信息以及將網頁呈現在屏幕上。HTTP 協議的新版本草稿于近期由負責創建因特網標準的組織發布,該組織叫做互聯網工程任務小組(IETF)。這意味著自1999年投入使用的老版本 HTTP/1.1 將最終被新版本代替,它被稱做 HTTP/2。這次更新改進了瀏覽器和服務器通訊的方式,允許更快的信息傳輸,同時降低所需要的自然條件。
為什么它如此重要?
HTTP/1.1 自1999年投入使用以來,盡管它在過去這些年以來備受矚目,但也的確開始不適應時代了。如今的網頁包含許多不同的組件,除了標準的 HTML,比如設計元素 CSS,客戶端語言 JavaScript,圖像,視頻和 Flash 動畫。為了傳輸這些信息,瀏覽器不得不創建多個鏈接,每個鏈接都包含頭文件、目的和通訊包或通訊協議的詳細信息。這對于無論是分發內容的服務器還是瀏覽器 來說,都構成了巨大的加載負擔。
當越來越多的元素添加到網站里面,所有連接和所需的處理能力會導致速度變慢。至少有一點我們可以確定,人們會變得相當煩躁。我們已經越來越期待更快的網絡,最短的延遲。對公司來說,網站變慢意味著損失急金錢,尤其是對于網絡服務來說,載入時間越長,用戶體驗越差。
自從撥號上網和即時通訊蓬勃發展后,人們一直在尋找方法來加快因特網。最常見的技術之一就是緩存,將特定的信息存儲在本地,而不是每次都需要重新 傳輸所有信息。但是其他解決方案試圖尋找一些技巧,比如降低圖片和視頻的分辨率。還有一些人花費無數小時來調整、優化代碼,從而減少加載時間的幾毫秒。這 些方法都是有效的,但卻像創可創一樣。因此谷歌決定大幅度修補 HTTP/1.1 并創建 SPDY 協議,結果也是卓有成效的。總體而言,即使使用了加密技術,服務器、瀏覽器間的通訊使用 SPDY 也更加快速。至少,使用 SPDY 后的傳輸速度能夠提高10個百分點,并且在某些情況下甚至能達到40%。SPDY 的成功使得這一項目后的谷歌工程師決定創建新的技術協議,這就是今天我們講的 HTTP/2 草稿的由來。
什么是協議?
你可以將協議視為一系列規則,用來管理信息是如何從一臺電腦傳輸到另一臺電腦上的。每一個協議都是不同的,但是通常他們包括頭文件、有效負載和腳 注。頭文件包括頭和目的地址以及有效負載的一些信息(數據類型、數據大小等)。有效負載里的是真實信息,而腳注則包含錯誤診斷的一些形式。某些協議通常支 持名為”封裝“的特性,這允許他們在有效負載部分包含其他協議。
你可以把它想象為使用郵件來發一封信。我們的協議就是 USPS。而這封信需要一個特定形式的目的地址,一個返回地址和編碼。”有效負載“就是信的內容本身,而錯誤診斷就是信封上的封條。如果寄到的信封是被撕開的,并且里面沒有信紙,你就明白出現問題了。
為什么 HTTP/2 更好?
簡單來說,HTTP/2 加載網頁速度更快、省時。就醬。
下面這個發布在 HttpWatch 上的例子,顯出出傳輸速度提高了近20%,而這僅僅是一次未完全優化的網頁服務器測試(這項技術成熟還需要一段時間)。事實上,提高30%將是很常見的。
使用 HTTP 的網頁加載速度例子:
HTTP/ 主要通過創建一個瀏覽器、服務器之間的永久連接來提高速度,而不是每個信息都創建一個連接。這顯著地降低了需要傳輸的數據量。另外,它使用二進制來傳輸數 據而不是文件,二進制是電腦語言。這意味著你的電腦不需要浪費時間將信息翻譯為它能夠理解的形式。HTTP/2 的其他特性包括”多路復用“(同時發送和接收多文本),優先級的使用(更重要的數據優先傳輸),壓縮(將信息壓縮成更小的塊)以及”服務器推送“,服務器 將學習猜測你下一個請求是什么,并提前發送數據。
因此我們什么時候能夠享受 HTTP/2 帶來的便利?
HTTP/2 的使用還沒有確定的日期,許多人可能已經在不知不覺中使用了這項技術。草案已在2月11日提交,將在六個月后期滿(準確地說,8月15日)。在期滿之前,需要再三確認并形成最終方案,名為”RFC“,或者發布經過更改的新草稿。
多說一句,我們應該意識到這個術語”RFC“,它是”Request For Comments“的簡稱,但是他的確是 IETF 使用的最終文件名。另外,RFC 并不是一個規定,而是一項建議:關于事物該如何設計。(是不是有點犯迷糊了?)但是,為了讓協議正確運行,每個人都應該遵循以下規則:
HTTP/2 技術進入被集成到許多網絡服務器和瀏覽器中,即使它仍然只是一個草案,例如,微軟 的Win 10 技術預覽版的 IE 已經支持這一技術,Chrome 也同樣支持(盡管默認是關閉的,你也可以方便地打開它),火狐也在 Beta 36 以后支持這一技術。
如果我們討論網頁服務器,你應該知道Win 10 下的 IIS(Window 網頁服務器)已經支持 HTTP/2,并且期待 Apache 和 Nginx 能夠盡快支持。這意味著更快,而不是更慢,我們將一直使用 HTTP/2。當轉變發生后,你很可能不會意識到這一點,除非你不習慣提高你經常瀏覽的站點的加載速度。另外,你還會在地址欄中看到”http “或”https”。所以,生活還會繼續,只是更快捷。
【圖片版本:Shutterstock (Server rack); HttpWatch (Benchmark charts)】