Cache: Tornar a web mais rápida e reduzir o tráfego

Tornar um site rápido e leve é simples, e deve ser sempre feito e todos os sites. Já aqui partilhei várias dicas sobre como o fazer, algumas são tão simples como adicionar meia dúzia de linhas ao ficheiro .htaccess usando alguns módulos do Apache.

Usar o mod_expires do Apache é mais uma dessas dicas.

Cache HTTP

O mod_expires indica ao browser do cliente qual a validade de determinado ficheiro, permitindo mantê-lo em cache sem fazer um novo pedido ao nosso servidor. Se pensarmos que uma imagem nunca muda, e que um ícone (favicon) ou um ficheiro css e js raramente são alterados podemos reduzir vários pedidos do browser ao servidor tornando o acesso mais rápido e reduzindo o tráfego no servidor e na ligação do cliente.

O mod_expires permite indicar um tempo de cache igual para todos os documentos usando o ExpiresDefault, o que não recomendo. O ideal é usar o ExpiresByType que permite definir uma data de expiração consoante o tipo de ficheiro.

É ainda possível definir se queremos que a validade (em segundos) do ficheiro seja a contar a partir da data de acesso com o operador A ou se a validade é após a última data de modificação com o operador M.

A diferença é que com o primeiro operador, a cache de um utilizador que acedeu ao site na semana passada irá expirar primeiro que a cache de um utilizador de acabou de aceder ao site. Com o segundo operador todos os caches irão expirar ao mesmo tempo, pois será a data de criação do ficheiro que irá contar. Este operador poderá ser útil para colocar em cache imagens que mudam semanalmente mas não mudam de nome ou páginas HTML que são alteradas diariamente.

1
2
3
4
5
6
7
ExpiresActive On
ExpiresByType text/html M86400
ExpiresByType text/css A2592000
ExpiresByType text/javascript A2592000
ExpiresByType image/png A31104000
ExpiresByType image/jpeg A31104000
ExpiresByType image/x-icon A31104000

No exemplo em cima activamos o mod_expires na primeira linha e indicamos que os ficheiros html devem manter a sua validade até 24 horas depois de serem criados com o operador M. Isso quer dizer que um ficheiro criado a 1 de Dezembro às 14:00 se for acedido a 2 de Dezembro às 13:00 apenas ficará guardado durante 1 hora na cache do cliente.

No entanto o mesmo acesso irá manter os ficheiros css e js em cache até dia 1 de Janeiro às 14:00, independentemente da data de última modificação graças ao operador A.

Os ficheiros png, jpg e ico irão expirar um ano após o acesso pelo cliente, como indica o tempo em segundos. Para referência, 3600 segundos equivalem a 1 hora.

Existem várias possibilidades que podem ser adaptadas ao site em questão e melhorar o seu desempenho. Podem confirmar se o mod_expires está a funcionar correctamente com a ferramenta HTTP Headers.

 
Copyright © 1985 - 2017 Eduardo Maio. Alguns direitos reservados.
eduardomaio.net - Às vezes mais valia ser Agricultor do que Programador
Ao navegar no blog eduardomaio.net está a concordar com os termos legais e de privacidade.