O mod deflate do Apache não comprime a saída php

5

Eu tenho o mod_deflate instalado e funcionando. Eu posso jogar um arquivo algo.txt no meu servidor apache e usar o curl para verificá-lo.

curl --compressed -I / somefile.txt me retorna o seguinte que é bom e compactado:

Vary: Accept-Encoding
Content-Encoding: gzip

Mas se eu usar / some.php eu volto:

Accept-Ranges: bytes
X-Powered-By: PHP/5.4.4-14+deb7u5

Mas não há Content-Encoding: gzip, o .htaccess que eu usei com várias opções:

SetOutPutFilter DEFLATE

Ou

AddOutputFilterByType DEFLATE application/json

Também verifiquei se a compactação zlib estava desativada no php.ini e também tentei desativar o buffer de saída. Mas não importa o que eu tente eu nunca obter a saída do php para ser compactado pelo apache. A sobrecarga do apache para o zip é menor do que quando eu uso o php zlib.

Eu vejo mensagens suficientes como trabalho de compactação de saída do Apache para CSS / JS, mas não PHP , mas que permite a compressão do php. Eu quero que o apache cuide disso.

Eu devo estar perdendo algo bobo aqui.

UPDATE: resolvi todos os problemas, também por causa das respostas dadas. No final, ainda não funcionou 100%. Isto foi devido ao pacote errado instalado. O apache2filter foi usado para me enviar no caminho errado.

    
por Erik-Jan Riemers 15.11.2013 / 00:33

3 respostas

4

AddOutputFilterByType é uma maneira obsoleta de adicionar itens à cadeia de filtros de saída ( ref here ).:

One further directive AddOutputFilterByType is still supported, but may be problematic and is now deprecated. Use dynamic configuration instead.

E você pode ter alguns problemas porque o PHP está associado a uma cadeia de filtros que não contém o filtro DEFLATE.

Você pode tentar usar a nova sintaxe de mod_filter com FilterChain como mostrado neste pergunta (na pergunta, não nas respostas).

    
por 15.11.2013 / 14:12
2

Eu tive esse problema e acabei descobrindo que definir as opções de mod_deflate em .htaccess vs. httpd.conf levou a resultados diferentes. As configurações do httpd.conf funcionaram para o PHP quando executadas no fastcgi ou como um DSO. No arquivo .htaccess, o PHP rodando como fastcgi não conseguiu alterar as diretivas deflate.

Portanto, tente escrever as regras em seu httpd.conf em vez de .htaccess e veja se isso resolve o problema (não se esqueça de reiniciar o Apache depois de fazer as alterações).

    
por 15.11.2013 / 01:44
0

Experimente e veja se funciona para você:

AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
    
por 15.11.2013 / 06:05