Sto cercando di capire come gestire correttamente la cache del browser Web per le app a pagina singola.
Ho un design abbastanza tipico: diversi file HTML, JS e CSS che implementano la SPA e un sacco di dati JSON che vengono consumati dalla SPA. I problemi sorgono quando voglio inviare un aggiornamento: aggiorno la parte statica del sito e il codice che genera JSON allo stesso tempo, ma i browser client hanno spesso la parte statica memorizzata nella cache, quindi il vecchio codice tenta di elaborare i nuovi dati e può (a seconda delle modifiche apportate) incorrere in problemi. (In particolare, IE sembra più aggressivo di Chrome o Firefox sull'utilizzo di JS memorizzato nella cache senza riconvalidare.)
Qual è il modo migliore per gestirlo?
- Assicurati che le mie modifiche JSON siano compatibili con le versioni precedenti e supponi che le cache del browser scadano entro un lasso di tempo ragionevole.
- Incorporare una sorta di numero di versione sia nel JS statico che nel JSON, quindi eseguire
window.location.reload(true);
se non corrispondono. - Capire la combinazione appropriata di intestazioni (
must-revalidate
ono-cache
qualsiasi altra cosa; le fonti variano su come farlo) per garantire che i browser riconvalidino sempre tutte le risorse su ogni carico, anche se ciò significa qualche round trip extra per caricare il sito. - Gestisci il mio controllo cache e scade le intestazioni in modo che il contenuto statico scada quando voglio inviare un aggiornamento.
- Qualcos'altro?