官术网_书友最值得收藏!

  • HTTP/2 in Action 中文版
  • (美)Barry Pollard(巴里·波拉德)
  • 660字
  • 2020-08-06 15:52:08

2.3 HTTP/1.1的其他問題

HTTP/1.1是一個簡單的文本協議。這種簡單性也帶來一些問題。盡管HTTP消息體可以包含二進制數據(比如圖片,以及客戶端和服務器能理解的任何格式),但請求和首部需要是文本的形式。文本格式對于人類來說很友好,但對于機器并不友好。HTTP文本消息處理起來很復雜,且容易出錯,會導致安全問題。例如,向HTTP首部中添加換行符,可以進行一些HTTP攻擊[11]

HTTP使用文本格式帶來的另外一個問題是,HTTP消息較大,這是因為不能高效編碼數據(比如使用數字來表達Date首部,而不是使用人類可讀的完整文本),而且首部內容也有重復。還是那句話,在早期Web只需要單個請求,這不會有問題,但隨著請求數的增長,使用文本格式就顯得效率很低了。HTTP首部的應用很廣泛,這就帶來了很多重復性問題。例如,就算只有主頁需要cookie,每個發向服務器的HTTP請求中都會包含cookie。通常,靜態資源,如圖片、CSS和JavaScript都不需要cookie。域名分片,如本章前面講過的,主要用來提供更多連接數,但它也用來創建所謂的無cookie域名。出于性能和安全的考慮,瀏覽器不會向這些域名發送cookie。同樣HTTP響應的首部也變得龐大了許多,像Content-Security-Policy這種關于安全的首部,會導致HTTP首部非常大,從而使效率低下的問題越來越突出。很多網站需要加載上百個資源,龐大的HTTP首部可能會帶來幾十甚至上百KB的數據傳輸。

性能問題是HTTP/1.1需要改善的其中一個問題。除此之外,它還存在純文本協議的安全和隱私問題(HTTPS加密很好地解決了這個問題),以及缺少狀態的問題(cookie在一定程度上解決了這個問題)。在第10章,我們會對這些問題進行更多的探究。然而對很多人來講,想要解決這些性能問題,而不引入新問題,并不容易。

主站蜘蛛池模板: 白河县| 乳源| 绥江县| 江川县| 新绛县| 来凤县| 秦安县| 辽阳县| 睢宁县| 苍山县| 威海市| 肇庆市| 宾阳县| 屯昌县| 龙里县| 平乡县| 泊头市| 灌阳县| 海口市| 防城港市| 唐河县| 新昌县| 方山县| 肃宁县| 屯昌县| 集安市| 彰化县| 马关县| 紫金县| 临颍县| 罗田县| 鸡东县| 留坝县| 新郑市| 灵寿县| 余干县| 晋州市| 卢氏县| 蒙自县| 阿克苏市| 客服|