面试官:为什么要合并 HTTP 请求?

发布于 2021-11-24 11:17 ,所属分类:2021面试经验技巧分享

程序员的成长之路
互联网/程序员/技术/资料共享
HTTP/1.1 network的请求图
HTTP/2 network的请求图
就是这么酷炫,HTTP/2多了很多特性来解决HTTP/1.1的很多问题

3.1 Fully multiplexed

解决了队首阻塞的问题。对于同一个TCP连接,现在可以发送多个请求,接收多个回应了!在HTTP/1.1里面,如果在一个连接里上一个请求发生了丢包,那么后面的所有请求都必须等第一个请求补上包,收到回应以后才能继续执行。而在HTTP/2里面,可以直接并行处理。

3.2 Header Compression

所有的HTTP request和response都有header,但是header里很可能包含缓存信息,导致他的大小会迅速增大的。但是在一个连接里大部分请求的请求头其实携带的信息都很类似,所以HTTP/2使用了索引表,存储了第一次出现的请求的请求头,然后后面的类似的请求只需要携带这个索引的数字就好了。头部压缩平均减少了30%的头部大小,加快了整体的网络中传输的速度。
这两点是和本文关系最大的,有了这两点,实质上合并HTTP请求的好处在HTTP/2的协议下,已经基本上消失了。合并不合并请求,更多的是看业务上的需求,后端的一些配置。

4. 总结

It’s a trade-off. 其实最重要的是看你传输什么东西,因为合并HTTP请求实质上是减少了网络延时,但是如果你在服务器上处理的时间远远大于网络延时的时间的时候,那么合并HTTP请求并不会给你带来很多性能上的提升。
而且大数据量的传输一定会降低浏览器的cache hit rate,对于缓存的利用率会降低很多。但是对于HTTP请求携带的数据量比较少的情况,合并请求带来的性能提升会是显而易见的。
Reference
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
<END>

推荐阅读:

责任链模式在王者荣耀中的应用,妙!

去AV片马赛克,开发者被抓了

最近面试BAT,整理一份面试资料《Java面试BATJ通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。

获取方式:点个「在看」,点击上方小卡片,进入gongzhong号后回复「面试题」领取,更多内容陆续奉上。

朕已阅

相关资源