Estou tentando empregar o cache para acelerar o tempo de resposta de um site. A maior parte da documentação que li sugere definir a expiração para +1 mês a partir do momento do acesso, da seguinte forma:
ExpiresActive On
ExpiresByType text/css "access plus 1 month"
Estou preocupado que, se eu atualizar um arquivo css, o cliente não obtenha o arquivo atualizado.
É possível garantir que o cliente baixe uma nova versão de um arquivo se ele for modificado?
Qualquer ajuda muito apreciada
Responder1
Sua preocupação está correta - os clientes cujos navegadores recuperaram o arquivo normalmente não receberão a versão atualizada até 1 mês após acessá-la, a menos que tenham limpo o cache do navegador ou recarreguem a página.
Uma maneira de contornar isso é quando você atualiza o arquivo CSS, altera o HTML que faz referência a ele para ter ?v=2 ou ?v=3 etc. no final do atributo href da tag do link (ou seja, após o .css). Os navegadores veem isso como um URL exclusivo e, portanto, baixam a nova cópia, mas apontam para o mesmo arquivo .css físico em seu servidor.
<link rel="stylesheet" type="text/css" href="/styles.css" />
torna-se
<link rel="stylesheet" type="text/css" href="/styles.css?v=2" />