直接答案:2026-11-07 对第 104 期 13 个产品入口页各发 1 次请求(Accept-Encoding: gzip, br),13/13 返回 200,Content-Encoding 均为 gzip。13 页缓存原始 HTML 合计 1,184,145 字节,实测传输体合计 162,817 字节(159.0 KB),只占 13.7%,单页中位 17.2%。本地 gzip -9 重压合计 153,128 字节;本地 Brotli-11 估算 113,597 字节,比实测 gzip 传输体再小 30.2%,但服务器本次没有选择 Brotli。13:40 补测只声明 br:13/13 返回未压缩,0 页返回 Brotli,因此 30.2% 仍是本地估算,没有证据表明这些页面支持 Brotli。

压缩不是“有没有”,而是“省多少”:13 页全部启用了 gzip,但单页传输占比从 9.4% 到 34.5%,最高与最低相差约 3.7 倍。产品页验收如果只看原始 HTML 体积,会低估压缩差异,也会误以为“有 gzip”就等于“压到位”。

13/13
返回 gzip
162,817
实测传输字节
13.7%
传输 / 原始
0/13
br-only 返回 Brotli

方法:一次真实协商 + 一次本地重压

样本为第 104 期的 13 个产品入口页缓存(2026-11-01 采集;P04/P14 无产品链接)。2026-11-07 12:41 起逐页请求一次,暴露的 Accept-Encoding 为 gzip, br;记录 HTTP 状态、Content-Encoding、Content-Type、传输体字节、按编码解码后的字节。请求间隔 1.5 秒,单页单次,不并发。

本地重压只针对缓存的原始文件:gzip 用 -9,Brotli 用 quality=11,是“上限估算”,不是服务器实际发送。传输体字节是 HTTP 消息体长度,不含 TLS/TCP 头;没有测 TTFB、缓存命中或 CDN 回源。

13:40 复测:每页先只声明 Accept-Encoding: br,再声明 gzip, br;br-only 是能力测试,不替代正常浏览器协商。两次请求间隔约 60 分钟,单页顺序请求。

项口径边界
实测传输一次 GET 的响应消息体字节不含 TLS/TCP 头
解码后字节按 Content-Encoding 解压后的 HTML 字节与缓存原始文件比较
本地 gzip / Brotli缓存文件重压,gzip -9 / Brotli-11实验室估算,不是线上实际
缓存一致解码后字节与 2026-11-01 缓存完全相同仅字节,不比较 DOM

结果:13/13 gzip,传输体只有原始 13.7%

指标合计 / 中位占缓存原始
HTTP 20013 / 13—
Content-Encoding: gzip13100%
Content-Encoding: br00%
br-only 返回 br00%
br-only 返回未压缩13100%
缓存原始字节1,184,145100%
实测传输体162,81713.7%
1 小时 gzip 复测传输体162,81913.7%
复测与 12:41 差+2 B0.0%
单页传输占比中位17.2%—
本地 gzip -9153,12812.9%
本地 Brotli-11113,5979.6%
Brotli 相对实测 gzip113,597 / 162,817再省 30.2%
解码后与缓存完全一致10 / 13 页—

注意分母:第 106 期拆分按解析后换行归一化计 1,179,680 字节;本轮按缓存原始文件计 1,184,145 字节,两者差 4,465 字节(0.4%),来自 CRLF/LF 差异。本文的“原始字节”均指缓存文件原始大小,以便和实测解码字节逐页对齐。

逐页结果(13 页)

页缓存 KB传输 KB传输 %gzip -9Brotli -11缓存一致
P017.92.733.9%33.9%23.6%是
P02232.422.09.4%7.4%5.2%是
P03159.313.726.9%11.5%8.1%否(-110,967 B)
P05158.018.411.7%9.8%7.1%否(-92 B)
P06100.717.016.8%16.6%12.9%是
P0793.815.816.9%15.0%10.9%是
P0829.57.826.6%23.9%18.8%是
P0941.17.117.2%16.6%13.0%是
P1014.83.523.4%23.4%17.2%是
P1194.915.716.5%14.1%10.4%否(-16 B)
P1213.44.634.5%26.3%19.9%是
P13170.423.213.6%13.6%10.4%是
P1540.27.619.0%18.8%14.5%是

