DClick

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:

  1. Baixe os arquivos do filtro em: http://sourceforge.net/projects/pjl-comp-filter/
  2. Copie os JARs para o diretório WEB-INF/lib do seu projeto
  3. Adicione os parâmetros abaixo no arquivo web.xml


XML:
  1. <filter>
  2.   <filter-name>CompressingFilter</filter-name>
  3.   <filter-class>com.planetj.servlet.filter.compression.CompressingFilter</filter-class>
  4. </filter>

XML:
  1. <filter-mapping>
  2.   <filter-name>CompressingFilter</filter-name>
  3.   <url-pattern>/*</url-pattern>
  4. </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/

Por André Gil em 27/August/2008 | Comentar | Trackback


No Translations

Adicionar comentário

(requerido)
(requerido, não será publicado)