本文目录导读:

- 修改php.ini配置文件(推荐)
- 使用.htaccess文件(Apache服务器)
- PHP代码动态开启
- 使用mod_deflate(Apache模块压缩)
- Nginx配置压缩
- 验证压缩是否生效
- 注意事项
- 常用压缩级别对比
在PHP中开启压缩输出主要有以下几种方法:
修改php.ini配置文件(推荐)
在php.ini中找到或添加以下配置:
zlib.output_compression = On zlib.output_compression_level = 6
参数说明:
zlib.output_compression:开启压缩(On/Off)zlib.output_compression_level:压缩级别(1-9,数字越大压缩率越高,但消耗CPU越多)
使用.htaccess文件(Apache服务器)
在项目的.htaccess文件中添加:
php_flag zlib.output_compression On php_value zlib.output_compression_level 6
PHP代码动态开启
在PHP脚本开头添加:
// 方法一:使用ini_set
ini_set('zlib.output_compression', 'On');
ini_set('zlib.output_compression_level', '6');
// 方法二:使用ob_gzhandler
if (!ob_get_level()) {
ob_start('ob_gzhandler');
}
使用mod_deflate(Apache模块压缩)
在.htaccess中添加:
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript
AddOutputFilterByType DEFLATE application/javascript application/x-javascript
AddOutputFilterByType DEFLATE application/json application/xml
</IfModule>
Nginx配置压缩
如果使用Nginx,在配置文件添加:
gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; gzip_min_length 1000; gzip_comp_level 6;
验证压缩是否生效
可以通过以下方式检查:
-
浏览器开发者工具:
- 打开开发者工具的Network标签
- 查看响应头,应该能看到
Content-Encoding: gzip
-
代码检查:
// 检查是否已开启 if (ini_get('zlib.output_compression') == 1) { echo "压缩已开启"; }
注意事项
- 压缩级别选择:级别3-6通常是最佳平衡点,过高的压缩级别会显著增加CPU消耗
- 小文件不要压缩:小于1KB的文件压缩后可能反而更大
- 图片等二进制文件:不要用gzip压缩,它们本身已经是压缩格式
- 检查是否有重复压缩:防止多个压缩机制同时开启导致问题
常用压缩级别对比
| 级别 | 压缩率 | CPU消耗 | 适用场景 |
|---|---|---|---|
| 1-2 | 较低 | 低 | CPU资源紧张时 |
| 3-6 | 中等 | 中等 | 最常用,推荐 |
| 7-9 | 最高 | 高 | 带宽有限时 |
建议优先使用第一种方法(php.ini),因为它在性能上最优化,且对所有脚本生效。