iT邦幫忙

2023 iThome 鐵人賽

DAY 26
0
自我挑戰組

為了成為更好的前端,我開始在乎的那些事系列 第 26

[Day 26] 網路常識 - (12) HTTP 的發展史 - HTTP/2.0: 改善應用層的效能 (待補)

  • 分享至 

  • xImage
  •  

HTTP/2 主要是要解決 HTTP 1.1 什麼問題?

HTTP 1.X

文本傳輸造成解析緩慢

HTTP 1.X 的效能問題

HTTP 1.0 在一個 TCP connection 只能同時處理一個 request,
因其是以文本進行傳輸的,若同一個文本同時有 2 個 request 如下:

GET /first-resource HTTP/1.1 
Host: example.com 
User-Agent: SomeBrowser/1.0
Accept: */* 

GET /second-resource HTTP/1.1
Host: example.com
User-Agent: SomeBrowser/1.0
Accept: */*

則 Server 要解讀每一行的訊息,知道每一行分別代表什麼意思,
才能知道這次的傳輸有 2 個 request,且中間是由空行分隔,
這樣大費周章的解讀訊息後才能進行處理非常沒有效率

 

Meta data 常常重複又龐大,造成傳輸緩慢

有些 Header 資訊,常常在同一個 component 需要重複傳輸,
但其值常常不變,像是:

  • Cookie
  • User agent

這些資訊佔有一定的空間,
卻也因為 HTTP 有 stateless 的特定,使其無法 cache,
這些東西佔空間又造成傳輸緩慢

 

HTTP 1.1

Pipelining 無法正常作用,因為 proxy 無法正確的 handle pipelining

Pipelining 的機制,很難正確的安裝且執行,導致 HTTP 1.1 無法順利的執行優化,沒辦法在同一個 tcp connection 發多個 request

 

Head of Line Blocking

每個 response 一定要等到前面的 response 回應完成

https://ithelp.ithome.com.tw/upload/images/20231010/20148944sDgR8Zbvc1.png

 

HTTP/2 主要的功能

Multiplexing

  • 允許多個請求在同一個 TCP 上同時連接
  • 且藉由將每個 request 的 header 和 data 分別包裝成一個 frame,並用一個 stream 傳送
  • stream 上都有獨立的編號,和一些 metadata,讓其可以區分不同的 request,且有順序訊息讓其可以順利的傳送
Stream 1 (Request A): 
	HEADERS frame with request A headers 
	DATA frame with request A payload (optional) 

Stream 3 (Request B): 
	HEADERS frame with request B headers 
	DATA frame with request B payload (optional)

 

Server Push

HTTP/2 的 Server Push 是一種用於優化網頁加載速度的技術,
它可以讓服務器在客戶端請求之前主動推送相關的資源給客戶端,
以減少客戶端的等待時間

例如,當客戶端請求一個 HTML 頁面時,服務器可以主動推送該頁面所需要的 CSS 和 JavaScript 文件,這樣客戶端就可以更快地加載頁面

https://ithelp.ithome.com.tw/upload/images/20231010/201489447WzyN3THQ4.png

 

Header compression

  • Cookie
  • User agent
    是幾乎每一次都一樣的資訊,且這些資訊都很長,且常常維持不變

 

今天小結

 

參考資訊


上一篇
[Day 25] 網路常識 - (11) HTTP 的發展史 - 簡單易用的 HTTP 0.9 ~ 1.1
下一篇
[Day 27] 網路常識 - (13) HTTP 的發展史 - HTTP/3.0: 改善傳輸層的效能 (待補)
系列文
為了成為更好的前端,我開始在乎的那些事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言