Como desativar a compactação no Apache em algum cabeçalho de resposta do servidor de aplicativos MOD_JK
-
26-09-2019 - |
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?
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:
Ativar mod_headers
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]