Los navegadores almacenan en caché los archivos estáticos. Es para lo que están diseñados. 99% del tiempo, eso es algo bueno. Hasta que nosotros, como desarrolladores, actualicemos ese contenido estático.
Si un desarrollador actualiza un archivo javascript, pero el navegador de un usuario extrae la versión almacenada en caché, entonces:
Como desarrolladores, sabemos presionar Ctrl+Shift+R, o Ctrl+F5, o abrir la consola de desarrollo, deshabilitar el caché en la pestaña Red y volver a cargar. Pero los usuarios no lo saben.
¿Cuál es la mejor práctica para manejar las actualizaciones de contenido estático?
.js , envíe la actualización a producción unas horas/días antes de actualizar el html para llamar a esa función en las etiquetas <script> , lo que permite que los navegadores actualicen su caché? durante ese tiempo?<script> ?Obviamente, es posible deshabilitar todo el almacenamiento en caché en su sitio, pero no es una solución realista.
PD. No estoy usando ningún tipo de marco frontend, solo javascript/jquery sin procesar. Si la situación es diferente con los marcos frontend, me encantaría saberlo también a un alto nivel.
Si entiendo correctamente, desea que el archivo JavaScript se actualice para el usuario cuando actualice. debe usar la API de trabajo de servicio para crear una versión de caché para archivos específicos o usar la biblioteca de la caja de trabajo de Google. haga clic aquí para la API del trabajador de servicio, haga clic aquí
Hace algunos años, location.reload(true) permitía omitir el caché como lo hace CTRL / Command + Shift + R. Solo Firefox continúa admitiendo esta función por ahora, pero la recarga dura con javascript ya no es compatible con los navegadores basados en cromo. ( la especificación no describe esta función (más) )
jQuery utiliza una solución sencilla para ser compatible con casi todo. Si carga algo con jQuerys jQuery.ajax({ url, cache: false }) , agrega un parámetro _=TIMESTAMP a la url, que tiene un efecto similar pero puede inflar el caché.
Puede utilizar el encabezado de etiqueta de entidad ( ETag ). Las etiquetas de entidad son similares a las huellas dactilares y si el recurso en una URL determinada cambia, el servidor debe generar un nuevo valor Etag, que es un comportamiento similar al del encabezado Última modificación. ( caniuse:etag )
También es posible borrar el caché de los sitios con un encabezado Clear-Site-Data: "cache" . ( mdn , caniuse:clear-site-data )