成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為什么要合并HTTP請求?

開發 后端
本文將解決這個問題。一起看看單個請求攜載大量信息和多個請求攜載小量信息對于整個時間的影響。

思考路徑:

為什么要實現batch call? -> 減少網絡中的傳輸損耗 -> 如何減少的? -> 通過合并HTTP請求 -> 合并HTTP請求是如何減少網絡損耗的?

本文將解決這個問題。一起看看單個請求攜載大量信息和多個請求攜載小量信息對于整個時間的影響。

Client發出請求

1 HTTP 1.1

可以保持長連接,但是每個不同的請求之間,client要向server發一個請求頭

請求無法并行執行的,在一個連接里面

假設如果不合并的話需要建立N個連接,那么合并就可以省去(N-1)*RTT的時間,RTT指網絡延遲(在傳輸介質中傳輸所用的時間,即從報文開始進入網絡到它開始離開網絡之間的時間)。

2 TCP丟包問題

慢啟動,擁塞控制窗口

TCP報文亂序到達,合并后的文件可以允許隊首丟包以后在隊中補上來,但是分開資源的時候,前一個資源未加載完成后面的資源是不能加載的,會有更嚴重的隊首阻塞問題,丟包率會嚴重影響Keep alive情況下多個文件的傳輸速率。

3 瀏覽器線程數限制

多為2-6個線程,會在每個連接上串行發送若干個請求。TCP連接太多,會給服務器造成很大的壓力的。

4 DNS緩存問題

每次請求都需要找DNS緩存,多個請求就需要查找多次,而且緩存有可能被無故清空

服務器處理請求

每個請求需要使用一個連接,建立一個線程,分配一部分CPU, 對于CPU而言,是種負擔,尤其是一般來說建立了連接以后,哪怕發回了請求,這個連接還會保持一段時間才會timeout。這種時候,維持連接是對服務器資源的一種巨大的浪費。

HTTP 2.0

上面描述的所有都是基于HTTP/1.1的一些特性,或者說弊端,有長連接但是無法并行處理請求,TCP的慢啟動和擁塞控制,隊首阻塞問題都給整個性能帶來很多弊端,因此我們有了HTTP2.0來做針對性的改進。很有意思的東西,直接看圖:

HTTP/1.1 network的請求圖

HTTP/2 network的請求圖

就是這么酷炫,HTTP/2多了很多特性來解決HTTP/1.1的很多問題

1 Fully multiplexed

解決了隊首阻塞的問題。對于同一個TCP連接,現在可以發送多個請求,接收多個回應了!在HTTP/1.1里面,如果在一個連接里上一個請求發生了丟包,那么后面的所有請求都必須等第一個請求補上包,收到回應以后才能繼續執行。而在HTTP/2里面,可以直接并行處理。

2 Header Compression

所有的HTTP request和response都有header,但是header里很可能包含緩存信息,導致他的大小會迅速增大的。但是在一個連接里大部分請求的請求頭其實攜帶的信息都很類似,所以HTTP/2使用了索引表,存儲了第一次出現的請求的請求頭,然后后面的類似的請求只需要攜帶這個索引的數字就好了。頭部壓縮平均減少了30%的頭部大小,加快了整體的網絡中傳輸的速度。

這兩點是和本文關系最大的,有了這兩點,實質上合并HTTP請求的好處在HTTP/2的協議下,已經基本上消失了。合并不合并請求,更多的是看業務上的需求,后端的一些配置。

總結

It's a trade-off. 其實最重要的是看你傳輸什么東西,因為合并HTTP請求實質上是減少了網絡延時,但是如果你在服務器上處理的時間遠遠大于網絡延時的時間的時候,那么合并HTTP請求并不會給你帶來很多性能上的提升。而且大數據量的傳輸一定會降低瀏覽器的cache hit rate,對于緩存的利用率會降低很多。但是對于HTTP請求攜帶的數據量比較少的情況,合并請求帶來的性能提升會是顯而易見的。

責任編輯:龐桂玉 來源: Java面試那些事兒
相關推薦

2021-05-30 09:25:48

HttpETag 網絡協議

2018-07-24 13:01:52

前端優化前端性能瀏覽器

2015-08-06 10:14:15

造輪子facebook

2022-08-15 08:27:02

基站網絡

2013-03-12 14:30:09

Ubuntu操作系統

2014-08-25 10:00:18

開源

2015-05-12 11:04:42

Java EE學習Java EE

2019-11-27 10:25:15

SaaS云端IT架構

2017-04-05 16:40:45

2017-09-08 08:35:16

Android代碼API設計

2021-02-11 13:30:56

Nodejs源碼c++

2019-03-19 08:59:13

物聯網IOT技術

2024-10-17 16:41:57

KafkaZooKeeper

2019-01-14 07:28:56

大數據云計算互聯網

2018-05-23 00:20:29

2019-09-30 07:50:51

ITOps云端ITOM

2019-12-26 14:52:31

微軟CortanaAndroid

2016-08-19 16:27:52

數據庫Mongo DB開發

2017-04-05 18:10:05

R語言開發Ross

2021-03-16 08:35:14

Kubernetes Docker容器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美a√| 在线观看av中文字幕 | 亚洲一区二区三区免费视频 | 亚洲伊人久久综合 | 一区二区精品电影 | 中文字幕在线观看一区 | 欧美一区二区三区在线观看 | 午夜精品91 | 国产精品一区二区久久 | 99久久精品免费看国产小宝寻花 | 欧美一区二区在线观看 | 综合国产在线 | 久久丝袜 | 午夜理伦三级理论三级在线观看 | 在线免费观看毛片 | 色av一区| 国产在线视频一区二区董小宛性色 | 午夜影院在线观看版 | 日韩视频专区 | 国产精品自在线 | 九九热精品视频 | 亚洲综合视频 | 日韩黄a| 日韩1区 | 国产日韩中文字幕 | 天天草草草 | 91青青草视频| 国产在线观看一区二区三区 | 99久久久久久 | 日韩午夜精品 | 日韩午夜在线观看 | 亚洲精选一区二区 | 亚洲精品一区二区三区四区高清 | 亚洲综合色视频在线观看 | 伊人亚洲 | 狠狠ri| 日日噜噜噜夜夜爽爽狠狠视频97 | 亚洲欧洲日韩精品 中文字幕 | 国产免费一区二区三区网站免费 | 色呦呦网站 | 在线亚洲人成电影网站色www |