所有分类
  • 所有分类
  • 未分类

HTTP1.1与HTTP2.0区别

简介

本文介绍HTTP1.1与HTTP2.0的区别。

区别

引入了服务端推送

HTTP2.0引入了服务端推送。例如我的网页有一个style.css的请求,在客户端收到sytle.css数据的同时,服务端会将style.js的文件推送给客户端,当客户端再次尝试获取style.js时就可以直接从缓存中获取到,不用再发请求了。

新的二进制格式制

HTTP1.0

HTTP1.0的解析是基于文本,基于文本协议的格式解析存在天然缺陷,文本的表现形式有多样性,要做到健壮性考虑的场景必然很多。

HTTP2.0

协议解析约定采用二进制格式制,实现方便和快捷。二进制的健壮性很好,只认识0和1的组合。

多路复用

HTTP2采用多路复用

多路复用即链接共享,每一个request都是用做链接共享机制的。一个request对应一个id,这样一个链接上可以有多个request,每个链接的request可以随机的混杂在一起,接收方可以根据request的id不同将request在归属到各自不同的服务端请求里面。简单来说就是一个tcp链接里面可以同时有多个http请求,多个请求是并行执行,当一个请求严重阻塞时,不会影响其他连接上的请求正常执行。

header压缩

HTTP1.0

HTTP1.0的header带有大量的信息,而且每次都要重复发送

HTTP2.0

HTTP2.0使用encoder来减少传输的header大小。通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。

详解

HTTP2.0中的多路复用技术和HTTP1.0的长连接复用技术有什么区别?

HTTP1.0(包括1.0)之前的版本中,所有的tcp链接都是请求一个,用完就关闭此次链接。但在HTTP1.0(不包括1.0)之后,所有的链接都是默认的长连接,请求头connection可以设置为connection:keep-alive,当请求一个页面之后,客户端和服务器之间用于传输数据的链接不会关闭,如果客户端再次访问这个服务器的网页,会继续使用这一条已经建立的链接。当然也可以关闭这一设置,connection设置为connection:close代表一个链接完成后,客户端和服务器用于传输HTTP数据的链接会关闭,如果要再次请求,则需需要重新建立链接。

HTTP1.1中用到的都是长连接复用技术,当请求一个页面之后,客户端和服务器之间用于传输数据的链接不会关闭,如果客户端再次访问这个服务器的网页,会继续使用这一条已经建立的链接。但它的缺点是如果在这一条tcp链接中有多个请求,那么只有在前面的请求完成之后,后面的请求才可以执行;若是有一个请求严重阻塞,那么后面的请求就会被阻塞。

HTTP2.0中用到的多路复用技术就缓解了上面的问题,多个请求可同时在一个tcp连接上并行执行。某个请求任务耗时严重,不会影响到其它连接的正常执行。 ​

1

评论2

请先

  1. 这里描述不精确,HTTP1.0只有短连接,1.1后才有长连接,对应原文:“HTTP1.0中用到的都是长连接复用技术”、“HTTP1.0的长连接复用技术”
    流年 2024-06-23 0
    • 是不严谨了,已修复。
      自学精灵 2024-06-23 0
显示验证码
没有账号?注册  忘记密码?

社交账号快速登录