zoukankan      html  css  js  c++  java
  • 计算机网络HTTP:HTTP/1.x 和 HTTP/2

    • WEB性能的终极目标
      • 减少到客户端的延迟,让用户能够尽可能快的打开前端网页并进行相关交互。
      • 尽可能发送少的数据给服务器,从服务器下载尽可能少的数据,尽可能减少往返(Round Trips)。
        image
    • HTTP/1.x 的缺陷
      • 线程阻塞,在同一时间,同一域名的请求有一定数量限制,超过限制数目的请求就会被阻塞。
      • HTTP/1.0
        • 缺陷:浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个用户,也不记录过去的请求。
        • 解决方法:添加头信息 --- 非标准的Connection字段Connection:keep-alive
      • HTTP/1.1
        • 改进
          • 持久连接:引入了持久连接,即TCP连接默认不关闭,可以被多个请求复用,不用声明Connection:keep-alive(对于同一个域名,大多数浏览器允许同时建立6个持久连接)
          • 管道机制:即在同一个TCP连接里面,客户端可以同时发送多个请求
          • 分块传输编码:即服务端每产生一块数据,就发送一块,采用流模式代替缓存模式
          • 新增请求方式:PUT,DELETE,OPTIONS,TRACE,CONNECT
        • 缺点
          • 虽然允许复用TCP连接,但是同一个TCP连接里面,所有的数据通信是按次序进行的。服务器只有处理完一个请求,才会接着处理下一个请求。如果前面的处理特别慢,后面就会有很多请求排队等着。这将导致“队头堵塞”。
        • 避免方式:一是减少请求数,二是同时多开持久连接。
    • HTTP/2.0
      • 特点
        • 采用二进制格式而非文本格式:HTTP/1.1的头信息是文本,数据体可以是文本也可以是二进制。HTTP/2.0头信息和数据体都是二进制。
        • 完全多路复用:HTTP/2.0复用TCP连接,在一个连接里,客户端和服务端都可以同时发送多个请求或回应,而且不用按照顺序一一对应,这样就避免了“队头堵塞”。
        • 报头压缩
          • HTTP协议无状态,导致每次请求都必须附上所以信息。所以,请求的很多头字段都是重复的,比如cookie,一样的内容每次都必须附带。
          • 对于相同的头部,不必再通过请求发送,只需发送一次。
          • 头信息使用gzip或compress压缩后再发送。
          • 客户端和服务端同时维护一张头信息表,所有字段都会存入这个表,产生一个索引号,之后就不发送同一字段了,只需发送索引号。
        • 服务器推送
          • 允许服务器未经请求,主动向客户端发送资源
          • 通过推送那些客户端将会需要的内容到客户端的缓存中,避免往返的延迟。
  • 相关阅读:
    linux查看安装文件
    mysql 查询表结构
    linux回退到上次访问目录
    正则表达式匹配所有字符包括换行符
    Spring配置文件中使用表达式
    Ext 修改Store初始化加载完后修改record属性。
    数据库锁
    C#中的多线程使用 -- Thread 类详解(转)
    div背景等比例缩小
    div添加透明边框透明背景css
  • 原文地址:https://www.cnblogs.com/xiaobaizzz/p/12301986.html
Copyright © 2011-2022 走看看