http2新特性

1.二进制分帧

http1.x是文本格式传输,http2二进制格式传输,并且被切分未过个帧发送,帧可以根据头部流标识重新组装。

2. 单一长连接

同一个域名使用一个TCP连接,(http1.x 使用6-8个TCP连接,浏览器为减少消耗,进行的限制),无论请求多少个资源,能减少握手带来的延时,减少创建多个TCP连接

带来的网络开销,提高吞吐量

3. 多路复用

http1.x相当于单车道,同一个连接上的请求串行执行

http2相当于多车道,同一个连接上的请求可以并行执行。由于请求被二进制分帧,每个帧都有流编号。同一个请求和响应的帧必须是有序的,不同的请求的帧可以

互相穿插。然后按照流编号重组。

4.头部压缩

用HPACK压缩头部,使用首部表来进行首部字段存储,只有当首部表中的数据变更或为发送过时,才会发送http头部字段。

首部表分为静态表和动态表,静态表包含常用字段,动态表包含自定义字段等非常用字段,当新增或改变字段时,会增加或修改动态表中的数据。

5.服务端推送

客户端请求资源X,服务端判断客户端还需要别的资源,可以主动推送这些资源。客户端需要显式允许服务器启用推送功能。并且,客户端可以发送一个RST_STREAM

帧来中断推送流,推送受同源策略限制

例如,请求index.html页面时,服务器同时将index.js和index.css push给浏览器,当浏览器

解析html到请求index.css和index.js时,可以直接从缓存中读取

时间: 2024-10-06 00:03:17

http2新特性的相关文章

关于 HTTP2 新特性

Binary Frames HTTP2 在TCP层之上 HTTP下增加了Binary Frames协议, 基于该协议HTTP Request/Response 可以被分拆成由Frame组成的Stream在TCP上传输. Header Compression -- HPACK 使用HPACk压缩http header成二进制格式,使用静态和动态索引表来压缩Header内容. 对动态header value使用huffman算法编码成二进制格式. 详细信息可以参考: Static Table Def

apache2.4:apache的安装及其新特性

小生博客:http://xsboke.blog.51cto.com 小生 Q Q:1770058260 -------谢谢您的参考,如有疑问,欢迎交流 一. Apache2.4新特性 1. 新增模块 Mod_proxy_fcgi:提供fcgi代理 Mod_ratelimit:限制用户带宽 Mod_request:过滤客户机请求 Mod_remoteip:匹配客户端的IP 2. 新特性 Mpm(工作模式):支持工作模式在apache运行时更改 但是要开启这种特性,在编译安装要启用这三种功能:--e

httpd2.4的新特性、以及基本应用

httpd-2.4: 新特性: (1) MPM支持运行为DSO机制:以模块形式按需加载: (2) event MPM生产环境可用: (3) 异步读写机制: (4) 支持每模块及每目录的单独日志级别定义: (5) 每请求相关的专用配置: (6) 增强版的表达式分析式: (7) 毫秒级持久连接时长定义: (8) 基于FQDN的虚拟主机也不再需要NameVirutalHost指令: (9) 新指令,AllowOverrideList: (10) 支持用户自定义变量: (11) 更低的内存消耗: 新模块

[PHP7.0-PHP7.2]的新特性和新变更

php7发布已经升级到7.2.里面发生了很多的变化.本文整理php7.0至php7.2的新特性和一些变化. 参考资料: http://php.net/manual/zh/migration70.new-features.php http://php.net/manual/zh/migration71.new-features.php http://php.net/manual/zh/migration72.new-features.php PHP7.0 PHP7.0新特性 1. 组合比较符 (<

JDK 5 ~ 10 新特性倾情整理!

JDK 5 ~ 10 新特性倾情整理! 最近连 JDK11都在准备发布的路上了,大家都整明白了吗?也许现在大部分人还在用6-8,8的新特性都没用熟,9刚出不久,10-11就不用说了. 为了大家对JDK有一个全面的了解,下面我为大家整理了JDK5~10的所有关键新特性! JDK5新特性 自动装箱与拆箱 枚举 静态导入 可变参数(Varargs) 内省(introspector) 泛型(Generic) For-Each循环 JDK6新特性 Desktop类和SystemTray类 使用JAXB2来

ygRan Java1.0-1.11各个版本的新特性

JDK Version 1.01996-01-23 Oak(橡树) 初代版本,伟大的一个里程碑,但是是纯解释运行,使用外挂JIT,性能比较差,运行速度慢. JDK Version 1.11997-02-19 JDBC(Java DataBase Connectivity);支持内部类;RMI(Remote Method Invocation) ;反射;Java Bean;JDK Version 1.21998-12-08 Playground(操场) 集合框架;JIT(Just In Time)

Java 9 逆天的十大新特性

在介绍 Java 9 之前,我们先来看看 Java 成立到现在的所有版本. 1990 年初,最初被命名为 Oak:1995 年 5 月 23 日,Java 语言诞生:1996 年 1 月,第一个 JDK-JDK 1.0 诞生:1996 年 4 月,10 个最主要的操作系统供应商申明将在其产品中嵌入 Java 技术:1996 年 9 月,约 8.3 万个网页应用了 Java 技术来制作:1997 年 2 月 18 日,JDK 1.1 发布:1997 年 4 月 2 日,JavaOne 会议召开,参

Java1.0-1.12各个版本的新特性

JDK Version 1.0 1996-01-23 Oak(橡树) 初代版本,伟大的一个里程碑,但是是纯解释运行,使用外挂JIT,性能比较差,运行速度慢. JDK Version 1.1 1997-02-19 JDBC(Java DataBase Connectivity);支持内部类;RMI(Remote Method Invocation) ;反射;Java Bean; JDK Version 1.2 1998-12-08 Playground(操场) 集合框架;JIT(Just In T

Java 9 新特性

Java 9 发布于 2017 年 9 月 22 日,带来了很多新特性,其中最主要的变化是已经实现的模块化系统.接下来我们会详细介绍 Java 9 的新特性. Java 9 新特性 模块系统:模块是一个包的容器,Java 9 最大的变化之一是引入了模块系统(Jigsaw 项目). REPL (JShell):交互式编程环境. HTTP 2 客户端:HTTP/2标准是HTTP协议的最新版本,新的 HTTPClient API 支持 WebSocket 和 HTTP2 流以及服务器推送特性. 改进的