基於HTTP的功能追加協議

明易發表於2018-12-10

HTTP效能瓶頸

HTTP的一些標準會成為HTTP效能上的瓶頸,比如:

  • 一條連線上只可傳送一個請求。
  • 請求只能從客戶端開始,客戶端不可以接收除響應以外的指令。
  • 請求/響應首部未經壓縮就傳送,首部資訊越多延遲越大。
  • 傳送冗長的首部,每次互相傳送相同的首部造成的浪費較多。
  • 可任意選擇資料壓縮格式,非強制壓縮傳送。

為了應對HTTP的效能瓶頸,出現了基於HTTP的功能追加協議。

Ajax

Ajax(Asynchronous JavaScript and XML,非同步JavaScript與XML技術)是一種有效利用JavaScript和DOM(Document Object Model,文件物件模型)的操作,以達到區域性Web頁面替換載入的非同步通訊手段。由於它只更新一部分頁面,響應中傳輸的資料量會因此而減少,這一優點顯而易見。

Comet的解決方法

Comet會先將響應置於掛起狀態,當伺服器端有內容更新時,再返回該響應。因此伺服器端一旦有更新,就可以立即反饋給客戶端。

SPDY

Google在2010年釋出,其開發目標旨在解決HTTP的效能瓶頸,縮短Web頁面的載入時間。SPDY沒有完全改寫HTTP協議,而是在TCP/IP的應用層與運輸層之間通過新加會話層的形式運作。同時考慮到安全性問題,SPDY規定通訊中使用SSL。

使用SPDY後,HTTP協議額外獲得的功能:

  • 多路複用(通過單一的TCP連線,可以無限制處理多個HTTP請求。)
  • 賦予請求優先順序:可以給請求逐個分配優先順序順序,這樣主要是為了在傳送多個請求時,解決因頻寬低而導致響應變慢的問題。
  • 壓縮HTTP首部:這樣通訊產生的資料包數量和傳送的位元組數就更少了。
  • 推送功能:支援伺服器主動向客戶端推送資料的功能。
  • 伺服器提示功能:伺服器可以主動提示客戶端請求所需的資源,由於在客戶端發現資源之前就可以獲知資源的存在,因此在資源已快取等情況下,可以避免傳送不必要的請求。

WebSocket

使用瀏覽器進行全雙工通訊。

WebSocket是建立在HTTP基礎上的協議,因此連線的發起方仍是客戶端,而一旦確立WebSocket通訊連線,不論伺服器還是客戶端,任意一方都可直接向對方傳送報文。

WebScoket協議的主要特點:

  • 推送功能:支援伺服器想客戶端推送資料的推送功能。
  • 減少通訊量:只要建立起WebSocket連線,就希望一直保持連線狀態,和HTTP相比,不但每次連線時的總開銷減少,而且由於WebSocket的首部資訊很小,通訊量也相應減少了。

為了實現WebSocket通訊,在HTTP連線建立之後,需要完成一次“握手”(Handshaking)的步驟。

基於HTTP的功能追加協議

WebDAV

WebDAV(Web-based Distributed Authoring and Versioning,基於全球資訊網的分散式創作和版本控制)是一個可對Web伺服器上的內容直接進行檔案複製、編輯等操作的分散式檔案系統,它還具備檔案建立者管理、檔案編輯過程中禁止其他使用者內容覆蓋的加鎖功能,以及對檔案內容修改的版本控制功能。

相關文章