更快更安全: 每個網站都應該升級到 HTTP/2 | ihower { blogging }

也因為 HTTP/1.1 的這個限制,當今 Web 開發者針對網站效能優化時,發展出了各種奇技淫巧來加快網頁下載速度,稍候我們會提到這些在新的 HTTP/2 技術下,完全是多餘的。

那麼,HTTP/2 是如何改良的呢?它採用的解法包括:

只需要單一網路連線(Single TCP connection),就可以連接網站伺服器,下載所有需要的資源。大大節省 HTTP/1.1 需要一直建立多個網路連線時的啟動時間浪費。

連線多工(Multiplexing),在單一網路連線上,就可以同時傳輸多個 HTTP Request 和 Response,併發請求 CSS/JS/Images 等等資源。它的原理是將 Requests/Responses 都拆碎成小 frames 進行傳輸,而這些 frames 是可以交錯的,因此檔案再多也不怕,不會發生佔用網路連線(TCP connection)的情況。這就是為什麼在圖檔多的情況下,HTTP/2 特別有優勢。

優先權設計(Prioritization),伺服器可以決定例如 CSS 或 JavaScript 檔案,哪些要優先傳送。

Header 壓縮,在 HTTP/1.1 的 Headers 其實是沒有壓縮的,大小佔了約 200 bytes 到 2KB 不等,而且同一瀏覽器的每個 Requests 其實絕大部份的 Headers 都是重複的。HTTP/2 用了 HPACK 壓縮技術,大大減少每次都要重複傳輸一樣的 Headers。
Binary 二進位的封包結構設計,對伺服器和瀏覽器來說,可以更快的解析這些資料。冷知識:在 HTTP/1.1 定義了四種解析訊息的方式,在 HTTP/2 只需要一種。

伺服器主動推送資源(Server Push),允許伺服器除了 HTML 之外,連同需要的 CSS/JavaScript/Images 檔案,主動推到瀏覽器的快取之中。不過,這個功能比較有爭議,一來他需要 Web 開發者額外描述有哪些檔案需要隨著 HTML 一起推送給瀏覽器,不是 Web 伺服器升級 HTTP/2 就自動會有。二來它不管瀏覽器是不是已經有快取這個資源,都會推送而造成頻寬浪費。因此實務上筆者認為可以改用瀏覽器的 Prefetch 功能,讓客戶端的瀏覽器自己處理即可。

透過這些技術,讓瀏覽器的網頁下載時間大大降低。而我們網站主需要做的,就是升級 Web 伺服器到支援 HTTP/2。

(本文 crossposting 於 ALPHACamp Blog) 如果說有一項技術可以讓你的網站瀏覽起來更快、更安全、SEO 加分,而且網站工程師不需要改 code 就可以全站使用。更重要的是,還不用額外花錢,天底下有這麼好的事情嗎? 話說 HTTP 通訊協定是全球資訊網(WWW)的基礎,是瀏覽器和網站伺服器之間的通訊協定。而 HTTP/2 是 HTTP/1.1 從 1999 年發布以來…

來源: 更快更安全: 每個網站都應該升級到 HTTP/2 | ihower { blogging }