Sto cercando di capire come gestire correttamente la cache del browser web per le app a singola pagina.
Ho un design abbastanza tipico: diversi file HTML, JS e CSS che implementano la SPA e una serie di dati JSON consumati dalla SPA. I problemi sorgono quando voglio inviare un aggiornamento: aggiorno la parte statica del sito e il codice che genera il JSON contemporaneamente, ma i browser client spesso hanno la porzione statica nella cache, quindi il vecchio codice prova ad 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 del JS memorizzato nella cache senza riconvalida.)
Qual è il modo migliore per gestirlo?
- Assicurati che le mie modifiche JSON siano compatibili con le versioni precedenti e che le cache del browser scadano in un lasso di tempo ragionevole.
- Incorpora una sorta di numero di versione sia nel JS statico che nel JSON, quindi esegui
window.location.reload(true);
se non corrispondono. - Scopri la combinazione appropriata di intestazioni (
must-revalidate
ono-cache
o qualsiasi altra; fonti vary su come eseguire questa operazione) per garantire che i browser ripristinino sempre tutte le risorse su ogni carico, anche se ciò comporta alcuni viaggi di andata e ritorno aggiuntivi da caricare il sito. - Gestisci in modo micro il controllo della cache e scade le intestazioni in modo che il contenuto statico scada quando voglio inviare un aggiornamento.
- Qualcos'altro?