Web sites mais rápidos, comprimir não e suficiente

Há alguns dias publiquei um pequeno artigo sobre como configurar o Apache2 para servir conteúdo comprimido. Ação necessária mas não suficiente para aumentar a velocidade dos seus sites. Existem muitas outras ações que você pode tomar para fazer seus sites mais rápidos e mais eficientes. Uma delas é usar o mod_expires.

Apache Chief
photo credit: Stinkie Pinkie

Todas as transções entre o navegador do seu cliente e seu servidor web são feitas através de requisões Http. A parte mais importante destas requisições são os headers. Uma coleção de “comandos” que são utilizados para controlar o processo de transferência de dados. Entre estes comandos nos interessa o expire.

O Expire server para informar a todos os serviços de cache no caminho a validade de um determinado arquivo forçando o cache a sevir os conteúdos que ainda não expiraram. Deixe-me colocar isto um pouco melhor.

Sua página usa duas imagens, um background que muda uma vez por ano e um pequeno gŕafico que muda todos os dias. Você configura o header destes requests de forma a informar essa taxa de atualização aos navegadores dos seus usuários. Assim, todas as vezes que ele acessar sua página o navegador só emitirá a requisição do gráfico. Diminuíndo sua banda, carga no servidor e aumentando a velocidade total de navegação do seu usuário.

Deu para entender? Essa é a idéia em linhas gerais. De uma forma muito, muito simples.

Para habilitar essa dádiva do Http você precisa habilitar o mod_expires. No ubuntu digite:

sudo a2enmod expire

Pronto! Agora acabou….

Depois crie um arquivo com suas opções e expiração em /etc/apache2/mods-available/expires.conf. O meu, que uso há anos é:

[php]
<IfModule mod_expires.c>

# ExpiresDefault "access plus 2 months"

ExpiresByType image/x-icon "access plus 2 days"
ExpiresByType image/png "access plus 2 days"
ExpiresByType image/jpg "access plus 2 days"
ExpiresByType image/gif "access plus 2 days"
ExpiresByType image/jpeg "access plus 2 days"
ExpiresByType application/pdf "access plus 2 days"
ExpiresByType audio/x-wav "access plus 2 days"
ExpiresByType audio/mpeg "access plus 2 days"
ExpiresByType video/mpeg "access plus 2 days"
ExpiresByType video/mp4 "access plus 2 days"
ExpiresByType video/quicktime "access plus 2 days"
ExpiresByType video/x-ms-wmv "access plus 2 days"
ExpiresByType application/x-shockwave-flash "access 2 days"
ExpiresByType application/css "access 2 days"

ExpiresByType text/css "access plus 2 days"
ExpiresByType text/javascript "access plus 2 days"

</IfModule>
[/php]

Como você pode ver meus sites estão sempre em um grande nível de desenvolvimento. Se esse não for o seu caso pode mudar a palavra days por months ou years. Você pode ler mais sobre essa configuração aqui.

Calma…. ainda não acabou. 🙂 Falta reiniciar o apache2.

sudo /etc/init.d/apache2 restart