三个尾巴:P12 原始只有 13.4 KB,传输占比 34.5%,是小页里最差的;P01 7.9 KB / 33.9% 同样说明小页更难压。P02 原始 232.4 KB,传输只占 9.4%,大页里的重复空白/markup 反而更容易压。P03 的缓存一致为“否”,实测解码后只有 52,121 字节(比缓存少 110,967),说明页面内容已经变化,它的 26.9% 不能和缓存重压率直接对比。

“有 gzip”不等于“压到最省”

在 10 个解码后与缓存完全一致的页面里,实测 gzip 传输体合计 113,904 字节,本地 gzip -9 为 104,780 字节,实测比本地 -9 高 8.7%。分页看,多数页面接近 100%(P01 100.1%、P10 100.0%、P13 100.4%),但 P12 为 131.0%、P02 为 126.8%、P07 为 112.1%、P08 为 111.3%。这可能与服务器压缩级别或实现有关;本轮没有读取服务器配置,不能断言原因,但可以说明“启用 gzip”之后仍有压降空间。

Brotli 的 30.2% 是本地 -q 11 对同一批缓存文件的估算。服务器在 gzip, br 同时可用时全部选择 gzip;13:40 只声明 br 时,13/13 又全部返回未压缩,0 页返回 br。这个数字只能作为“如果启用 Brotli”的上限参考,不能写成线上已省,也没有证据表明这 13 页支持 Brotli;若要上线 Brotli,需要服务器/CDN 侧配置后再测。

1 小时复测:gzip 稳定,br-only 全部未压缩

2026-11-07 13:40 对同一批 13 页复测:先只声明 Accept-Encoding: br,再声明 gzip, br。结果 0/13 返回 br,13/13 的 br-only 响应没有 Content-Encoding,直接发送未压缩 HTML;而 gzip, br 仍是 13/13 gzip。

br-only 合计传输体 1,073,070 字节,是 gzip 复测 162,819 字节的 6.6 倍。正常浏览器通常同时声明 gzip,所以这不是普通用户路径;但它说明不能假设“服务器会自动用 Brotli 兜底”。gzip 复测合计仅比 12:41 多 2 字节,13/13 解码字节与 12:41 完全一致,1 小时内内容稳定。

页br-only 编码br-only KBgzip 复测 KB与 12:41 差解码一致
P01未压缩7.92.70是
P02未压缩232.421.9-1是
P03未压缩50.913.7+4是
P05未压缩157.918.40是
P06未压缩100.717.00是
P07未压缩93.815.80是
P08未压缩29.57.8+1是
P09未压缩41.17.1+1是
P10未压缩14.83.5-1是
P11未压缩94.915.70是
P12未压缩13.44.6-2是
P13未压缩170.423.20是
P15未压缩40.27.60是

与首页、文章页的压缩对照

样本编码分布传输占比中位样本框
13 个产品页gzip 13;br-only 017.2%第 104 期产品入口页
14 个首页gzip 12 / br 1 / 未压缩 121.0%首页 pilot
10 篇文章页gzip 1026.9%文章页 live 子样本

三组样本框不同、采集时间也可能不同,不能把中位差当成“页面类型效应”。能确定的是:本批产品页的 gzip 覆盖是 13/13,但单页压缩率差异很大;拿一个全站平均值去验收具体页面,会掩盖小页高占比和大页低占比。

对验收的启示

  1. 验收看 wire/decoded,不只看原始 HTML。 同一批 1.18 MB 原始文件,实际传输 159 KB;只报原始体积会高估负担。
  2. 确认编码协商。 用同一 UA 发 Accept-Encoding: gzip, br,记录实际 Content-Encoding;本次补测 br-only 为 0/13 返回 br、13/13 未压缩,验收应同时测两种声明。
  3. 检查压缩级别/实现。 10 个一致页面里实测 gzip 比本地 -9 高 8.7%;P12、P02 超过 26%,值得问服务器或 CDN 配置。
  4. 小页也要看比例。 P01/P12 传输占比 33.9%/34.5%,小页的固定开销更明显,不能只优化大页。
  5. 把内容变化排除。 P03 解码字节少了 110,967,压缩率对比失效;改版后应重新取缓存再算。

