Estoy tratando de descubrir cómo manejar correctamente el caché del navegador web para aplicaciones de una sola página.
Tengo un diseño bastante típico: varios archivos HTML, JS y CSS que implementan el SPA, y un montón de datos JSON que consume el SPA. Los problemas surgen cuando quiero enviar una actualización: actualizo la parte estática del sitio y el código que genera el JSON al mismo tiempo, pero los navegadores de los clientes a menudo tienen la parte estática en caché, por lo que el código antiguo intenta procesar los nuevos datos y puede (dependiendo de los cambios realizados) tener problemas. (En particular, IE parece más agresivo que Chrome o Firefox sobre el uso de JS en caché sin revalidar).
¿Cuál es la mejor manera de manejar esto?
- Asegúrese de que mis cambios de JSON sean compatibles con versiones anteriores y suponga que las memorias caché del navegador caducarán en un plazo razonable.
- Incruste algún tipo de número de versión tanto en el JS estático como en el JSON, luego ejecútelo
window.location.reload(true);
si no coinciden. - Calcule la combinación apropiada de encabezados (
must-revalidate
ono-cache
lo que sea; las fuentes varían en cómo hacer esto) para garantizar que los navegadores siempre revaliden todos los recursos en cada carga, incluso si esto implica algunos viajes de ida y vuelta adicionales para cargar el sitio. - Microgestione mi control de caché y caduca los encabezados para que el contenido estático caduque cuando quiera enviar una actualización.
- ¿Algo más?