HTTP慢的原因和解決方式

2021-08-16 19:08:57 字數 829 閱讀 1327

主要有2個,頻寬和延遲。

1.解決連線無法復用

移動端建立一條自己的長鏈結通道,通道的實現是基於tcp協議。基於tcp的socket程式設計技術難度相對複雜很多,而且需要自己定製協議。但資訊的上報和推送變得更及時,請求量爆發的時間點還能減輕伺服器壓力(避免頻繁建立和銷毀連線)

客戶端在初始狀態傳送乙個polling請求到伺服器,伺服器並不會馬上返回業務資料,而是等待有新的業務資料產生的時候再返回,所以鏈結會一直被保持。一但結束當前連線,馬上又會傳送乙個新的polling請求,如此反覆,保證乙個連線被保持。

存在問題:

1)增加了伺服器的壓力

2)網路環境複雜場景下,需要考慮怎麼重建健康的連線通道

3)polling的方式穩定性不好

4)polling的response可能被中間**cache住

……和long-polling不同的是,streaming方式通過再server response的頭部增加「transfer encoding:chuncked」來告訴客戶端後續還有新的資料到來

存在問題:

1)有些**伺服器會等待伺服器的response結束之後才將結果推送給請求客戶端。streaming不會結束response

2)業務資料無法按照請求分割

……和傳統的tcp socket相似,基於tcp協議,提供雙向的資料通道。它的優勢是提供了message的概念,比基於位元組流的tcp socket使用更簡單。技術較新,不是所有瀏覽器都提供了支援。

2.解決head of line blocking

它的原因是佇列的第乙個資料報(隊頭)受阻而導致整列資料報受阻

幾乎在同一時間把request發向了伺服器

Tomcat 7 啟動慢原因分析和解決

首先我嘗試分析和實踐了一下,排除了專案 的原因,所以最終定位到tomcat。但是一直很奇怪,為什麼會卡頓?因為想不通,所以就去查詢資料答案,在網上找到了一些和自己與遇到相同問題的人,看了一下 原因分析 tomcat 7 8都使用org.apache.catalina.util.sessionidge...

死鎖原因,條件和解決

死鎖是指多個程序迴圈等待彼此占有的資源而無限期的僵持等待下去的局面。原因是 為使系統不發生死鎖,必須設法破壞產生死鎖的四個必要條件之一,或者允許死鎖產生,但當死鎖發生時能檢測出思索,並有能力實現恢復。一般有死鎖的預防 死鎖避免 死鎖的檢測與恢復三種方法。允許程序動態的申請資源,但系統在進行資源分配前...

Android ANR發生的原因總結和解決辦法

首先anr的發生是有條件限制的,分為以下三點 只有主線程才會產生anr,主線程就是ui執行緒 必須發生某些輸入事件或特定操作,比如按鍵或觸屏等輸入事件,在broadcastreceiver或service的各個生命週期呼叫函式 上述事件響應超時,不同的context規定的上限時間不同 a.主線程對輸...