怎么在 httpd.conf 中开启 gzip 压缩提升页面加载速度

文章导读
在 httpd.conf 中开启 Gzip 压缩,核心是启用 mod_deflate 模块并配置正确的 MIME 类型,适合文本类资源传输场景。
📋 目录
  1. 命令速用版
  2. 原理简述
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 参考来源
A A

在 httpd.conf 中开启 Gzip 压缩,核心是启用 mod_deflate 模块并配置正确的 MIME 类型,适合文本类资源传输场景。

先说结论:XAMPP 或原生 Apache 默认通常不启用 Gzip,需手动修改配置才能生效,否则所有提速尝试均无效。

  • 适合:HTML、CSS、JS、JSON 等文本资源,图片视频无需压缩
  • 先准备:确认 mod_deflate 模块已加载,检查 PHP 是否冲突
  • 验收:浏览器 Network 面板看到 Content-Encoding: gzip 才算成功

命令速用版

若你确定环境标准,可直接在 httpd.conf 末尾追加以下配置块,但务必先确认模块已启用:

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/css text/javascript application/javascript application/json application/xml
</IfModule>

注意:不同 Apache 版本模块加载方式可能略有差异,请以官方文档为准。

原理简述

Gzip 压缩是服务器与浏览器之间的协商机制。浏览器请求时发送 Accept-Encoding: gzip 头,服务器若配置正确,会将文本内容压缩后传输,显著减少带宽占用。Apache 通过 mod_deflate 模块实现此功能,但出于兼容性考虑,许多集成环境(如 XAMPP)默认将其注释禁用。此外,若 PHP 层也开启了压缩,会与 Apache 层冲突导致失效。

分步处理

1. 定位配置文件:Windows 通常在 C:\xampp\apache\conf\httpd.conf,Linux 可能在 /etc/httpd/conf/httpd.conf 或 /etc/apache2/apache2.conf。

怎么在 httpd.conf 中开启 gzip 压缩提升页面加载速度

2. 启用模块:搜索 LoadModule deflate_module,删除行首的 # 号。若找不到,确认 modules 目录下是否存在 mod_deflate.so。

3. 添加规则:在文件末尾追加压缩配置,指定 MIME 类型而非文件扩展名,因为 Apache 匹配的是 Content-Type 头。

4. 检查 PHP 冲突:打开 php.ini,搜索 zlib.output_compression,确保其值为 Off,避免与 Apache 压缩冲突。

5. 重启服务:修改 httpd.conf 后必须完全重启 Apache。

  • Windows (XAMPP): 控制面板先 Stop 再 Start,避免 Restart 不彻底。
  • Linux (CentOS/RHEL): sudo systemctl restart httpd
  • Linux (Ubuntu/Debian): sudo systemctl restart apache2

怎么验证是否生效

打开浏览器开发者工具,进入 Network 面板,刷新页面,点击主文档请求,查看 Response Headers。若看到 Content-Encoding: gzip,说明配置成功。

也可使用命令行 curl 查看响应头信息,需指定 Accept-Encoding 头:

怎么在 httpd.conf 中开启 gzip 压缩提升页面加载速度
curl -H "Accept-Encoding: gzip" -I http://localhost

配置前响应头无 Content-Encoding 字段,配置后应显示 Content-Encoding: gzip。

常见坑

1. 模块未加载:只写了压缩规则却没取消 LoadModule 注释,模块未加载则规则不生效。

2. PHP 层干扰:php.ini 中 zlib.output_compression 设为 On 会接管输出,导致 Apache 压缩规则被绕过或报错。

3. 文件类型误配:不要对图片、视频等已压缩格式开启 Gzip,不仅无法减小体积,反而浪费 CPU。

4. 重启不彻底:XAMPP 控制面板中点击 Restart 有时不彻底,建议先 Stop 再 Start。

参考来源

  • Apache Official Docs: https://httpd.apache.org/docs/current/mod/mod_deflate.html