curl -I 默认不发送 Accept-Encoding: gzip,需手动添加该请求头才能触发服务器压缩并显示 Content-Encoding: gzip 等关键响应头,否则可能误判 Gzip 配置失效。
直接用
只能查看响应头,但默认不发送
,服务器通常因此不返回压缩内容,也就看不到
这类关键头——这正是 Gzip 配置看似“失效”的常见原因。
必须手动带上 Accept-Encoding 请求头
curl
默认不声明支持压缩,Nginx/Apache 等服务器会跳过压缩逻辑。要真实模拟浏览器行为,需显式添加请求头:
若想同时看是否启用 Brotli,可加:
注意:-I(HEAD 方法)虽快,但部分服务器对 HEAD 不压缩;如仍无
,改用
发送 GET 并只输出响应头
重点检查的响应头字段
成功启用 Gzip 后,响应中应至少出现以下字段:
Trae linux
Trae Linux 官方版本现已全面上线,开发者可直接访问 Trae 官网(trae.cn 国内版或 trae.ai 国际版)获取专属安装包。该版本完美适配主流 Linux 发行版,提供 .deb(适配 Ubuntu/Debian)、.rpm(适配 RHEL/Fedora)以及通用 .tar.gz 格式,并全面支持 x64 与 ARM64 架构。
下载
Content-Encoding: gzip
—— 最直接证据
Vary: Accept-Encoding
—— 表示服务器根据该头做缓存区分,是规范做法
Content-Length
值明显小于未压缩时(可对比不带
的请求)
若看到
Content-Encoding: identity
或完全缺失该字段,说明未压缩
排除常见干扰因素
即使配置正确,也可能因以下原因不触发压缩:
响应体太小
:Nginx 默认
,小于 20 字节不压缩;Apache 也有类似阈值
MIME 类型未匹配
:确认
(Nginx)或
(Apache)包含当前资源类型(如
、
)
后端禁用压缩
:PHP 的
或应用框架(如 Express 的
中间件)可能覆盖 Web 服务器设置
CDN 或反向代理拦截
:检查是否经过 Cloudflare、Nginx 反代等,它们可能解压后再发给客户端
快速验证压缩效果(不只看 Header)
单看响应头不够直观,建议组合命令验证实际压缩行为:
获取压缩后大小:
获取原始大小(禁用压缩):
对比两个数值,差异显著(如 30%+ 减少)且
存在,即可确认生效
curl -IAccept-Encoding: gzipContent-Encoding: gzipcurl -I -H "Accept-Encoding: gzip" https://example.com-H "Accept-Encoding: gzip, br"Content-Encoding-s -o /dev/null -D -Accept-Encodinggzip_min_length 20;gzip_typesAddOutputFilterByTypetext/cssapplication/javascriptzlib.output_compressioncompression()curl -H "Accept-Encoding: gzip" -s https://example.com/style.css | wc -ccurl -H "Accept-Encoding: identity" -s https://example.com/style.css | wc -cContent-Encoding: gzip