我已经编辑了 php.ini 文件,使其包含以下两个条目:
zlib.output_compression = On
zlib.output_compression_level = 4
但是,重新启动 apache 后,当我请求 php 页面时,响应中返回的标头表明我的服务器仍然没有提供压缩页面(以下是使用 Chrome 的网络功能查看的选定标头):
Cache-Control:no-cache, must-revalidate, max-age=0
Connection:Keep-Alive
Content-Type:text/html; charset=UTF-8
Date:Mon, 17 Sep 2012 23:46:13 GMT
Expires:Wed, 11 Jan 1984 05:00:00 GMT
Last-Modified:Mon, 17 Sep 2012 23:46:13 GMT
Pragma:no-cache
Proxy-Connection:Keep-Alive
Server:Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 PHP/5.2.17
Transfer-Encoding:chunked
Via:1.1 XXX-PRXY-07
X-Powered-By:PHP/5.2.17
我可能做错了什么?我还需要更改其他设置吗?
编辑
以下是返回到另一台计算机的另一组标头:
Cache-Control:no-cache, must-revalidate, max-age=0
Connection:close
Content-Type:text/html; charset=UTF-8
Date:Thu, 20 Sep 2012 09:45:26 GMT
Expires:Wed, 11 Jan 1984 05:00:00 GMT
Last-Modified:Thu, 20 Sep 2012 09:45:26 GMT
Pragma:no-cache
Server:Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 PHP/5.2.17
Transfer-Encoding:chunked
Vary:Cookie
X-Powered-By:PHP/5.2.17
答案1
流量似乎正在通过代理传输。请验证代理是否可以处理压缩流量,并且不会因某种原因对其进行解压。
如果客户端(在本例中是代理,但在很多情况下是最终用户的浏览器)不支持正在使用的压缩,则流量将不会被压缩。
我还注意到 mod_zlib 和 mod_deflate 似乎都没有加载。您可能需要检查模块是否正常工作并配置正确(您可能需要在 apache 启动时添加定义选项,或者启用配置文件)。
答案2
您的 php.ini 文件未读取或您的 zlib 模块未加载。另外请确保output_handler
未设置。如果您需要使用带有 gzip 输出的输出处理程序,请改用zlib.output_handler
。
首先要确保 PHP 知道 zlib 和您的配置更改。创建一个名为 test.php 的文件并将以下内容放入其中。
<?php phpinfo(); ?>
现在使用浏览器访问该页面。zlib 部分的表格内容是什么?它应该看起来像这样,如果是这样,您的页面应该使用 gzip 内容编码。如果您没有看到 zlib 部分,那么您可能需要在 php.ini 中添加一个指令来加载模块。
还要检查页面的核心部分,以确保output_handler
设置为没有价值。