• http2新特性


    1.二进制分帧
     
    http1.x是文本格式传输,http2二进制格式传输,并且被切分未过个帧发送,帧可以根据头部流标识重新组装。
     
    2. 单一长连接
     
    同一个域名使用一个TCP连接,(http1.x 使用6-8个TCP连接,浏览器为减少消耗,进行的限制),无论请求多少个资源,能减少握手带来的延时,减少创建多个TCP连接
    带来的网络开销,提高吞吐量
     
    3. 多路复用
     
    http1.x相当于单车道,同一个连接上的请求串行执行
     
    http2相当于多车道,同一个连接上的请求可以并行执行。由于请求被二进制分帧,每个帧都有流编号。同一个请求和响应的帧必须是有序的,不同的请求的帧可以互相穿插。然后按照流编号重组。
     
    4.头部压缩
     
    用HPACK压缩头部,使用首部表来进行首部字段存储,只有当首部表中的数据变更或为发送过时,才会发送http头部字段。
    首部表分为静态表和动态表,静态表包含常用字段,动态表包含自定义字段等非常用字段,当新增或改变字段时,会增加或修改动态表中的数据。
    http请求和响应都是由【状态行、请求/响应头部、消息主题】三部分组成的。 一般而言,消息主体都会经过gzip压缩,或者本身传输的就是压缩过后的二进制文件(如图片、音频等),但是状态行和头部多是没有经过任何压缩,而是直接以纯文本的方式进行传输的。
    然而,随着web功能越来越复杂,请求数量越来越多,随之而来的就是头部的流量越来越多,并且在建立初次链接之后的链接也要发送user-agent等信息,是在是一种浪费。
    因此,http2提出了对请求和响应的头部进行压缩,即不再只是压缩主题部分,这种压缩方式就是HAPCK --- 其设计简单而灵活。
    通过压缩,头部大小可以减少一半之多,如果后面重复发送请求,那么可能压缩后的头部大小只有原始大小的 1/10。
     
    5.服务端推送
     
    客户端请求资源X,服务端判断客户端还需要别的资源,可以主动推送这些资源。客户端需要显式允许服务器启用推送功能。并且,客户端可以发送一个RST_STREAM帧来中断推送流,推送受同源策略限制
     
    例如,请求index.html页面时,服务器同时将index.js和index.css push给浏览器,当浏览器
    解析html到请求index.css和index.js时,可以直接从缓存中读取
     

  • 相关阅读:
    Ubuntu 12.04 root用户登录设置
    E: 无法获得锁 /var/lib/dpkg/lock open???
    每日英语:HardWired To Hate Exercise?
    每日英语:How to say No to other people
    每日英语:Family Inc.
    每日英语:An Unhappy Middle in the Middle Kingdom
    每日英语:How Many People Really Use Sina Weibo
    每日英语:The Deeply Odd Lives of Chinese Bureaucrats
    每日英语:The Tyranny Of The Queen Bee
    每日英语:Economist: China Plenty Creative, Just Not in Right Ways
  • 原文地址:https://www.cnblogs.com/mengff/p/6804799.html
Copyright © 2020-2023  润新知