Recentemente tenho me envolvido bastante com otimização de sites e aplicações web. Fazendo uma pesquisa diversificada em muitos sites nacionais e internacionais, pude constatar que a grande maioria dos sites deixa muito a desejar nos critérios de velocidade/eficiência. As ferramentas mais simples para medir a eficiência das páginas são o Google Page Speed e o YSlow(do Yahoo). Ambos são extensões do Firebug, então você precisa primeiro instalá-lo no Firefox.
Para uma referência dos ratings do Page Speed e YSlow, sites com rating acima de 80 podem ser considerados muito bons. É possível chegar até 90 sem configurações muito complicadas. Até hoje, o site com os maiores ratings que já encontrei em toda a internet é o site da Caelum. Rodei agora os testes e eles estão c/ 96 no Page Speed e 100 no YSlow. O meu blog está c/ 85 no Page Speed e 84 no YSlow
A maioria das técnicas de otimização é simples de aplicar, e é possível ter ótimos resultados com bem pouco trabalho. Escreverei uma série de posts curtos e objetivos explicando as principais técnicas e mostrando como utilizá-las nas arquiteturas mais comumente usadas.
Motivação
Todos os browsers modernos possuem recursos de descompressão de conteúdo, e boa parte dos arquivos servidos em aplicações web podem ser bem comprimidos. Habilitando compressão no servidor o tempo de resposta das páginas diminui, e com isso cai também o tráfego do servidor.
Como fazer
O servidor web mais utilizado na internet é o Apache. Mostrarei inicialmente a configuração somente dele, e caso alguém queira saber também do IIS e nginx, complementarei posteriormente.
Para habilitar a compressão, deve estar ativo mod_deflate. No Ubuntu você pode verificar os módulos ativos listando o diretório /etc/apache2/mods-enabled.
A opção mais simples de configuração é utilizar a diretiva: SetOutputFilter DEFLATE
Esta opção habilita compressão para tudo, no escopo onde for colocada. Podemos habilitar compressão em um virtual host, em um diretório ou até mesmo em todos os arquivos servidos pelo Apache.
Outra opção é habilitar compressão somente para alguns tipos de arquivos, com esta diretiva: AddOutputFilterByType DEFLATE text/html text/plain text/xml
Na documentação do mod_deflate há cenários mais complicados, como verificações do browser, manipulação de cabeçalhos HTTP, consumo de conteúdo comprimido, entre outras coisas. Se alguém tiver dúvidas posso ajudar no setup de testes.
Verificando que funcionou
Para verificar que a compressão está ativa, podemos utilizar o Poster para requisitar uma página do site e conferir o cabeçalho Content-Encoding da resposta, conforme imagem abaixo. Se aparecer o encoding gzip, a compressão está ativa.

Belo post. É curioso que muitas empresas que dependem vitalmente da velocidade da pagina nao tomam cuidado com alguns pontos essenciais, como gzipar a resposta. Nao que eles precisem fazer todos os 1000 truques, mas os mais básicos já mudariam, e muito, a performance de resposta do site.
Sobre a Caelum ter nota alta, isso é gracas ao Sergio Lopes (@sergio_caelum) e Alberto Sousa, que se dedicaram bastante.
Oi Paulo, é verdade. Eu fiz um levantamento uns meses atrás de sites grandes que estão mal nesse aspecto. Alguns casos chegam a ser vergonhosos, porque são locais de onde se espera o “estado da arte”.
Bom, parabéns pelo ótimo dever de casa que vocês fizeram, ficou extremamente otimizado.
Mas essa solução é alterar um serviço que está preso no servidor de hospedagem, e não no código do site. Muitas hospedagem não permitem configurar o Apache, e as vezes nem o apache eles utilizam, então ficamos um pouco preso para usar dessa otimização.
Oi Bruno, isso é verdade. Se você não tem controle sobre a infra-estrutura é inviável fazer algumas otimizações. Se a otimização do site for um requisito importante, a solução seria usar uma hospedagem que permita mais controle sobre a configuração do servidor.
Sobre o web server, não é só o Apache que oferece compressão, o nginx e o IIS também suportam isso. Não conheço bem as configurações do IIS, mas certamente você conseguiria habilitar isso facilmente.
olá, muito bom esse artigo, mas pode me dizer como ativar o o gzip no jboss ?
obrigado
Olá Sanches, tudo bem?
Vá no JBOSS_HOME/server/default/deploy/jboss-web.deployer/server.xml (path correspondente à versão 4.2.x) e configure o conector HTTP de forma semelhante à abaixo:
<Connector protocol=”HTTP/1.1″ port=”8080″ address=”${jboss.bind.address}” compression=”on”
compressableMimeType=”text/html,text/xml,text/css,text/javascript, application/x-javascript,application/javascript”
connectionTimeout=”20000″ redirectPort=”8443″ />
Não sei se você está servindo CSS, JS e outros arquivos estáticos pelo JBoss, mas recomendo servir tais arquivos pelo Apache. No setup mais comum, você servirá estes arquivos pelo Apache com compressão gzip habilitada, e no JBoss você servirá somente páginas dinâmicas. Assim, creio que o único mime type que você desejará comprimir no JBoss é text/html, para que o markup dinâmico gerado seja comprimido.
Sou iniciante. Vi em alguns outros sites até exemplos de código ativando gzip e cache. Não entendi muito bem isso. Ao ativar o gzip o cache não funcionará mais? Obrigado pela ajuda e parabéns pelo excelente material disponibilizado aqui. Abraço.
No meu caso estou utilizando um servidor IBM WebSphere e não encontrei nada a respeito…
Tem alguma ideia de como habilitar isso neste servidor?
really great sites, thank you, paris hilton sex tape here, [url= http://parishiltonsextaped.webs.com/ ]paris hilton sex tape here[/url], epxmta,