apache默认不启用gzip压缩,需在httpd.conf中启用mod_deflate模块、添加压缩规则,并关闭php.ini中的zlib.output_compression以避免冲突。

Apache 默认不启用 Gzip 压缩,XAMPP 也一样——直接访问 httpd.conf 启用模块并配置规则就能生效,但多数人卡在模块未加载或 .htaccess 冲突上。
确认并启用 mod_deflate 模块
XAMPP 的 Apache 编译时已包含 mod_deflate,但默认被注释掉。不启用该模块,后续所有压缩配置都无效。
- 打开
C:\xampp\apache\conf\httpd.conf(macOS/Linux 对应路径为/Applications/XAMPP/xamppfiles/etc/httpd.conf) - 搜索
mod_deflate,找到这行:#LoadModule deflate_module modules/mod_deflate.so - 删掉开头的
#,保存文件 - 重启 Apache(通过 XAMPP Control Panel)
- 可访问
http://localhost/server-info(需先启用mod_info)验证模块是否在“Loaded Modules”列表中
在 httpd.conf 中添加压缩规则(不推荐放 .htaccess)
.htaccess 虽灵活,但在 XAMPP 本地开发中容易因 AllowOverride 设置为 None 而失效;且压缩逻辑写在主配置里更稳定、性能略好。
- 在
httpd.conf文件末尾追加以下内容:
<ifmodule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css text/javascript application/javascript application/x-javascript application/json application/xml
SetOutputFilter DEFLATE
</ifmodule>
注意:AddOutputFilterByType 已被标记为过时,但 XAMPP 自带的 Apache 版本(2.4.x)仍广泛兼容;若你用的是 Apache 2.5+,改用 AddOutputFilter DEFLATE + AddType 组合更稳妥。
PHP中文网提供Apache 2.4.62 官方 tar.gz 源码包下载,通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
验证压缩是否生效及常见失败原因
浏览器开发者工具的 Network 面板看到响应头含 Content-Encoding: gzip 才算成功。没看到?大概率是以下问题:
- Apache 未重启:修改
httpd.conf后必须重启,仅刷新页面无效 - 请求资源类型不匹配:比如你只配了
text/css,但实际加载的是.js且 MIME 类型是application/ecmascript,就会跳过压缩 - PHP 输出已缓冲或含
header("Content-Encoding: ..."):会干扰 Apache 的自动压缩,此时需在 PHP 中禁用输出压缩(如关掉zlib.output_compression) - 浏览器缓存了未压缩版本:强制刷新(Ctrl+F5)或清空缓存再测
额外注意:XAMPP 的 php.ini 可能干扰压缩结果
XAMPP 默认开启 zlib.output_compression = On,它会在 PHP 层做一次压缩,和 Apache 的 mod_deflate 叠加可能导致乱码或传输失败。
- 编辑
C:\xampp\php\php.ini(或对应路径) - 找到
zlib.output_compression,设为Off或0 - 同时检查
output_buffering是否过大(如设为4096),建议保持On但值不宜过高,避免延迟首字节传输
真正起效的压缩依赖模块加载、MIME 匹配、无中间层冲突这三环,少一环都白配;本地开发时最容易忽略的是 PHP 层的 zlib 干预,这点比线上环境更隐蔽。










