繁体   English   中英

如何在Apache2下为PHP AJAX请求/响应禁用gzip压缩?

[英]How can I disable gzip compression for a PHP AJAX request/response under Apache2?

在我正在使用的嵌入式设备上,网页的Javascript将请求发送到本地PHP文件,然后使用响应来动态更新DOM元素。 一切正常:AJAX很酷。

但是,令人讨厌的是,即使我不希望所有响应都被gzip编码(目标设备的处理器没有太多的处理带宽)。 问题是我看不到如何禁用gzip压缩响应。

请注意:(1)在服务器端,我正在Ubuntu上使用PHP 5.3.10和Apache / 2.2.22进行测试

(2)在客户端,我使用Firefox 19.0和Firebug

(3)PHP文件只是在回显它们的输出,即我不认为它们在调用ob_gzhandler()

(4)JavaScript使用的是GET而不是POST(这是为项目指定的)

根据Firebug,请求标头看起来像这样:

Accept      text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en-gb,en;q=0.5
Cookie     PHPSESSID=<whatever>
Host    10.0.2.15
Referer http://10.0.2.15/pages/status.php
User-Agent  Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0

响应头通常看起来像这样:

Cache-Control   no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection     Keep-Alive
Content-Encoding    gzip
Content-Length  59
Content-Type    text/html
Date    Wed, 13 Mar 2013 12:08:02 GMT
Expires Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive      timeout=5, max=43
Pragma   no-cache
Server   Apache/2.2.22 (Ubuntu)
Vary    Accept-Encoding
X-Powered-By    PHP/5.3.10-1ubuntu3.5

我已经尝试过的方法(但没有成功):

(a)防止通过本地.htaccess文件压缩php文件的输出

<IfModule mod_env.c>
SetEnvIfNoCase Request_URI "\.php$" no-gzip dont-vary
</IfModule>

这是根据http://support.modwest.com/content/1/117/zh-CN/how-do-i-turn-off-webservers_-gzip-compression.html进行的,但似乎没有任何效果,甚至当我在两次调用之间重新启动apache2时。

(b)防止通过/etc/apache2/httpd.conf文件压缩php文件的输出

<Directory /myfolder>
      RemoveOutputFilter php
</Directory>

即使我在两次调用之间重新启动apache2,这似乎也没有任何明显的效果。

(c)使用XMLHttpHeader.setHeaderRequest()将“ Accept-Encoding”标头设置为“”或“ identity”

我都尝试过

xmlhttp.setRequestHeader(“ Accept-Encoding”,“ identity”);

...和...

xmlhttp.setRequestHeader(“ Accept-Encoding”,“”);

似乎都没有任何明显的效果:Firebug仍然报告请求标头保留

接受编码gzip,放气

我对此进行了检查,似乎应该允许setRequestHeader()更改AcceptEncoding标头行,所以这有点奇怪。 可能是FF安全漏洞已被填补? http://www.w3.org/TR/2006/WD-XMLHttpRequest-20060405/#dfn-setrequestheader

请注意,setRequestHeader()机制显然可以正常工作,因为添加...

xmlhttp.setRequestHeader(“ X-FavouriteFruit”,“香蕉”);

...在Firebug请求输出中添加一行:

X-Favourite水果香蕉

基本上,我几乎没有想法。 我还能怎么停止我的PHP响应被压缩?

似乎您在设备上使用apache来提供PHP文件,这意味着您可以在/etc/php.ini中(或通过@php_value在.htaccess中)尝试类似的操作

zlib.output_compression = Off

在语言选项部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM