Chrome no carga la última versión de la secuencia de comandos del trabajador web (ejecuta una versión en caché)

Si edito mi secuencia de comandos de trabajo web y actualizo la página, la secuencia de comandos de trabajo web es una versión en caché. Estoy razonablemente seguro de que no es mi servidor web, porque puedo cargar inmediatamente las copias más recientes de todos los demás archivos, e incluso reiniciar el servidor web no soluciona el problema. Solo carga la versión más reciente de la secuencia de comandos del trabajador web si reinicio Chrome, lo cual es muy ineficiente, ¡no hace falta decirlo! No lo soluciona incluso si reinicio Chrome. ¿Hay algo que pueda hacer para evitar esto?

preguntado el 25 de agosto de 12 a las 18:08

7 Respuestas

En mi Linux Chrome, tengo que hacer clic con el botón derecho (o un clic largo) en el botón de recarga y seleccionar "Vaciar caché y recargar duro" para obtener la última versión

respondido 17 nov., 12:08

Para hacer un clic prolongado, mantenga presionado el botón del mouse hasta que se abra el menú. @Brian: Ni siquiera sabía que estaba allí. Ctrl+F5 no funcionaba por alguna razón, pero esto funcionó perfectamente. - Bosque Katsch

Su servidor web determina cuán almacenable en caché es un recurso web dado y el navegador intenta respetar esa configuración, almacenando en caché los recursos que el servidor web dice que está bien almacenar en caché, no almacenando en caché las cosas que dice que no deben almacenarse en caché.

Si quieres cambiar eso, tienes estas opciones:

  1. Borrar la memoria caché del navegador manualmente
  2. Desactive temporalmente el almacenamiento en caché del navegador.
  3. Cambie temporalmente la configuración en su servidor web para indicarle al navegador que no almacene en caché
  4. Anule el caché solo para esta página web (shift-F5 en algunos navegadores) para forzar una recarga de contenido nuevo
  5. Agregue un parámetro de consulta a la URL de la secuencia de comandos del trabajador web que cambia cada vez que desea que cargue una nueva versión.

Respondido 25 ago 12, 21:08

La actualización completa de Chrome no actualiza a los trabajadores y aún usa la versión en caché. - RIV

Si aún encuentra que con esta respuesta su serviceworker no está actualizado, verifique si contiene errores. Dado que si el serviceworker contiene errores de javascript y no se instala, la versión anterior seguirá estando en uso. - Bas Goossen

@BasGoossen: en caso de que no se haya dado cuenta, esta pregunta es sobre trabajadores web (scripts que se ejecutan en un hilo diferente en una página web), no trabajadores de servicios (cosas diferentes). - amigo00

@ jfriend00 Vaya, mi error. Sin embargo, ¿podría aplicarse también a los trabajadores web? Estaba trabajando mucho con los trabajadores de servicios últimamente, por lo que provocó la confusión. - Bas Goossen

@BasGoossen: no hay una funcionalidad de webWorker que pueda cargar automáticamente una secuencia de comandos anterior después de un error en una secuencia de comandos más nueva. - amigo00

¿Intentaste una actualización completa? Ctrl-r?

Respondido 25 ago 12, 18:08

Ctrl+R es una actualización regular, creo... ¿Ctrl+Shift+R, tal vez? - Ry-

Añada <script src="your_worker_path"></scripts> al encabezado de su página para forzar la actualización del caché.
Incluya el código de su trabajador en if(typeof window == "undefined"){...} para evitar que comience en la recarga de la página

Respondido el 11 de junio de 15 a las 12:06

En su install evento, antes de la llamada a event.waitUntil añadir:

if (self.skipWaiting) { self.skipWaiting(); }

Fuente

Además, puede seguir este flujo de trabajo de desarrollo:

  1. Configure su servidor para servir su script de Service Worker como no almacenable en caché (control de caché: sin caché)
  2. Después de realizar cambios en la secuencia de comandos de su trabajador de servicio:
    1. cierre todas menos una de las pestañas que apuntan a su aplicación web
    2. presione shift-reload para omitir el trabajador del servicio y asegurarse de que la pestaña restante no esté bajo el control de un trabajador del servicio
    3. presione recargar para permitir que la versión más nueva de Service Worker controle la página.

Fuente

Respondido el 07 de junio de 15 a las 06:06

Debe cerrar todas las pestañas que abren esta página. Abra solo uno 1, luego Ctrl + Shift + R para actualizar, luego se borrará el caché.

respondido 11 mar '17, 08:03

Lo que encontré que funciona es:

  • abra una nueva pestaña, con la URL del script SharedWorker,
  • debería ver que esta pestaña contiene la versión en caché del script
  • si luego Shift-Reload que pestaña, el navegador se ve obligado a actualizar el archivo en caché

La recarga de "recursos" de Chrome en "shift-reload" parece ser... variable.


Espero que hayas encontrado esto: chrome: // inspeccionar / # trabajadores. Puede despedir al trabajador aquí

contestado el 23 de mayo de 19 a las 10:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.