面试题答案
一键面试- 多路复用:
- 在HTTP/1.1中,每个TCP连接在同一时间只能处理一个请求 - 响应,这就导致了线头阻塞问题。例如,一个网页包含多个资源(图片、脚本等),如果其中一个资源的请求响应时间长,会阻塞其他资源的请求。
- HTTP/2 允许在同一个连接上同时发送多个请求和接收多个响应,每个请求和响应都被分配一个唯一的流ID。这样,多个请求和响应可以交错进行,极大地提高了资源加载效率,减少了等待时间。
- 头部压缩:
- HTTP/1.1的头部信息通常较大,而且每次请求都会重复发送一些相同的头部字段,例如Cookie等。这会增加不必要的网络传输开销,尤其是在移动设备等网络带宽有限的场景下,会降低性能。
- HTTP/2采用HPACK算法对头部进行压缩。它通过建立一个静态和动态的字典,将重复的头部字段用字典索引表示,从而大幅减少头部大小,降低网络传输的数据量,提高传输速度。
- 服务器推送:
- 在HTTP/1.1中,客户端需要明确请求资源,服务器才会返回。例如,一个HTML页面引用了CSS文件,客户端先请求HTML,解析后发现需要CSS,再发起对CSS的请求。
- HTTP/2允许服务器主动向客户端推送资源。服务器可以根据客户端请求的页面,推测客户端可能需要的其他资源(如相关的CSS、JavaScript文件等),在客户端还未请求这些资源时,就主动将它们推送给客户端。这样减少了客户端再次发起请求的等待时间,加快了页面的加载速度。