在 XAMPP 里给站点开启 gzip 压缩,能显著减小 HTML、CSS、JS 的传输体积,直接提升页面加载速度。下面按「启用模块 → 写规则 → 多端口适配 → 验证」的顺序,走完 mod_deflate 从配置到生效的完整流程。
确认 mod_deflate 模块已加载,否则所有压缩配置均无效
打开 httpd.conf,搜索 mod_deflate.so,XAMPP 安装以后默认注释,找到这行并去掉注释。
#LoadModule deflate_module modules/mod_deflate.so
重启 apache。
如果后续压缩仍不生效,再检查是否漏了依赖模块:mod_filter.so 和 mod_headers.so —— 它们虽非压缩必需,但某些压缩策略(如设置 Vary: Accept-Encoding)会用到,建议一并启用:
LoadModule filter_module modules/mod_filter.so
LoadModule headers_module modules/mod_headers.so
这些行取消注释后, 你现在需要在httpd.conf文件的末尾添加以下块。最终, 你应该将其应用于所有 htdocs 文件夹内容, 但这取决于你:
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css text/javascript application/javascript application/json application/xml
<IfModule mod_headers.c>
Header append Vary Accept-Encoding
</IfModule>
</IfModule>
- 别加 application/x-httpd-php —— 确认 php.ini 中 zlib.output_compression=Off,否则会导致双重压缩或头冲突,Apache 会跳过压缩;
- Header append Vary Accept-Encoding 是关键,否则 CDN 或代理可能缓存错版本;
配置多端口时,Gzip 规则要放在全局或每个 内
如果你通过修改 Listen 和新增 <VirtualHost *:8080> 等方式启用了多端口,注意:
最稳妥做法:
- 把整个
块复制一份,粘贴进每个 段内部 - 或者——更推荐——把它放在 httpd.conf 文件靠后、但仍在所有
之前的位置,确保被继承(Apache 2.4 默认支持模块指令继承) - 避免在 httpd.conf 里用
包裹压缩指令,它和 作用域容易冲突,且对 PHP 脚本路径处理不稳定
验证压缩是否真起效,别信「看起来快了」
打开浏览器开发者工具(F12) → Network 面板 → 刷新页面 → 点一个 JS 或 CSS 请求 → 查看 Response Headers。只有同时满足以下两点才算成功:
- 存在 Content-Encoding: gzip
- 响应体大小(Size 列)明显小于 Transfer Size(即解压后体积)
常见问题
Q: Gzip压缩是否会影响搜索引擎收录?是否推荐开启?
A:GZIP压缩不会影响搜索引擎收录,反而有助于提升加载速度,从而间接改善SEO排名。
