PHP网站开启GZIP压缩能够通过压缩传输的HTML、CSS、JavaScript等静态资源,减少网络传输的数据量,从而有效提升页面加载速度,降低服务器带宽消耗。不同服务器环境和配置方式下,开启GZIP的方法存在差异,需要根据实际情况选择合适的操作方案。

一、通过PHP配置开启GZIP压缩
部分PHP环境支持通过修改php.ini配置文件直接开启GZIP压缩功能,操作步骤如下:
- 找到服务器上的php.ini配置文件,一般位于PHP安装目录的根路径下
- 搜索
zlib.output_compression配置项,将其值修改为On - 设置
zlib.output_compression_level指定压缩级别,取值范围是1到9,数值越大压缩率越高但CPU消耗也越大,一般设置为6即可 - 保存配置文件后重启PHP服务让配置生效
对应的配置示例代码如下:
; 开启GZIP压缩 zlib.output_compression = On ; 设置压缩级别为6 zlib.output_compression_level = 6 ; 可选:设置压缩缓冲区大小,默认即可 ; zlib.output_handler =
二、通过服务器配置开启GZIP
2.1 Apache服务器配置
如果网站运行在Apache服务器上,可以通过修改.htaccess文件或者Apache主配置文件开启GZIP:
在网站根目录的.htaccess文件中添加以下配置:
<IfModule mod_deflate.c>
# 开启GZIP压缩
SetOutputFilter DEFLATE
# 设置压缩的内容类型
AddOutputFilterByType DEFLATE text/html text/css text/javascript application/javascript application/json
# 排除不需要压缩的内容
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|webp|ico|zip|tar|gz|rar|bz2|doc|docx|xls|xlsx|pdf)$ no-gzip dont-vary
</IfModule>添加完成后保存文件,Apache会自动加载配置使其生效,无需重启服务。
2.2 Nginx服务器配置
Nginx服务器需要在对应的站点配置文件中添加GZIP相关配置,配置位置一般在server块或者location块中:
server {
listen 80;
server_name example.ipipp.com;
root /var/www/html;
# 开启GZIP
gzip on;
# 设置压缩级别,范围1-9
gzip_comp_level 6;
# 设置需要压缩的MIME类型
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
# 设置压缩的最小文件大小,小于1k的文件不压缩
gzip_min_length 1k;
# 设置压缩缓冲区
gzip_buffers 4 16k;
# 是否添加Vary头
gzip_vary on;
}修改完成后执行nginx -s reload命令重载配置即可生效。
三、通过PHP代码动态开启GZIP
如果无法修改服务器和PHP配置文件,可以在PHP脚本开头通过代码动态开启GZIP压缩,示例代码如下:
<?php
// 检查是否支持zlib扩展
if (extension_loaded('zlib') && !headers_sent()) {
// 开启GZIP压缩
ob_start('ob_gzhandler');
} else {
// 不支持则正常开启输出缓冲
ob_start();
}
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>PHP GZIP测试页面</title>
</head>
<body>
<h1>GZIP压缩测试</h1>
<p>这是一个测试GZIP压缩是否生效的页面内容</p>
</body>
</html>
<?php
// 输出缓冲区内容
ob_end_flush();
?>这种方式会在每个页面加载时动态开启压缩,但是会增加部分PHP运行开销,适合临时使用或者没有配置修改权限的场景。
四、验证GZIP是否生效
完成配置后可以通过以下方法验证GZIP是否成功开启:
- 打开浏览器开发者工具,切换到网络面板,刷新页面查看响应头中是否包含
Content-Encoding: gzip字段 - 使用在线GZIP检测工具,输入网站地址即可检测是否开启压缩以及压缩率
- 通过命令行curl工具检测,执行命令
curl -I -H "Accept-Encoding: gzip" http://example.ipipp.com,查看响应头是否有对应的gzip标识
五、注意事项
- 已经压缩过的文件比如图片、视频、压缩包等不需要再次开启GZIP,否则会浪费CPU资源
- 压缩级别不是越高越好,过高的压缩级别会增加服务器CPU负载,需要根据服务器性能合理设置
- 如果网站使用了CDN,需要确认CDN是否支持GZIP压缩,避免重复压缩或者配置冲突
- 部分老旧浏览器可能不支持GZIP压缩,不过目前主流浏览器都已经全面支持,不需要额外做兼容处理