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.
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).
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.
Tags cache http static-content