http1.0、http1.1、http2.0

http1.0和http1.1的区别

  1. 长连接
    http1.1支持长连接和请求的流水线处理,在一个TCP链接上可以传送多个http请求和相应,减少了建立和关闭连接的消耗和延迟,在http1.1中默认开启长连接keep-alive,一定程度上弥补了http1.0每次请求都要创建连接的缺点。http1.0需要使用keep-alive参数告诉服务器端要建立一个长连接。
  2. 节约带宽
    http1.0中存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象都传送过来,且不支持断点续传的功能。http1.1支持只发送header信息,当服务器校验认为客户端有权限访问时返回100,客户端接收到100后才开始把请求body发送到服务器。如果返回401客户端就可以不用发送body了,从而节省带宽。
  3. Host域
    http1.0中认为每台服务器都绑定一个唯一的ip地址,请求消息中的url没有传递主机名(hostname)。随着虚拟主机的发展,一台物理服务器上可以存在多个虚拟主机并且共享一个IP地址。HTTP1.1多请求和响应消息都支持host域,并且如果请求消息中没有host域会报错(400 bad request)
  4. 缓存处理
    在http1.0中主要食用header里的If-Modified-Since,Expires作为缓存判断的标准,http1.1中引入了更多的缓存控制策略如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略
  5. 错误通知的管理
    http1.1新增了24个状态响应码

http1.1 和 http2.0的区别

  1. 多路复用
    http2.0采用了多路复用的技术,做到同一个连接并发处理多个请求,并且并发请求的数量比http1.1大好几个数量级。http1.1也可以通过建立多个tcp链接来实现并发请求,但是tcp链接有资源消耗。
  2. 头部数据压缩
    http1.1中,http请求和响应都是由状态行,请求/响应头部,消息主体三部分组成。
    一般而言消息主体会经过gzip压缩,或者本身传输的就是压缩过的二进制文件,但是状态行和头部没有经过任何压缩,直接以纯文本的形式传输。随着web功能越来越复杂,尤其是每次都要传输UserAgent,cookie等不会频繁变动的内容,完全是一种浪费。
    http2.0使用HPACK算法对header对数据进行压缩,这样数据体积小了在网络上传输就会更快
  3. 服务器推送
    服务器推送是一种在客户端请求之前发送数据的机制。
    网页使用了很多的资源,HTML,样式表,脚本,图片等等。在http1.1中这些资源每一个都必须明确的请求,这是个很慢的过程。浏览器从获取HTML开始然后在它解析和评估页面的时候增量的获取更多的资源。因为服务器必须等待浏览器做每一个请求,网络经常是空闲的和未经过充分使用的。
    http2.0引入了server push。它允许服务端在浏览器明确的请求之前推送资源给浏览器,这样客户端可以直接从本地加载这些资源,不用再次创建连接发送请求到服务端获取
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值