Estou tentando descobrir como lidar adequadamente com o cache do navegador da Web para aplicativos de página única.
Eu tenho um design bastante típico: vários arquivos HTML, JS e CSS implementando o SPA e um monte de dados JSON consumidos pelo SPA. Os problemas surgem quando desejo enviar uma atualização: atualizo a parte estática do site e o código que gera o JSON ao mesmo tempo, mas os navegadores clientes geralmente têm a parte estática em cache, portanto, o código antigo tenta processar os novos dados e pode (dependendo das alterações feitas) ter problemas. (Em particular, o IE parece mais agressivo do que o Chrome ou o Firefox sobre o uso de JS em cache sem revalidar.)
Qual é a melhor maneira de lidar com isso?
- Verifique se minhas alterações no JSON são compatíveis com versões anteriores e assuma que os caches do navegador expirarão em um prazo razoável.
- Incorpore algum tipo de número de versão no JS estático e no JSON e execute
window.location.reload(true);
se não corresponderem. - Descubra a combinação apropriada de cabeçalhos (
must-revalidate
ouno-cache
qualquer outra coisa; as fontes variam de como fazer isso) para garantir que os navegadores sempre revalidem todos os recursos em cada carregamento, mesmo que isso signifique algumas viagens extras para carregar o site. - Microgerencie meu controle de cache e expire os cabeçalhos para que o conteúdo estático expire quando eu desejar enviar uma atualização.
- Algo mais?