Como desativar a compactação no Apache em algum cabeçalho de resposta do servidor de aplicativos MOD_JK

StackOverflow https://stackoverflow.com/questions/3414243

Pergunta

Eu tenho um servidor Tomcat configurado (por mod_jk) para trabalhar através do Apache HTTPD Server.

O Apache HTTPD Server Compressa (por mod_deflate) Todos os texto/html enviados ao navegador.

Algumas páginas JSP são interativas e de longa duração, ou seja, o progresso ou o registro durante a execução. Se a compactação ligada, todo o texto nessas páginas ocorre no final da execução da página.

Eu gostaria de ter capacidade de definir na página jsp algum cabeçalho de resposta, por exemplo

<% response.setHeader("X-Compress", "0"); %>

E no apache httpd, isso deve resultar em desativar a compactação, por exemplo, configurando No-Gzip variável de ambiente.

Talvez haja outras abordagens?

Foi útil?

Solução 3

Testado na configuração recente (Apache HTTPD 2.2.16, TOMCAT 6.0.29, MOD_JK 1.2.30, tcnative-1.dll). Não existe esse problema (ainda pode existir usando o apache httpd 2.0.x).

Ao usar o Response.flushBuffer () ou out.flush () no JSP, o pacote Flush é enviado para o Apache via mod_jk. Por sua vez, isso cria o balde de descarga do APR, que é recebido por desviar o módulo e força a lavar o buffer de compressão no navegador.

Portanto, a resposta é compactada e interativa.

PS No entanto, eu criei um patch relevante que reage no cabeçalho X-Nogzip do Application Server. Defina como X-NOGZIP: 1 para desativar a compactação.

http://huksley.sdot.ru/wp-content/uploads/2010/09/mod_jk-1.2.30-xnogzip-patch.zip

Outras dicas

Estou usando mod_layout para adicionar um cabeçalho à página. Tem problemas quando a página vem do tomcat através do mod_jk. Ele adiciona o cabeçalho de texto sem formatação antes do código binário de gzipp, corrompendo o arquivo GZ. Parece ter uma documentação muito ruim, mas faz um bom trabalho além do problema de compressão.

Infelizmente,

Reescriture. - [e = no-gzip: 1

não funcionou para mim.

Nem:

AddOutputFilterbyType deflate texto/texto html/texto simples/xml

Isso funcionou:

  1. Ativar mod_headers

  2. Adicione uma linha ao seu virtualhost

    Requestheader não atendimento aceitador

Mais sobre mod_headers:http://httpd.apache.org/docs/2.0/mod/mod_headers.html

Meu mod_layout veio do gerente de pacotes do Ubuntu, mas também está aqui: htt p: //download.tangent.org/

E aqui está a página em que eu li pela primeira vez sobre mod_layout:http://www.linuxjournal.com/article/4334

Eu não acho que seja possível via cabeçalho HTTP, pois este cabeçalho é usado apenas para dizer ao cliente como se comportar. No entanto, você tem que dizer ao Apache.

Mas pode desativá -lo usando um arquivo .htaccess, se for uma opção:

RewriteRule . - [E=no-gzip:1]
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top