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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值