Configuração de cache e expiração do Apache

1

Estou procurando a melhor configuração de cache / expiração possível para minha situação específica.

Eu percebo que alguns sites defenderam a desativação de etags: Header unset ETag, FileETag None

Eu sei que devo usar o Expires ou o Cache-Control. Além disso, sei que devo usar Last-modified ou ETAGs (Per ySlow docs).

Eu herdei um servidor de clientes que usa o seguinte no .htaccess:

<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf|xml|txt|html|htm)$">
Header set Cache-Control "max-age=172800, public, must-revalidate"
</FilesMatch>

Com este servidor, não poderei contar com a equipe para renomear imagens, css e js em aplicativos da web, portanto, não desejo definir as expirações no futuro sem saber (com uma boa certeza) que " a maioria dos navegadores verificarão se o conteúdo foi alterado. O que eu não quero que aconteça é que alguém me ligue e diga que o site está quebrado porque eles substituíram uma imagem e ela não está aparecendo.

Mas eu quero tirar o máximo de proveito possível com o cache e expirar, embora continue afirmando que a maioria dos navegadores irá verificar com o servidor para ver se os componentes foram alterados.

Eu tenho acesso ao arquivo .htaccess e apache .conf e é um servidor único, o conteúdo não é implantado em vários servidores.

Qual seria a melhor configuração do .htaccess ou do .conf para que eu atingisse meus objetivos para esse servidor de clientes?

Obrigado pela sua ajuda

    
por mcondiff 07.06.2012 / 22:26

2 respostas

1

Você deve ter o eTag ativado, embora algumas pessoas tenham recomendado contra ele ao usar balanceadores de carga.

Para expirar e gravar o conteúdo do yoru, você pode usar mod_expires e configure quais recursos e sua idade. Ou você pode definir isso este httpd.conf

Conjunto de cabeçalhos Cache-Control "max-age = 63072000, public"

Agora, quando você vir seus cabeçalhos de resposta, verá Cache-Control com uma idade. Eu configurei por 2 anos

> Cache-Control:max-age=63072000, public Connection:close Date:Thu, 22
> Oct 2015 17:09:31 GMT ETag:"2b7e6-a9777-523307081ff00"
> Server:Apache/2.2.3  Vary:Accept-Encoding,User-Agent
    
por 29.10.2015 / 18:21
0

Basicamente, certifique-se de que o servidor envia Etag e Last-Modified headers (que permite aos clientes verificar se um recurso foi alterado sem baixá-lo) e defina Expires e Cache-Control: max-age cabeçalhos até o final futuro como você pode. Se o conteúdo estático for alterado sem ser renomeado, o melhor que você pode fazer é defini-lo de modo a cobrir uma sessão típica de navegação (por exemplo, 15 min).

    
por 11.06.2012 / 06:22