HTTP/1.0和HTTP/1.1的区别

HTTP1.1 新改动

  • 持久连接

  • 请求管道化

  • 增加Host字段

  • 支持断点传输

1. 持久连接:

HTTP1.0最显著的特点是短连接,每次与服务器的交互都要重新开一个连接。而HTTP是基于TCP协议的,每次连接都要经历三次握手,四次挥手,慢启动…是非常消耗资源的。HTTP1.1设置connection:keep-alive

2. 管线化理论

HTTP1.0中,发送一次请求时,必须等服务器响应了才能继续发送请求。

HTTP1.1提出了管线化理论(Pipelining),即客户端可以同时发送多个HTTP请求,而不用等一个个响应之后再请求。其实就是把多个HTTP请求放在一个TCP连接中一一发送,而在发送过程中不需要服务器对前一个请求作出响应。但是!客户端还是要按照发送请求开接收响应。

注意,这个plpelining只是限于理论场景下,默认还是关闭的。

3. 增加Host字段

用来指定服务器域名

4. 支持断点传输

引入了Chunked transfer-coding 范围请求,支持断点传输(实际上利用的是HTTP消息头使用分块传出编码,将实体分块传输)

⭐⭐⭐无论是HTTP1.0还是HTTP1.1都会出现队头阻塞的情况

HTTP2.0的改动

  • 多路复用
  • 二进制分帧
  • 头部压缩
  • 服务器推送

1.多路复用

HTTP2.0与HTTP1.1最重要的区别就是解决了队头阻塞的问题。其中,最终要的改动就是多路复用

多路复用允许一个HTTP连接发起多个请求-响应消息。使用了HTTP/2可能是这样的:
在这里插入图片描述

2. 二进制分帧

HTTP2所有性能增强的核心在于新的二进制分帧层(不再以文本形式传输)在这里插入图片描述
HTTP2就是把HTTP1的header和body用frame重新封装了一下。将请求头和header封装为headers frame,将body封装为data frame。

3. 头部压缩

在 HTTP/1 中,HTTP 请求和响应都是由「状态行、请求 / 响应头部、消息主体」三部分组成。一般而言,消息主体都会经过 gzip 压缩,或者本身传输的就是压缩过后的二进制文件(例如图片、音频),但状态行和头部却没有经过任何压缩,直接以纯文本传输。

随着 Web 功能越来越复杂,每个页面产生的请求数也越来越多,根据 HTTP Archive 的统计,当前平均每个页面都会产生上百个请求。越来越多的请求导致消耗在头部的流量越来越多,尤其是每次都要传输UserAgent、Cookie 这类不会频繁变动的内容,完全是一种浪费。

讲的很详细的一篇博客:https://blog.csdn.net/qq_32523587/article/details/79970471

4.服务器推送

HTTP/2允许服务器在请求之前先推送响应信息到客户端(之前客户端有过请求),如果实现了HTTP缓存,推送的响应信息可以在客户端被缓存(可通过no-cache进行配置)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值