首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Apache2下为PHP AJAX请求/响应禁用gzip压缩?

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

Stack Overflow用户
提问于 2013-03-13 20:28:28
回答 1查看 4.2K关注 0票数 1

在我正在工作的嵌入式设备上,网页的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的说法,请求头看起来像这样:

代码语言:javascript
复制
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

响应头通常如下所示:-

代码语言:javascript
复制
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文件输出进行gzipped压缩

代码语言:javascript
复制
<IfModule mod_env.c>
SetEnvIfNoCase Request_URI "\.php$" no-gzip dont-vary
</IfModule>

这与http://support.modwest.com/content/1/117/en/how-do-i-turn-off-webservers_-gzip-compression.html一样,但似乎没有任何效果,即使我在两次调用之间重启了apache2。

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

代码语言:javascript
复制
<Directory /myfolder>
      RemoveOutputFilter php
</Directory>

这似乎也没有什么明显的效果,即使我在两次调用之间重启了apache2。

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

我都试过了

Xmlhttp.setRequestHeader(“接受编码”,“标识”);

...and...

Xmlhttp.setRequestHeader(“接受编码”,"");

两者似乎都没有明显的效果: Firebug仍然报告请求头包含

Accept-Encoding gzip,deflate

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

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

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

在Firebug请求输出中使用...adds命令行:

X-FavouriteFruit水果香蕉

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

EN

回答 1

Stack Overflow用户

发布于 2013-03-13 22:26:07

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

代码语言:javascript
复制
zlib.output_compression = Off

在“语言选项”部分中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15385361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档