【协议】【http2】
http1 做了哪些优化存在什么问题http1 没有持久的tcp 连接访问一个网页html jpg css js 等资源需要建立多个tcp 连接 访问资源每次请求都会导致两次往返延迟tcp握手和挥手如何解决的优化1keep-alive:长连接一个tcp 连接可以复用消除另一次tcp 慢启动的往返优化2 http1.1 pipling: 管道话的方式由客户端浏览器决定优先访问一些资源管道化c端可以同时发送多个请求到s,s 同时处理两个请求的资源但是s按照请求先来后到把资源返回c如果第一个请求资源阻塞住了后面所有的请求都被阻塞。管道化夭折的原因只是解决了请求发送的并行没有解决响应的并行化。1 只能严格按照请求顺序串行返回响应不允许响应交错到达2 如果第一个请求阻塞了并行发送的后边的所有请求都会阻塞。3 服务端pipeline 需要缓存资源服务端并行处理请求资源但是串行返回资源前边的资源没返回给c的时候剩下的资源需要s 自己缓存服务端资源占用太多。4 并行的几个请求中如果前边的 请求断连了那么即使s 处理了剩余的并行请求的资源c也hui重新发送所有的http 请求造成s重复处理。5 中间如果存在代理若代理不支持管道代理会拒绝这个http 请求或者导致http 请求的串行化。疑问 tcp 慢启动需要再了解tcp 连接建立的时候 tcp 窗口是一点一点的变化最终到一个合适的窗口大小tcp的启动整个过程非常慢优化3 大多数浏览器 为每个域名打开6-8个连接为了突破6个连接的限制会切分子域名提供静态资源。资源消耗比较多客户端需要和每个域名建立tcp 请求多域名的缺点针对那么多tcp 连接c 和s 都是有额外开销每个tcp 连接都要经过建立tcp 连接慢启动阶段页面加载完之后tcp 连接大多数都用不到了74%的连接仅仅处理一次请求资源消耗。整体的效率低优化4 资源组合比如把多个 js css 合并成一个文件达到建立更少的连接的目的 拼接多张图片合为一张更大的图片sprite图优化5 嵌入资源为了减少下载次数直接嵌入到网页里边。维护成本还是有点高现在很多网站都已经启动了http2 了如何禁掉命令行启动浏览器加参数 --disable-http2http2http1升级2环境搭建linux环境工具nghttp2 官网https://www.nghttp2.org/http2二进制分帧就是把原来http1中的请求和响应按照帧格式标准化成格式一样的小包裹。这些小包裹带着帧类型和流ID可以乱序发送和接受不再像http1的pipeline 一样第一个请求没有返回第二个请求的响应就会一直被阻塞真正实现了多路复用。同一个请求响应是一条流其帧的流id是一样的。帧类型 header帧和 data帧。HPACK头部压缩http中请求头很多的header字段和其值是固定的每次发请求都要重复发一次这些header数据占用的带宽较大。HPACK通过对header头部压缩达到减少header带宽的效果。HPACK压缩使用两张表一张静态表 一张动态表两张表用于存储header的字段和对应的值。每次请求值需要使用表中对应的索引即可。静态表是一张预定义的表格硬编码在http2协议中的共1-61个编号。把GET、“Host”、Content-Type这些最常用的头部字段提前编好1-61的固定编号传输时直接发编号代替整串文字。其中部分编号对应的键值对是完整的比如编号2对应:method: GET、编号16对应accept-encoding: gzip, deflatekey和value都已预定义完成。其余大部分编号的value位置为空比如编号1对应:authority、编号32对应cookie这类编号可以直接引用预定义的key再搭配自定义的value使用依然是完整的键值对条目。具体来说当编码器遇到这类头部时它会采用‌“带索引的字面量表示法”‌Indexed Name, Literal Value。以下是其存储和传输的具体步骤传输过程Key 用编号Value 用明文或哈夫曼编码在二进制帧中这个头部会被拆成两部分发送‌第一部分引用 Key‌发送静态表中该 Key 对应的‌索引编号‌。这告诉解码器“我要用的字段名是静态表里第 N 号那个”。‌第二部分传输 Value‌紧接着发送具体的 ‌Value 字符串‌。这个 Value 可以选择‌直接明文传输‌。也可以选择使用 ‌Huffman 编码‌压缩后传输通常为了节省空间都会选 Huffman 编码。是否存入动态表由编码器决定传输完这个 Key(索引) Value(字面量) 的组合后编码器会根据策略决定是否将其存入动态表这对应了 HPACK 的三种指令指令类型行为描述典型场景‌增量索引 (Incremental Indexing)‌将完整的 Key Value 作为新条目‌存入动态表‌。下次再传相同的 Cookie 时就可以直接用动态表的新索引连 Value 都不用传了。大多数普通请求希望后续复用。‌不索引 (Without Indexing)‌‌不存入‌动态表仅本次传输使用。Value 依然通过字面量发送。敏感数据如某些 Token防止侧信道攻击推断内容。‌永不索引 (Never Index)‌‌永远不存入‌动态表且标记该字段为敏感。极高安全要求的场景代理服务器通常会强制使用此模式处理 Cookie。举个直观的例子假设你要发送一个自定义 Cookiecookie: session_idabc123(1). 查找静态表‌发现 cookie 在静态表中排第 ‌32‌ 号但静态表里没有预设具体的 value。‌ (2). 编码发送‌先发送一个特殊的二进制前缀表示“我要引用静态表的 Key并附带一个新的 Value”。发送索引值 ‌32‌代表 Key 是 cookie。发送 Value session_idabc123通常会经过 Huffman 编码压缩。(3). 解码端操作‌收到索引 32从静态表取出 Key cookie。收到后面的数据解码出 Value session_idabc123。组合得到完整头部cookie: session_idabc123。(4). 更新动态表可选‌如果编码器选择了“增量索引”客户端和服务端会将 cookie: session_idabc123 这一整对存入各自的动态表。下次再发同样的 Cookie就直接发动态表的新索引比如 62只需 1 个字节。动态表是分别存储在客户端和服务器端的表格把这次请求里新出现的自定义头部临时存到双方的共享字典里下次再传直接用短编号引用原本几十上百字节的重复头部最后可能只用1-2个字节就能传完头部压缩率最高能达到90%以上弱网环境下的加载速度提升特别明显。http2服务器推送https://www.cnblogs.com/tinywan/p/8599858.html服务器推送配置server{#Ensure that HTTP/2is enabledforthe serverlisten443ssl http2;ssl_certificate ssl/certificate.pem;ssl_certificate_key ssl/key.pem;root/var/www/html;#whenevera client requests demo.html,also push#/style.css,/image1.jpg and/image2.jpg location/demo.html{http2_push/style.css;http2_push/image1.jpg;http2_push/image2.jpg;}}

