Como garantir que os clientes atualizem o cache do navegador quando meu site for atualizado?

2

Estou usando o cabeçalho HTTP 1.1 Cache-Control para implementar cache do lado do cliente. Como atualizo meu site apenas uma vez por mês, gostaria que os arquivos CSS e JS fossem armazenados em cache por 30 dias com Cache-Control: max-age=2592000 . O problema é que o período de 30 dias definido por Cache-Control não coincide com o ciclo de atualização do site, começa a partir do momento em que os usuários visitam o site e termina 30 dias depois, o que significa que uma atualização pode ocorrer nesse meio tempo. os usuários estariam em exibição por algum tempo com conteúdo desatualizado, o que poderia interromper a renderização do site se, por exemplo, HTML e CSS não corresponderem mais.

Como posso realizar o cache de conteúdo do lado do cliente por períodos de vários dias, mas de alguma forma fazer com que os usuários atualizem seus arquivos CSS/JS após a atualização do site?

Uma solução que posso pensar é que, se as atualizações do site puderem ser agendadas, o max-age retornado pelo servidor poderá ser reduzido a cada dia, de modo que, independentemente de quando as pessoas visitarem o site, o fim do período de cache coincidirá com a atualização do site, mas mudar a configuração do servidor todos os dias vai contra um dos meus princípios de sysadmin (uma vez que está em execução, não toque nele).

    
por Max 20.06.2012 / 22:11

1 resposta

4

Adicione impressões digitais / hashes às suas URLs CSS e JS e defina o futuro distante Expira / Cabeçalhos de controle de cache.

Esta é também a técnica que Rails Asset Pipeline usa.

    
por 20.06.2012 / 22:30