Expires no Apache - Cache de arquivos no navegador

Artigo que explica como solicitar o cache de arquivos disponibilizados via Web no navegador do cliente.

performance

O ambiente Web é caracterizado pelo modelo requisição/resposta através do protocolo HTTP. Sabendo que alguns conteúdos enviados do servidor para o cliente (navegador) são estáticos, ou mudam com pouca frequência, é possível utilizar um mecanismo de cache para evitar requisições repetidas ao mesmo arquivo. Isso é muito útil, por exemplo, para ser aplicado em imagens e folhas de estilos.

De fato, não há garantias de que este conteúdo será de fato guardado pelo navegador do cliente, pois normalmente existem configurações que determinam se o usuário deseja isso e, caso deseja, o quanto de memória estará reservado para isso.

Para incluir os cabeçalhos HTTP em arquivos estáticos (não gerados por PHP), normalmente é possível configurar o servidor HTTP para fazer isso. No servidor Apache, existe a diretiva ExpiresByType, provida pela extensão mod_expires:

ExpiresActive On
ExpiresByType image/gif "access plus 1 month 15 days 2 hours"
ExpiresByType image/jpeg "access plus 1 month 15 days 2 hours"
ExpiresByType image/png "access plus 1 month 15 days 2 hours"

Isso faz com que imagens gif, jpg e png sejam (possivelmente) guardadas em cache do navegador por 1 mês, 15 dias e 2 horas desde o momento de acesso ao arquivo. Para mais detalhes, consulte a documentação.

5 comentários

Rafael disse...

Ola, estou desenvolvendo um projeto em Java que possui varia paginas dinamicas, entao preciso desabilitar o cache do apache para essas paginas, porem nao sei em qual arquivo configuro essas diretivas. Saberia me dizer? Valeu!!

Rubens Takiguti Ribeiro (autor do blog) disse...

Olá, Rafael

A organização dos arquivos de configuração do Apache variam. Normalmente fica em um destes caminhos:
/usr/local/apache/conf/httpd.conf
/etc/httpd.conf

Pode ser que o arquivo principal inclua outros, então encontrando o httpd.conf, veja os includes que ele faz. Pode ter um include de configurações específicas para expires em /usr/local/apache/conf.d/expires por exemplo.

Micronet Sistemas disse...

Olá, estou otimizando o meu site para o Google, e preciso que ele "aproveite o cache do navegador"... vc sabe me informar como faço isso? é no index.html ou .htaccess ?

Rubens Takiguti Ribeiro (autor do blog) disse...

O expires da pra ser usado configurando o servidor http (apache, por exemplo), ou no script (php, por exemplo)
Esses artigos explicam como usar o expires:
https://rubsphp.blogspot.com.br/2012/08/cache-de-arquivos-com-http-expires-via-php.html
https://rubsphp.blogspot.com.br/2010/12/cache-de-arquivos-no-navegador.html

Uma outra técnica é usando etag:
https://rubsphp.blogspot.com.br/2013/03/cache-no-navegador-usando-etag.html