Nossos pensamentos, nossas atitudes, nossas emoções, tudo são formas de energia, constantemente influenciando o mundo a nossa volta. (Diane Dreher)

logo Moraga  
Principal
Categorias
Ferramentas

telescópio

Semanal Mensal Geral
  1. Converter Byte em KB, MB, GB, TB, EB
  2. Verificar CPF com PHP
  3. Jogo da velha ou Tic tac toe
  4. Captcha em PHP
  5. createElement - Solução compatível com os navegadores
  6. removeChild - Remover elementos HTML por Javascript
  7. Copiando tabelas e removendo registros duplicados no MySQL
  8. Gerando Thumbnails com PHP
  9. Removendo linhas e espaços em branco de strings
  10. Apache Expires Header - Cache de imagens, Javascript e CSS
  1. Converter Byte em KB, MB, GB, TB, EB
  2. Verificar CPF com PHP
  3. Captcha em PHP
  4. Jogo da velha ou Tic tac toe
  5. Copiando tabelas e removendo registros duplicados no MySQL
  6. createElement - Solução compatível com os navegadores
  7. removeChild - Remover elementos HTML por Javascript
  8. Gerando Thumbnails com PHP
  9. Removendo linhas e espaços em branco de strings
  10. Apache Expires Header - Cache de imagens, Javascript e CSS
  1. Converter Byte em KB, MB, GB, TB, EB
  2. Captcha em PHP
  3. Jogo da velha ou Tic tac toe
  4. createElement - Solução compatível com os navegadores
  5. Copiando tabelas e removendo registros duplicados no MySQL
  6. Apache Expires Header - Cache de imagens, Javascript e CSS
  7. Removendo linhas e espaços em branco de strings
  8. removeChild - Remover elementos HTML por Javascript
  9. Verificar se existe um valor no Array em Javascript
  10. Gerando Thumbnails com PHP
e-mail Enviar por e-mail imprimir Imprimir
Servidores

Apache Expires Header - Cache de imagens, Javascript e CSS

Por Alejandro Fernandez Moraga

Desenvolvedores do Servidor Web Apache<br/>Foto por <a rel="nofollow" href="http://www.flickr.com/photos/iamamoose/63963722/">i am a moose</a> Desenvolvedores do Servidor Web Apache
Foto por i am a moose

Segundo a Wikipédia (pt.wikipedia.org/wiki/Cache) "(...) cache é um dispositivo de acesso rápido, interno a um sistema, que serve de intermediário entre um operador de um processo e o dispositivo de armazenamento ao qual esse operador acede. A vantagem principal na utilização de uma cache consiste em evitar o acesso ao dispositivo de armazenamento - que pode ser demorado -, armazenando os dados em meios de acesso mais rápidos. (...) No caso dos navegadores, em que as páginas são guardadas localmente para evitar consultas constantes à rede (especialmente úteis quando se navega por páginas estáticas)".

Existem diversas formas de melhorar o desempenho de um site, uma dessas formas é o cache de conteúdo. O navegador armazena localmente alguns arquivos do site no primeiro acesso, nos próximos acessos, em vez de baixar esses arquivos novamente é usado os arquivos locais (em cache). Geralmente são armazenados arquivos com códigos Javascript e CSS e imagens.

O cache de conteúdo reduz grande parte do tráfego de rede, se não for a maior parte porque os arquivos mais "pesados" do site são estáticos e podem ser armazenados. Com isso o site carrega mais rápido, poupa a banda para novos acessos e evita o excesso de logs do servidor web.

Módulo mod_expires

Configurações válidas para o arquivos de configuração do apache (httpd.conf, apache.conf, vhosts.conf, .htaccess, etc).

ExpiresActive On
ExpiresByType Content-Type Time
  • Content-Type: define o tipo de conteúdo que será cacheado.

  • Time: o tempo máximo que o conteúdo pode ser cacheado. Exemplos:

    Em segundos
    • 1 hora: 3600 (60 * 60)
    • 1 dia: 86400 (60 * 60 * 24)
    • 1 mês: 2592000 (60 * 60 * 24 * 30)
    • 1 ano: 31536000 (60 * 60 * 24 * 365)
    Por extenso
    • 1 hora: access plus 1 hour
    • 1 dia: access plus 1 day
    • 1 mês: access plus 1 month
    • 1 ano: access plus 1 year

Cache de um mês

O tempo de validade do cache varia de acordo com a necessidade do site. Estenda o máximo possível, quanto menor o número de solicitações, melhor.

Imagens

ExpiresByType image/gif A2592000
ExpiresByType image/png A2592000
ExpiresByType image/jpg A2592000
ExpiresByType image/jpeg A2592000

Javascript

ExpiresByType text/javascript A2592000

CSS

ExpiresByType text/css A2592000

Combinando mais de um tipo de conteúdo

<{filesmatch "\.(jpg|gif|png|css|js)$"}>
ExpiresActive on
ExpiresDefault A2592000
<{/filesmatch}>

Diferente de ExpiresByType, ExpiresDefault não define o tipo de conteúdo (Content-Type) a ser cacheado.

Remover cache

Para remover o cache defina o tempo com valor 0 (zero).

ExpiresByType Content-Type A0

Testando

Para comprovar se realmente o cache está habilitado e funcionando corretamente, abra um terminal ou prompt de comando e digite:

telnet www.seusite.com.br 80
HEAD /arquivo/que_deve_ser_armazenado_em_cache.jpg HTTP/1.0
Exemplo:
telnet www.moraga.com.br 80
HEAD /images/tpl/moraga.jpg HTTP/1.0
...
HTTP/1.1 200 OK
Date: Tue, 29 Jul 2008 14:52:43 GMT
Server: Apache/2.2.3 (Debian) mod_python/3.2.10 Python/2.4.4 PHP/5.2.0-8+etch11
Last-Modified: Wed, 16 Jul 2008 02:00:41 GMT
ETag: "231c00b-53aa-7ddb6440"
Accept-Ranges: bytes
Content-Length: 21418
Cache-Control: max-age=2592000
Expires: Thu, 28 Aug 2008 14:52:43 GMT Connection: close Content-Type: image/jpeg

A linha em negrito Expires: Thu, 28 Aug 2008 14:52:43 GMT indica quando o arquivo vai expirar, ou melhor, por quanto tempo ele será armazenado localmente (em cache) no computador do cliente.

Como alterar um arquivo que está em cache?

Quando o navegador solicita uma página que contém dados em cache, ele verifica a data de expiração, senão tiver expirado é exibido o arquivo armazenado em cache. Os dados armazenados e o fonte não são comparados, mesmo porque, a finalidade do cache é poupar tráfego da rede e processamento.

O cache se torna um problema quando um conteúdo precisa ser modificado, o navegador não vai atualizar aquele arquivo a menos que tenha expirado ou tenha sido removido. A melhor forma de contornar este problema - sem acabar com todo o sistema de cache - é criar um arquivo com outro nome, por exemplo:

<script type="text/javascript" src="lib.js"></script>

Altere de lib.js. Modifique para lib-1.0.js <script type="text/javascript" src="lib-1.0.js"></script>

Para o navegador, lib.js e lib-1.0.js são arquivos totalmente diferentes, sendo assim, o navegador vai solicitar o novo arquivo. Isso é válido para qualquer tipo de conteúdo.


Referências

Comentários
  • antonio carlos (jebong.com.br) 12 de Janeiro de 2010 23:43

    valeu, resolveu meu problema.
    o site ficou muito mais rapido.
    muito obrigado


Comentar
captcha