Posted in

XAMPP 配置开启 gzip 压缩

在 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排名。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注