前端性能毫秒必争方案(一)HTTP请求
在講http知識之前,有必要提及下網絡七層協議OSI(Open System Interconnect)的縮寫
猶如水滸里面的七星聚義,沒這七星,就沒有108將。(已經放置文章最后面)
2. 減少http請求次數原因在于
1、Http連接 RequestHeader 的開銷
眾所周知,后端不管是java還是php,都能使用類似htppRequest .getHeader(“XXX-XXX”)方法。為什么呢?這是因為每次請求都會帶上一些額外的信息Request Header,所以當請求越多的時候,在網絡上傳輸的數據自然就多,傳輸速度自然就慢了。
其實request自帶的數據量還是小問題,畢竟request能帶的數據量還是有限的。
2、http連接的流程串行請求限制(2-8個)
- 域名解析 =》2. 開啟TCP連接 =》3. 發送請求 =》4. 等待(主要包括網絡延遲和服務器處理時間) =》5. 下載資源 =》6. 文件解析執行時間 在http1.1,keep-alive是默認的,而且現代瀏覽器都有DNS緩存, 所以DNS尋址由于有DNS緩存–無差別; 3次握手由于有keep-alive,一條和一千條都只需一次TCP握手–無差別
HTTP1.1協議規定請求只能串行發送,這也是HTTP性能最差和最讓人詬病的地方,也就是說一百個請求必須依次逐個發送。第80個請求必須依賴于第79個請求正常返回之后才能發送。這樣就平白無故多出了99個網絡RTT(網絡延遲)。 瀏覽器通過一個TCP連接發送100個請求的事情根本就不可能發生。
當你有100個資源時,這100個資源在瀏覽器看來是“同時都要”,而瀏覽器并沒有什么智商去判斷應該用1個鏈接解決這100個資源,還是用100個鏈接來解決,不然瀏覽器永遠都只有一個TCP鏈接了。
因此瀏覽器的靜態的策略是在自己可承受的范圍內盡可能地用多的鏈接來解決,大部分瀏覽器似乎是2-8個鏈接,這就導致握手也是2-8次。
HTTP 連接個數(服務器默認最大連接數 16,777,214)
3、http請求少了,DNS 查詢自然就少了,真的被百度里面千篇一律感動了。
http連接串行請求限制(2-8個)
2.1. 第一層:物理層(Physical)
規定通信設備的功能的和過程的特性,統一物理設備的參數,用以建立、維護和拆除物理鏈路連接
2.2. 第二層:數據鏈路層(Data Link)
數據鏈路可以粗略地理解為數據通道。 媒體是長期的,連接是有生存期的.在連接生存期內,收發兩端可以進行不確定次數據通信. 每次通信都要經過建立通信聯絡和拆除通信聯絡兩過程.這種建立起來的數據收發關系就叫作數據鏈路.
2.3. 第三層:網絡層(Network)
網絡層的任務就是選擇合適的網間路由和交換結點, 確保數據及時傳送, 那在計算機網絡中進行通信的兩個計算機之間可能會經過很多個數據鏈路, 也可能還要經過很多通信子網。
2.4. 第四層:傳輸層(Transport)
傳輸層是兩臺計算機經過網絡進行數據通信時,第一個端到端的層次,具有緩沖作用。第四層的數據單元也稱作數據包(packets) 示例:TCP,UDP,SPX。
2.5. 第五層:會話層(Session)
會話層提供的服務可使應用建立和維持會話,并能使會話獲得同步。會話層使用校驗點可使通信會話在通信失效時從校驗點繼續恢復通信。這種能力對于傳送大的文件極為重要。
2.6. 第六層:表示層(Presentation)
表示層的作用之一是為異種機通信提供一種公共語言,以便能進行互操作。它將欲交換的數據從適合于某一用戶的抽象語法,轉換為適合于OSI系統內部使用的傳送語法。即提供格式化的表示和轉換數據服務。數據的壓縮和解壓縮, 加密和解密等工作都由表示層負責,這種類型的服務之所以需要,是因為不同的計算機體系結構。 例如,IBM主機使用EBCDIC編碼,而大部分PC機使用的是ASCII碼。在這種情況下,便需要會話層來完成這種轉換。
2.7. 第七層:應用層(Application)
應用層為操作系統或網絡應用程序提供訪問網絡服務的接口。應用層協議的代表包括:Telnet、FTP、HTTP、SNMP?
原文出自 :劉俊斌 (976500133@qq.com) 轉載請務必注明出處,否則追究法事(責任)
 
轉載于:https://www.cnblogs.com/passkey/p/10005988.html
總結
以上是生活随笔為你收集整理的前端性能毫秒必争方案(一)HTTP请求的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如果海角天边是什么歌呢
- 下一篇: Java 集合——List集合