面試官:為什么要合并 HTTP 請求?
來源:https://www.jianshu.com/p/9a3f0e84c2b0
思考路徑:
1. Client發(fā)出請求
1.1 HTTP 1.1
1.2 TCP丟包問題
1.3 瀏覽器線程數(shù)限制
1.4 DNS緩存問題
每次請求都需要找DNS緩存,多個請求就需要查找多次,而且緩存有可能被無故清空
2. 服務(wù)器處理請求
每個請求需要使用一個連接,建立一個線程,分配一部分CPU, 對于CPU而言,是種負(fù)擔(dān),尤其是一般來說建立了連接以后,哪怕發(fā)回了請求,這個連接還會保持一段時間才會timeout。
這種時候,維持連接是對服務(wù)器資源的一種巨大的浪費(fèi)。
3. HTTP 2.0
就是這么酷炫,HTTP/2多了很多特性來解決HTTP/1.1的很多問題
3.1 Fully multiplexed
另外,HTTP 系列面試題和答案全部整理好了,微信搜索互聯(lián)網(wǎng)架構(gòu)師,在后臺發(fā)送:2T,可以在線閱讀。
3.2 Header Compression
4. 總結(jié)
It’s a trade-off. 其實(shí)最重要的是看你傳輸什么東西,因為合并HTTP請求實(shí)質(zhì)上是減少了網(wǎng)絡(luò)延時,但是如果你在服務(wù)器上處理的時間遠(yuǎn)遠(yuǎn)大于網(wǎng)絡(luò)延時的時間的時候,那么合并HTTP請求并不會給你帶來很多性能上的提升。
而且大數(shù)據(jù)量的傳輸一定會降低瀏覽器的cache hit rate,對于緩存的利用率會降低很多。但是對于HTTP請求攜帶的數(shù)據(jù)量比較少的情況,合并請求帶來的性能提升會是顯而易見的。
https://www.zhihu.com/question/34689035
https://www.zhihu.com/question/34401250
https://deliciousbrains.com/performance-best-practices-http2/
https://www.tutorialdocs.com/article/merge-parallel-http-request.html
PS:如果覺得我的分享不錯,歡迎大家隨手點(diǎn)贊、轉(zhuǎn)發(fā)、在看。
PS:如果覺得我的分享不錯,歡迎大家隨手點(diǎn)贊、轉(zhuǎn)發(fā)、在看。