局限

  • 13 页 pilot:第 104 期同一批产品入口页;不是全站产品页,也不外推行业。
  • 请求次数有限:12:41 每页 1 次,13:40 复测每页 2 次;未测更长时间、CDN 命中或地区差异。
  • br-only 已测但范围有限:0/13 返回 br、13/13 未压缩;只能说明这 13 页在两次请求下的行为,不能推断所有路径或 CDN。
  • 本地重压是估算:gzip -9 / Brotli-11 是实验室上限,不等于线上配置,也没有测 CPU 成本。
  • 字节口径有限:只算 HTTP 消息体,不含 TLS/TCP 头、请求头、DNS、TTFB 或渲染。
  • 内容快照:2026-11-01 缓存;P03/P05/P11 与缓存有差异;1 小时复测中 13/13 解码字节与 12:41 一致。

数据与复算

匿名数据:首测 equipment-product-entry-html-compression-2026.csv(13 行 × 16 列);1 小时复测 equipment-product-entry-html-compression-recheck-2026.csv(13 行 × 13 列:br-only 编码/字节、gzip 复测字节、相对首测差、解码一致性)。仓库内分别为 docs/research/2026-11-product-entry-html-compression.csv 与 docs/research/2026-11-product-entry-html-compression-recheck.csv。

解析:scripts/article_html_compression_probe.py(live 记录协商与 wire/decoded;local 做 gzip -9 / Brotli-11 重压);单测 scripts/test_article_html_compression_probe.py(7 项)。运行:

python -m unittest discover -s scripts -p "test_article_html_compression_probe.py"

配套:产品入口页 HTML 体积组成 pilot、产品入口页图片交付 pilot、首页 HTML 压缩 pilot。

数据来源与口径

  1. 样本:第 104 期 13 个产品入口页缓存(2026-11-01 采集;P04/P14 无产品链接)。
  2. 实测:2026-11-07 12:41(Asia/Shanghai)逐页 1 次 GET,Accept-Encoding: gzip, br,间隔 1.5 秒。
  3. 本地重压:缓存原始文件,gzip -9 / Brotli-11;站点与产品 URL 不公开。

常见问题

13/13 返回 gzip,说明服务器不支持 Brotli 吗?

不能。正常协商时 13/13 选择 gzip;2026-11-07 13:40 只声明 br 时,13/13 返回未压缩,0 页返回 br。这 13 页没有表现出 Brotli 支持,但仍不能推断所有路径或 CDN。

162,817 字节和 1.18 MB 是什么关系?

1,184,145 是缓存原始 HTML;162,817 是实测 HTTP 消息体。两者相除为 13.7%,不是 1.18 MB 被“删除”,而是压缩后的传输大小。

为什么 P03 的传输占比不能和缓存比?

P03 解码后只有 52,121 字节,比缓存少 110,967,页面内容已经变化;它的 26.9% 是当天新内容的压缩率,不是缓存文件的重压率。

本地 Brotli 的 30.2% 能直接写成线上节省吗?

不能。Brotli-11 是对缓存文件的实验室重压;br-only 补测中 0/13 返回 br,30.2% 只是“如果启用”的上限,未验证部署和 CPU 成本。

有 gzip 还需要优化吗?

需要看级别。10 个内容一致的页面里,实测 gzip 合计比本地 -9 高 8.7%;P12/P02 分别高 31.0%/26.8%,可能存在压缩级别或实现差异。

1 小时复测稳定吗?

2026-11-07 13:40 复测:13/13 仍 gzip,解码字节与 12:41 全部一致;传输体合计 162,819 字节,比 12:41 多 2 字节,单页变化 -2~+4 字节。

数据能复核吗?

可以。13 行 × 16 列首测 CSV、13 行 × 13 列复测 CSV,以及 7 项无网络压缩/解码单测都在仓库内;不公开站点与产品 URL。

关于作者

凌壹信息Official(交付团队),负责企业网站、品牌与智能制造项目的需求梳理、方案与验收协作。本文只测 13 个产品入口页的 HTTP 传输字节与本地重压估算,不测渲染、TTFB、CDN 命中或服务器配置;13 页 pilot,不外推行业。

13 页全部 gzip,但差距在压缩率

缓存 1.18 MB,实测传输 159 KB;单页 9.4%–34.5%。

预约内容验收方案