面試官:為什么要合并 HTTP 請(qǐng)求?
來(lái)源:https://www.jianshu.com/p/9a3f0e84c2b0
思考路徑:
1. Client發(fā)出請(qǐng)求
1.1 HTTP 1.1
1.2 TCP丟包問(wèn)題
1.3 瀏覽器線程數(shù)限制
1.4 DNS緩存問(wèn)題
每次請(qǐng)求都需要找DNS緩存,多個(gè)請(qǐng)求就需要查找多次,而且緩存有可能被無(wú)故清空
2. 服務(wù)器處理請(qǐng)求
每個(gè)請(qǐng)求需要使用一個(gè)連接,建立一個(gè)線程,分配一部分CPU, 對(duì)于CPU而言,是種負(fù)擔(dān),尤其是一般來(lái)說(shuō)建立了連接以后,哪怕發(fā)回了請(qǐng)求,這個(gè)連接還會(huì)保持一段時(shí)間才會(huì)timeout。
這種時(shí)候,維持連接是對(duì)服務(wù)器資源的一種巨大的浪費(fèi)。
3. HTTP 2.0
就是這么酷炫,HTTP/2多了很多特性來(lái)解決HTTP/1.1的很多問(wèn)題
3.1 Fully multiplexed
另外,HTTP 系列面試題和答案全部整理好了,微信搜索互聯(lián)網(wǎng)架構(gòu)師,在后臺(tái)發(fā)送:2T,可以在線閱讀。
3.2 Header Compression
4. 總結(jié)
It’s a trade-off. 其實(shí)最重要的是看你傳輸什么東西,因?yàn)楹喜TTP請(qǐng)求實(shí)質(zhì)上是減少了網(wǎng)絡(luò)延時(shí),但是如果你在服務(wù)器上處理的時(shí)間遠(yuǎn)遠(yuǎn)大于網(wǎng)絡(luò)延時(shí)的時(shí)間的時(shí)候,那么合并HTTP請(qǐng)求并不會(huì)給你帶來(lái)很多性能上的提升。
而且大數(shù)據(jù)量的傳輸一定會(huì)降低瀏覽器的cache hit rate,對(duì)于緩存的利用率會(huì)降低很多。但是對(duì)于HTTP請(qǐng)求攜帶的數(shù)據(jù)量比較少的情況,合并請(qǐng)求帶來(lái)的性能提升會(huì)是顯而易見的。
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
感謝您的閱讀,也歡迎您發(fā)表關(guān)于這篇文章的任何建議,關(guān)注我,技術(shù)不迷茫!小編到你上高速。
正文結(jié)束
1.不認(rèn)命,從10年流水線工人,到谷歌上班的程序媛,一位湖南妹子的勵(lì)志故事
3.從零開始搭建創(chuàng)業(yè)公司后臺(tái)技術(shù)棧
5.37歲程序員被裁,120天沒找到工作,無(wú)奈去小公司,結(jié)果懵了...
6.IntelliJ IDEA 2019.3 首個(gè)最新訪問(wèn)版本發(fā)布,新特性搶先看
一個(gè)人學(xué)習(xí)、工作很迷茫?
點(diǎn)擊「閱讀原文」加入我們的小圈子!