相关新闻

【Linux】安装配置vsftpd(本地用户、匿名用户、虚拟用户)及vsftpd.conf配置文件详解

【Linux】安装配置vsftpd(本地用户、匿名用户、虚拟用户)及vsftpd.conf配置文件详解

1、安装 ubuntu下安装ftp sudo apt install vsftpd2、相关文件 2.1 日志 /etc/logrotate.d/vsftpd:用于Linux日志系统logrotate,记录vsftpd的日志,默认配置如下 $ cat /etc/logrotate.d/vsftpd /var/log/vsftpd.log {create 640 root adm# ftpd doesnt handle SIGHUP …

2026/8/10 16:49:04 阅读更多 →
2026年万象公文厂商排名 信创适配核心能力指标对比参考

2026年万象公文厂商排名 信创适配核心能力指标对比参考

2026万象公文厂商排名评估维度说明随着信创产业的快速发展,政企单位对智能公文工具的国产化适配、安全合规能力要求持续提升,本次2026年万象公文厂商排名针对国内信创采购需求制定,为用户选型提供客观参考。本次排名以研发实力、信创适配能力…

2026/8/10 16:49:04 阅读更多 →
建筑工程消防施工质量验收规范-幕墙相关摘录

建筑工程消防施工质量验收规范-幕墙相关摘录

建筑工程消防施工质量验收规范-幕墙相关摘录 遵循《中华人民共和国建筑法》《中华人民共和国消防法》《建筑工程质量管理条例》《建筑工程消防设计审查验收暂行规定》等文件精神,结合《建筑设计防火规范》《建筑工程施工质量验收统一标准》等现行的国家工程建设消防技术标准,…

2026/8/10 16:49:04 阅读更多 →

最新新闻

如何用Sunshine免费打造家庭游戏串流服务器:完整指南

如何用Sunshine免费打造家庭游戏串流服务器:完整指南

如何用Sunshine免费打造家庭游戏串流服务器:完整指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 还在为家里闲置的旧电脑发愁吗?想让你的老旧设备焕发新…

2026/8/10 17:35:19 阅读更多 →
SVDQuant架构革命:四位神经网络推理引擎颠覆AI绘画性能边界

SVDQuant架构革命:四位神经网络推理引擎颠覆AI绘画性能边界

SVDQuant架构革命:四位神经网络推理引擎颠覆AI绘画性能边界 【免费下载链接】ComfyUI-nunchaku ComfyUI Plugin of Nunchaku 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-nunchaku 技术革命宣言:从精度妥协到效率突破 传统AI绘画…

2026/8/10 17:34:19 阅读更多 →
Windows远程桌面多用户破解:RDPWrap配置文件完全解析与实战指南

Windows远程桌面多用户破解:RDPWrap配置文件完全解析与实战指南

Windows远程桌面多用户破解:RDPWrap配置文件完全解析与实战指南 【免费下载链接】rdpwrap.ini RDPWrap.ini for RDP Wrapper Library by StasM 项目地址: https://gitcode.com/GitHub_Trending/rd/rdpwrap.ini 你是否曾为Windows远程桌面的单用户限制而烦恼&…

2026/8/10 17:34:19 阅读更多 →
DyberPet:基于PySide6的桌面宠物框架技术深度解析

DyberPet:基于PySide6的桌面宠物框架技术深度解析

DyberPet:基于PySide6的桌面宠物框架技术深度解析 【免费下载链接】DyberPet Desktop Cyber Pet Framework based on PySide6 项目地址: https://gitcode.com/GitHub_Trending/dy/DyberPet 桌面宠物应用通常被视为简单的装饰性工具,但DyberPet重新…

2026/8/10 17:34:19 阅读更多 →
3步解锁跨平台部署:实战Comet技能分发与工作流自动化配置指南

3步解锁跨平台部署:实战Comet技能分发与工作流自动化配置指南

3步解锁跨平台部署:实战Comet技能分发与工作流自动化配置指南 【免费下载链接】comet Comet: agent skill harness for turning ideas into evaluated workflows 项目地址: https://gitcode.com/gh_mirrors/comet48/comet Comet作为一款革命性的agent skill …

2026/8/10 17:34:19 阅读更多 →
3分钟掌握Intel RealSense深度相机:从零开始构建你的视觉应用

3分钟掌握Intel RealSense深度相机:从零开始构建你的视觉应用

3分钟掌握Intel RealSense深度相机:从零开始构建你的视觉应用 【免费下载链接】librealsense RealSense SDK 项目地址: https://gitcode.com/GitHub_Trending/li/librealsense Intel RealSense深度相机是业界领先的3D视觉解决方案,为机器人、AR/V…

2026/8/10 17:34:19 阅读更多 →

日新闻

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南 【免费下载链接】graphql-css A blazing fast CSS-in-GQL™ library. 项目地址: https://gitcode.com/gh_mirrors/gr/graphql-css GraphQL-CSS是一个基于GraphQL的CSS-in-GQL™库&#xff0…

2026/8/10 0:00:02 阅读更多 →
告别语言障碍:KISS Translator 双语翻译插件终极指南

告别语言障碍:KISS Translator 双语翻译插件终极指南

告别语言障碍:KISS Translator 双语翻译插件终极指南 【免费下载链接】kiss-translator A simple, open source bilingual translation extension & Greasemonkey script (一个简约、开源的 双语对照翻译扩展 & 油猴脚本) 项目地址: https://gitcode.com/…

2026/8/10 0:00:02 阅读更多 →
BepInEx配置管理器:游戏插件配置的终极可视化解决方案

BepInEx配置管理器:游戏插件配置的终极可视化解决方案

BepInEx配置管理器:游戏插件配置的终极可视化解决方案 【免费下载链接】BepInEx.ConfigurationManager Plugin configuration manager for BepInEx 项目地址: https://gitcode.com/gh_mirrors/be/BepInEx.ConfigurationManager 你是否曾经因为游戏插件的复杂…

2026/8/10 0:00:02 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/10 1:05:29 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/10 1:05:29 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/10 1:05:29 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/10 17:07:33 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/10 1:05:29 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/10 17:07:33 阅读更多 →