• HTTP1和HTTP2的区别


    1. Http1.x
    缺陷:线程阻塞,在同一时间,同一域名的请求有一定数量限制,超过限制数目的请求会被阻塞。

    2. Http1.0(短连接)
    缺陷:浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接(TCP连接的新建成本很高,因为需要客户端和服务器三次握手),服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求;
    解决方案:添加头信息——非标准的Connection字段Connection: keep-alive

    3. Http1.1
    改进点:

    持久连接(与Http1其它版本的最大区别)
    引入了持久连接,即TCP连接默认不关闭,可以被多个请求复用,不用声明Connection: keep-alive(对于同一个域名,大多数浏览器允许同时建立6个持久连接)
    管道机制
    即在同一个TCP连接里面,客户端可以同时发送多个请求。
    分块传输编码
    即服务端每产生一块数据,就发送一块,采用”流模式”而取代”缓存模式”。
    新增请求方式
    PUT:请求服务器存储一个资源;
    DELETE:请求服务器删除标识的资源;
    OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求;
    TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断;
    CONNECT:保留将来使用
    缺点:
    虽然允许复用TCP连接,但是同一个TCP连接里面,所有的数据通信是按次序进行的。服务器只有处理完一个请求,才会接着处理下一个请求。如果前面的处理特别慢,后面就会有许多请求排队等着。这将导致“队头堵塞”
    避免方式:一是减少请求数,二是同时多开持久连接

    4. Http/2.0
    特点:

    采用二进制格式而非文本格式;
    完全多路复用,而非有序并阻塞的、只需一个连接即可实现并行;(解决了线头阻塞的问题,与Http1最重要的区别)
    使用报头压缩,降低开销
    服务器推送
    4.1 二进制协议
    HTTP/1.1 版的头信息肯定是文本(ASCII编码),数据体可以是文本,也可以是二进制。HTTP/2 则是一个彻底的二进制协议,头信息和数据体都是二进制,并且统称为”帧”:头信息帧和数据帧。
    二进制协议解析起来更高效、“线上”更紧凑,更重要的是错误更少。

    4.2 完全多路复用
    HTTP/2 复用TCP连接,在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,而且不用按照顺序一一对应,这样就避免了”队头堵塞”。

    4.3 报头压缩
    HTTP 协议是没有状态,导致每次请求都必须附上所有信息。所以,请求的很多头字段都是重复的,比如Cookie,一样的内容每次请求都必须附带,这会浪费很多带宽,也影响速度。
    对于相同的头部,不必再通过请求发送,只需发送一次;
    HTTP/2 对这一点做了优化,引入了头信息压缩机制;
    一方面,头信息使用gzip或compress压缩后再发送;
    另一方面,客户端和服务器同时维护一张头信息表,所有字段都会存入这个表,产生一个索引号,之后就不发送同样字段了,只需发送索引号。
    4.4 服务器推送
    HTTP协议通常承载于TCP协议之上,在HTTP和TCP之间添加一个安全协议层(SSL或TSL),这个时候,就成了我们常说的HTTPS.

  • 相关阅读:
    win7网络共享原来如此简单,WiFi共享精灵开启半天都弱爆了!
    JQUERY UI Datepicker Demo
    Official online document, install svn server in centOS
    JAVE not work in linux
    AMR 转mp3 失败
    XD, XR, DR 股票
    Linux 下MySql 重置密码
    Difinition Of Done
    Apache, Tomcat, JK Configuration Example
    Linux 安装tomcat
  • 原文地址:https://www.cnblogs.com/gxw123/p/13288957.html
Copyright © 2020-2023  润新知