(chap9 基于HTTP的功能追加协议) HTTP瓶颈
1. HTTP瓶頸
場景:對于實時更新的網站業務,HTTP的某些標準會成為瓶頸。比如某個網頁上有很多的內容需要及時更新,并反饋在客戶端的界面上 。
瓶頸一:一條連接上只可發送一個請求
瓶頸二:請求只能從客戶端開始,客戶端不可以接收除響應以外的指令
瓶頸三:請求/響應首部未經壓縮就發送,信息越多延遲越大
瓶頸四:發送冗長的首部,相同首部會浪費
瓶頸五:可任意選擇數據壓縮格式。非強制壓縮發送
2. 解決方法
2.1 Ajax(Asynchronous JavaScript and XML,異步JavaScript與XML技術)
是一種有效利用JavaScript和DOM(Document Object Model,文檔對象模型)的操作,以達到局部Web頁面替換加載的異步通信手段。由于它只更新一部分頁面,響應中傳輸的數據量會因此而減少,這一優點顯而易見。
Ajax核心技術:XMLHttpRequest的API,通過JS腳本語言的調用就能和服務器進行HTTP通信。實現局部更新頁面。
問題:利用Ajax實時地從服務器獲取內容,有可能會導致大量請求產生。也未解決HTTP協議本身存在的問題。(每次發送相同的首部,有時不壓縮數據直接發送)
2.2 Comet的解決方法
Comet會先將響應置于掛起狀態,當服務器端有內容更新時,再返回該響應。因此服務器端一旦有更新,就可以立即反饋給客戶端。
這是一種通過延遲應答,模擬實現服務器端向客戶端推送的功能。
Comet會先將響應置于掛起狀態,當服務器端有內容更新時,再返回該響應。
消耗更多資源,也未解決HTTP本身存在的問題。
問題:內容上雖然可以做到實時更新,但為了保留響應,一次連接的持續時間也變長了。期間,為了維持連接會消耗更多的資源。另外,Comet也仍未解決HTTP協議本身存在的問題。
2.3 SPDY協議的解決方法
在TCP/IP的應用層與運輸層之間通過新加會話層的形式運作,考慮到安全性問題,SPDY規定通信中使用SSL。
使用 SPDY 后,HTTP 協議額外獲得以下功能。
-
多路復用流
一個TCP可處理多個HTTP請求 -
賦予請求優先級
可以給請求逐個分配優先級順序,這樣主要是為了在發送多個請求時,解決因帶寬低而導致響應變慢的問題。 -
壓縮HTTP首部
這樣通信產生的數據包數量和發送的字節數就更少了。 -
推送功能
支持服務器主動向客戶端推送數據的功能。 -
服務器提示功能
服務器可以主動提示客戶端請求所需的資源,由于在客戶端發現資源之前就可以獲知資源的存在,因此在資源已緩存等情況下,可以避免發送不必要的請求。
問題: 因為SPDY基本上只是將單個域名(IP地址)的通信多路復用,所以當一個Web 網站上使用多個域名下的資源,改善效果就會受到限制。
2.4
很多 Web 網站存在的問題并非僅僅是由HTTP瓶頸所導致。對Web本身的速度提升,還應該從其他可細致鉆研的地方入手,比如改善Web內容的編寫方式等。
總結
以上是生活随笔為你收集整理的(chap9 基于HTTP的功能追加协议) HTTP瓶颈的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (chap8 确认访问用户身份的认证)
- 下一篇: (chap9 基于HTTP的功能追加协议