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 é:

<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>

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