在 http1.x 中,为了性能考虑,通常会引入雪碧图、将小图内联、使用多个域名等方式,这一切是因为浏览器限制了同一个域名下的请求数量,由于页面需要请求很多资源,对头阻塞会导致在达到最大的请求量时,剩余的请求资源得等到其他资源请求完成之后才能发起请求。
而在 http2.0 中,因为引入了多路复用
,做到同一个连接并发处理多个请求,而且并发请求的数量比 HTTP1.1 大了好几个数量级。
http1.0 需要使用 keep-alive 参数告知服务器建立一个长连接,但是 http1.1 默认支持长连接
http1.x 都是通过文本的形式传输数据,在 http2.0 中引入了新的编码机制,所有的传输数据都会被分割,并采用二进制格式编码
在 http2.0 中,服务端可以在客户某个请求后,主动推送其他资源。比如某些资源客户端一定是会请求的,这时候可以采用服务端的push技术
,提前给客户端推送必要的资源,这样减少延迟时间。
http1.x 中,以文本的形式传输 header,在 header 携带 cookie 情况下,可能每次都需要重复传输几百到几千的字节
在 http2.0 中,使用了 HPACK 压缩格式对传输的 header 进行编码,减少了 header 的大小。在网络中传输会更快。