Otimização de aplicações com gzip
Alguns meses atrás passamos por um processo de otimização em algumas aplicações desenvolvidas para um de nossos clientes e uma das idéias que trouxe ótimos resultados foi o uso da compressão de dados no servidor utilizando gzip.
Existem algumas maneiras para que essa compressão seja utilizada, porém a que escolhemos foi com o uso de um Servlet Filter que fica ativo entre o cliente e o servidor, fazendo a compressão dos dados trafegados. Essa solução nos pareceu ser a mais adequada, pois com ela não é necessário fazer nenhuma configuração especial diretamente no servidor, o que seria um problema para a maioria dos clientes.
Apesar de estarmos utilizando uma solução desenvolvida por nós mesmos, cheguei a fazer testes com o projeto open source PJL Compressing Filter e ele trouxe resultados bastante satisfatórios, considerando velocidade de resposta, integridade dos dados e taxa de compactação. Fiz alguns testes com a resposta de uma aplicação demo antiga que trafegava 450kb de XML e o tamanho dos dados compactados caiu para 70kb. O resultado com as resposta do AMF também foram impressionantes.
Para utilizar o filtro em seu projeto, faça o seguinte:
- Baixe os arquivos do filtro em: http://sourceforge.net/projects/pjl-comp-filter/
- Copie os JARs para o diretório WEB-INF/lib do seu projeto
- Adicione os parâmetros abaixo no arquivo web.xml
-
<filter>
-
<filter-name>CompressingFilter</filter-name>
-
<filter-class>com.planetj.servlet.filter.compression.CompressingFilter</filter-class>
-
</filter>
-
<filter-mapping>
-
<filter-name>CompressingFilter</filter-name>
-
<url-pattern>/*</url-pattern>
-
</filter-mapping>
Não se esqueça de manter o blocos <filter> e os blocos <filter-mapping> agrupados com outros blocos semelhantes no seu arquivo web.xml, para não ter problemas de deploy.
Recomendo também que você utilize os parâmetros excludeContentTypes ou excludePathPatterns para excluir arquivos de tipos: JPG, SWF, FLV, etc. Como esses arquivos já são compactados, você só estaria aumentando o processamento do servidor e, alguma vezes, fazendo com que o resultado seja maior ou até corrompido. Para saber mais sobre os parâmetros de configuração do filtro, leia a documentação do filtro em: http://pjl-comp-filter.sourceforge.net/
2 comentários para “Otimização de aplicações com gzip”
Em que ambiente é usado esse xml?
Achei uma ótima ideia, principalmente se pudermos usar em qualquer aplicação (asp.net, asp tradicional, php…)
Isso seria um xml para compressao geral dos arquivos, ou posso apontar qual pasta/arquivo quero comprimir?
Parabéns!!
Bom dia,
O PJL Compressing Filter é uma Filter Servlet, portanto roda em ambientes com suporte a J2EE.
O XML acima é a configuração para a Filter Servlet de compressão que irá comprimir os dados na hora de trafegar as informações. Se quiser limitar os tipos de arquivos ou diretórios, existem configurações que podem ser feitas para isso e você também pode alterar o
Para o PHP ou ASP, procure na net que você também encontrará compressão gzip para seus servidores.
[]’s

