XAMPP 默认不启用 Gzip 压缩,需手动启用 httpd.conf 中的 mod_deflate 模块并配置 AddOutputFilterByType 规则,同时确保 php.ini 中 zlib.output_compression = Off 以避免冲突。

XAMPP 默认完全不启用 Gzip 压缩,不手动改 httpd.conf 就永远没效果——哪怕你装了最新版 XAMPP 3.3.x 或 Control Panel v3.3.0,模块仍是注释状态。
确认并启用 mod_deflate 模块(最常卡在这步)
Apache 编译时已内置 mod_deflate,但 XAMPP 把它默认注释掉了。没启用这个模块,后面所有配置都是空谈。
- 打开
C:\xampp\apache\conf\httpd.conf(macOS/Linux 路径为/Applications/XAMPP/xamppfiles/etc/httpd.conf) - 搜索
mod_deflate.so,找到这行:#LoadModule deflate_module modules/mod_deflate.so - 删掉开头的
#,保存文件 - 必须重启 Apache(仅刷新页面或重载无效),否则模块不会加载
- 可访问
http://localhost/server-info(需先启用mod_info)查看 “Loaded Modules” 列表中是否含deflate_module
AddOutputFilterByType 配置写在哪、写什么才生效
别往 .htaccess 里塞压缩规则——XAMPP 默认 AllowOverride None,.htaccess 根本不解析;而且主配置更稳定、少一层判断开销。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 在
httpd.conf文件末尾追加以下内容(不是.htaccess,也不是虚拟主机段内部): <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在 Apache 2.4 中仍可用,但已被标记为过时;若你用的是 Apache 2.5+(如自编译新版),应改用AddOutputFilter DEFLATE+AddType组合 - 不要只写扩展名(如
js或css),要写 MIME 类型:浏览器发请求时带的是Content-Type头,Apache 匹配的是这个,不是后缀 - PHP 输出(
application/x-httpd-php)可压缩,但前提是 PHP 没提前输出 header 或启用zlib.output_compression
为什么浏览器 Network 面板看不到 Content-Encoding: gzip
看到响应头没 gzip,90% 不是配置错,而是被其他环节拦截或覆盖了。
- Apache 没重启:改完
httpd.conf后必须点 XAMPP Control Panel 的Stop→Start,不能只点Restart(有时不彻底) - PHP 干扰:检查
php.ini中zlib.output_compression = On是否开启——它和mod_deflate冲突,必须设为Off - MIME 类型不匹配:比如现代 JS 文件返回
application/ecmascript,但你的配置只写了application/javascript,那就跳过压缩 - 浏览器缓存旧响应:强制刷新(
Ctrl+F5)或清空缓存再测,别信当前页的 Network 记录 - 某些老旧浏览器(如 IE6)会发错的
Accept-Encoding,可用BrowserMatch排除,但本地开发一般不用管
最容易被忽略的是 php.ini 里的 zlib.output_compression——它和 mod_deflate 同时启用会导致响应头混乱、甚至 500 错误。XAMPP 自带的 php.ini 默认是 Off,但如果你改过 PHP 配置,务必确认这点。


















