直接答案:25 个首页中,只有 1 个用正 max-age 明确允许缓存(300 秒);8 个声明 no-store、8 个 private 或 no-cache、8 个完全没有 Cache-Control。Expires 只有 6 个站点返回,且全部早于抓取时间;ETag 与 Last-Modified 各 4 个。主动请求压缩后,24/25 返回 gzip 或 Brotli(gzip 23、br 1、无压缩 1),22 个声明 Vary: Accept-Encoding。

本期只读响应头与最多 1 KB 响应体,不解压、不保存正文;缓存策略不等于性能得分。

25
可用首页
1
明确可缓存
8
无 Cache-Control
24
返回压缩
22
Vary: Accept-Encoding
4
ETag

方法:显式请求压缩,只读头

沿用第 4 期 25 个首页,2026-11-03 12:40–12:41 串行请求,站间 ≥0.8 秒,UA 标明研究用途。请求头带 Accept-Encoding: gzip, deflate, br,只读响应头与最多 1 KB 响应体,不解压。

26 个候选 URL 中 25 个最终返回 200;E21 连续三次 502,未计入。其余 3 个首次失败(502 或 SSL EOF)在重试后恢复 200。

项判定边界
可缓存Cache-Control 含正 max-age只按字面值,不验证缓存命中
no-store含 no-store,优先于 max-age可能是个性化或登录态所需
private / no-cache含 private 或 no-cache,且无正 max-age—
未声明没有 Cache-Control不推断不可缓存
压缩本次请求实际返回的 Content-Encoding不测试压缩级别与解压后大小
Expires 过期Expires 早于抓取时间只对存在的 6 个站点判断

结果:缓存策略几乎全部“不可共享”

Cache-Control 策略站点数占 25
no-store832.0%
private 或 no-cache(无正 max-age)832.0%
未声明832.0%
正 max-age(300 秒)14.0%

“未声明”不等于“不可缓存”:共享缓存可能按启发式规则缓存;但站点没有给出明确有效期,CDN 与浏览器只能自行判断。明确 no-store 的 8 个站点则要求完全不存储。

项站点数说明
出现 max-age21 个为 300 秒,1 个为 0
Expires6全部早于抓取时间
ETag416.0%
Last-Modified416.0%,与第 26 期一致

没有 ETag 或 Last-Modified 的页面,缓存只能按时间猜测何时重新获取;这与第 26 期“21/25 无 Last-Modified”的结论一致。

压缩:24/25 有压缩,Brotli 只有 1 个

Content-Encoding站点数占 25
gzip2392.0%
br(Brotli)14.0%
无压缩14.0%
deflate00%
传输相关站点数说明
Vary 含 Accept-Encoding2288.0%
Vary 缺失3压缩仍可能返回,但缓存区分不足
Transfer-Encoding: chunked16—
Content-Length9与 chunked 互补,共 25
CDN 标记(X-Cache/Via)2仅按头名识别

压缩已接近普及:请求带 Accept-Encoding 时,24 个站点返回压缩内容。差异在算法:23 个只用 gzip,只有 1 个返回 Brotli。Vary 缺失的 3 个站点,遇到共享缓存时可能把压缩版本发给不支持压缩的客户端。

对验收的启示

  1. 首页是否允许缓存要写成明确策略。 25 个站点只有 1 个给出正 max-age;8 个明确 no-store。
  2. 区分 no-store 与未声明。 no-store 是明确要求,未声明只是把判断留给缓存。
  3. 校验器与日期头一起查。 只有 4 个站点有 ETag,4 个有 Last-Modified;两者都没有时,重验证只能靠时间。
  4. Vary 要跟随压缩。 22 个站点声明了 Accept-Encoding,3 个没有;压缩版本必须能被缓存正确区分。
  5. Brotli 仍可优化。 24 个压缩站点中只有 1 个用 br,其余为 gzip;是否启用取决于 CDN 与客户端支持。

局限

  • 单次请求:2026-11-03 12:40–12:41 抓取一次,CDN/WAF 可能按地区或时间返回不同策略。
  • 只读响应头:不验证浏览器与中间缓存的实际命中率,不测压缩后字节数。
  • no-store 可能合理:登录态、个性化或合规要求都可能导致 no-store,本期不判断对错。
  • 未声明不等于不可缓存:共享缓存可使用启发式规则;本期只记录站点是否给出明确指令。
  • 25 家 pilot:不外推行业。

数据与复算

匿名数据:equipment-cache-compression-2026.csv(25 行 × 15 列:Cache-Control 原值、策略分类、max-age、Expires、ETag、Last-Modified、Vary、Content-Encoding、chunked、Content-Length、CDN 标记)。仓库内为 docs/research/2026-11-cache-compression.csv。

解析:scripts/cache_compression_probe.py;单元测试 scripts/test_cache_compression_probe.py(10 项,无网络)。运行:

python -m unittest scripts.test_cache_compression_probe

配套:HTTP 日期响应头 pilot、首页安全响应头 pilot、首页性能代理 pilot。

数据来源与口径

  1. 首页样本:第 4 期 25 个首页(同一批 sample_id)。
  2. 抓取:2026-11-03 12:40–12:41(Asia/Shanghai),串行、站间 ≥0.8 秒。
  3. 请求头:Accept-Encoding: gzip, deflate, br;只读头与最多 1 KB 响应体。
  4. 策略分类与压缩编码均按响应头字面值。
关于作者

凌壹信息Official(交付团队),负责企业网站、品牌与智能制造项目的需求梳理、方案与验收协作。本文只统计单次响应头中的缓存与压缩声明,不验证缓存命中率、压缩后体积或实际加载性能,也不构成对任何站点性能的最终判断;25 家 pilot,不外推行业。

缓存与压缩分开验收

明确 max-age、no-store 与未声明是三种不同状态;压缩已普及,算法仍在 gzip。

预约内容验收方案