讲解与对于不同版本之间的区别
Http1.0和http1.1的区别
• 缓存处理:1.1较1.0相比缓存的策略更加的灵活
• 节约带宽:在1.1中添加了range字段,可以请求资源的部分内容,这使得开发者可以线程的请求某一资源。从而重新的利用带宽资源进行高效的并发
• 错误请求的管理:1.1较1.0新增了24个状态码
• Host 请求头:早期的服务器,都是一个机器处理单一的任务,所以可以直接用ip进行标识,但是后面有了虚拟机过后,一个主机可以有多个虚拟机,然后这个时候我们为了支持这个虚拟主机,1.1就增加了host请求头
• 长连接:
HTTP/1.0 默认浏览器和服务器之间保持短暂连接,浏览器的每次请求都需要与服务器建立一个 TCP 连接,服务器完成后立即断开 TCP 连接。HTTP/1.1 默认使用的是持久连接,其支持在同一个 TCP 请求中传送多个 HTTP 请求和响应。此之前的 HTTP 版本的默认连接都是使用非持久连接,如果想要在旧版本的 HTTP 协议上维持持久连接,则需要指定 Connection 的首部字段的值为 Keep-Alive。
Http 1.X和http 2.0的区别
• 二进制传送:
之前版本 数据都是用文本传输,因为文本有多种格式,所以不能很好地适应所有场景; 2.0传送的是二进制,相当于统一了格式
• 多路复用:
1.1虽然默认复用TCP连接,但是每个请求是串行执行的,如果前面的请求超时,后面的请求只能等着(也就是线头阻塞); 2.0的时候每个请求有自己的ID,多个请求可以在同一个TCP连接上并行执行,不会互相影响
• header压缩:
每次进行HTTP请求响应的时候,头部里很多的字段都是重复的,在2.0中,将字段记录到一张表中,头部只需要存放字段对应的编号就行,用的时候只需要拿着编号去表里查找就行,减少了传输的数据量
• 服务端推送:
服务器会在客户端没发起请求的时候主动推送一些需要的资源,比如客户端请求一个html文件,服务器发送完之后会把和这个html页面相关的静态文件也发送给客户端,当客户端准备向服务器请求静态文件的时候,就可以直接从缓存中获取,就不需要再发起请求了