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/

