PHP服务器(Apache)仅使用ob_start压缩JSON输出

PHP服务器(Apache)仅使用ob_start压缩JSON输出,php,json,apache,Php,Json,Apache,因此,我为RESTAPI设置了一个web服务器,并用PHP对其进行编码 我已经设置了Apache以便可以使用gzip压缩: <IfModule mod_mime.c> AddType application/x-javascript .js AddType text/css .css </IfModule> <IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/text

因此,我为RESTAPI设置了一个web服务器,并用PHP对其进行编码

我已经设置了Apache以便可以使用gzip压缩:

<IfModule mod_mime.c>
    AddType application/x-javascript .js
    AddType text/css .css
</IfModule>

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript application/json

    <IfModule mod_setenvif.c>
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
    </IfModule>

    <IfModule mod_headers.c>
    Header append Vary User-Agent env=!dont-vary
    </IfModule>

</IfModule>
太好了,这似乎奏效了。但是,当我运行测试脚本index.php(它创建了一个资源并在JSON响应中返回了对象或错误)时,我得到了以下结果:

HTTP/1.1 201 Created
Date: Sat, 24 Oct 2015 23:26:01 GMT
Server: Apache/2.4.10 (Unix) OpenSSL/1.0.1j PHP/5.6.3 mod_perl/2.0.8-dev Perl/v5.16.3
X-Powered-By: PHP/5.6.3
Location: api.domain.com/rest/v1/users/12345
Connection: close
Content-Language: en
Vary: User-Agent
Content-Type: application/json; charset=utf-8
为什么JSON响应不返回压缩?我特意返回>700kb,以确保它压缩了某些内容

在返回JSON响应之前,我在服务器中显式设置了content-type头。这还不够吗?我猜这是一个PHP文件这一事实可能是问题所在,但我对Apache的经验不足,不知道这是否是一个问题/修复

但是,如果我添加ob_startob_gzhandler”;对于我的PHP代码,内容是压缩的

另外,值得一提的是.txt和index.php在同一个文件夹中。

请尝试下一步,确保安装了filter_模块:

<IfModule filter_module>
     FilterProvider  COMPRESS  DEFLATE "%{Content_Type} = 'application/json'"
</IfModule>

谢谢你的回复,这是不是我现在的代码?或者还有?这是对conf文件的一个添加。我得到了服务器错误:FilterProvider接受三个参数,filter name provider name match Expression已正确编译,但仍然没有压缩不幸的是最后一次尝试:不要使用我的更改,而是在原始conf中的application/json之后添加application/x-httpd-php。
<IfModule filter_module>
     FilterProvider  COMPRESS  DEFLATE "%{Content_Type} = 'application/json'"
</IfModule>