http 發展進程 與 編碼方式的發展 進程

廣義上我們口中的 http

我們口中常說的 http 應該是指 http 1.1
http0.9中,每次通信完成後,都會斷開tcp連接,造成資源浪費。
http1.0可以在header中加入keep alive來確保長連接,但還是有點麻煩。
於是,http1.1 默認可以 keep alive,並且引入管道機制(pipeline),客戶端可以發送多個請求,但是服務端按照順序來一一回復。這也是HTTP1.1的設計缺點,多個請求過來時,隊列容易被大型緩慢得請求堵塞,儘管前端可以優化請求數量,例如雪碧圖,合併腳本和樣式表等。

後來,谷歌開發出一種新的通信協議,並在Chrome試水成功,名爲:spdy(撕破腚眼),後來大多數 feature 都在 http2 中得到繼承,例如 head 頭中的元數據信息不再限制爲僅支持 ASCII 編碼的字符集,並且還支持二進制編碼,以便於將來高級應用的解析。並且,每次通信的過程中,不會再有隊列堵塞的情況發生,一個請求太大,執行多少就先返回多少,在執行下一個任務,等下一個執行完,接着處理上一個。另外,可以中途取消某個通信幀,還可以給每個請求標註 level 讓服務器按照 level優先級處理。還有服務器和客戶端都會維護一張表,將重複的頭部元數據都塞到表裏,每次通信,發送表的索引,提升通信效率。

除此以外,服務端可以強推送,例如,客戶端請求某個 html,服務器可以顯而易見的知道里面有很多圖片及腳本文件,不用瀏覽器請求,就會自動推送給瀏覽器。

前面也說到字符集的編碼標準。下面來捋一下:

  1. 計算機開始普及時,爲了讓大多數的信息都可以被計算機識別,人們建立了一套 “阿拉伯數字 + 英語 + 常用符號” 的編碼標準來映射對應的字符,從而讓計算機更好的識別,處理這些字符。這個字符集定義了 從 a-z A-z 0-9 , . ? / [ ] 等常用的字符。該標準成爲: ASCII 編碼。
  2. 後來,使用計算機的人越來越多,比如中國,但是 ASCII 碼沒有定義中文字符,於是,中國有了一套 gb2312 字符編碼標準,同理,大多數國家都應該有一套自己的文字編碼標準,後來被統一爲 unicode 編碼。 unicode 編碼定義了絕大多數的文字、符號等。
  3. utf-8, utf-16 的誕生,是爲了提升編碼的效率,避免浪費位存。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章