PHP开启Gzip页面没有输出的解决方法

发布时间:2020-08-20编辑:脚本学堂
本文介绍下,在开启php的gzip压缩,页面没有输出问题的解决方法,供大家参考。

在php中启用gzip压缩,可以将文件压缩到原来的约1/4,使用流量将减少到原来的1/4。

对一个纯文本的html测试,原文件1.6M,竟然压缩掉99%!可见gzip的优势。

开启php中gzip压缩的方法。
打开php.ini,添加:
 

复制代码 代码示例:
output_buffering = Off
output_handler =
zlib.output_compression = On
 

即可实现为全站的php文件启用gzip加速。

对于html文件,可以通过配置.htaccess文件,由php来处理html请求(会加重服务器负担,建议在nginxapache上做gzip处理):
 

复制代码 代码示例:
AddHandler x-httpd-php .html .htm

问题:
默认安装的PHP5.3,一旦开启了Gzip压缩输出功能,打开网站首页会无法显示。
这是由于PHP配置有问题造成的,5.3默认配置如下:
output_buffering=4096;
 
将其设置为off或者0即可解决。

经过验证,这个问题在PHP 5.1 - PHP5.2中都存在。

不用担心是否影响压缩,或根本就不压缩,可以用如下的方法判断:
 

复制代码 代码示例:
curl -I --compressed http://www.jb200.com
 

 

HTTP/1.1 200 OK
Server: nginx/0.8.13
Date: Tue, 01 Sep 2009 16:38:53 GMT
Content-Type: text/html
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/5.2.10
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Last-Modified: Tue, 01 Sep 2009 16:38:53 GMT
Cache-Control: no-store, no-cache, must-ridate
Pragma: no-cache
Content-Encoding: gzip
 

如果结果中有:Content-Encoding: gzip 这句,则说明该网页是经gzip压缩过的,即php gzip压缩有效。