workers with supported serviceworker registered register pwa not has example event disabled create are actualizar service-worker

service-worker - with - service worker implementation



Frecuencia de actualización de JavaScript del trabajador de servicio(¿cada 24 horas?) (1)

Según este documento en MDN :

Después de eso, se descarga cada 24 horas más o menos. Puede descargarse con más frecuencia, pero debe descargarse cada 24 h para evitar que los scripts incorrectos sean molestos durante demasiado tiempo.

¿Es lo mismo cierto para Firefox y Chrome? ¿O la actualización a JavaScript del trabajador de servicio solo ocurre cuando el usuario navega al sitio?


Nota: a partir de Firefox 57 y Chrome 68 , así como las versiones de Safari y Edge que admiten los trabajadores de servicios, el comportamiento predeterminado ha cambiado para tener en cuenta la especificación actualizada de los trabajadores de servicios . En esos navegadores, las directivas de caché HTTP, de forma predeterminada, se ignorarán cuando se verifiquen las actualizaciones del script del trabajador del servicio. La descripción a continuación todavía se aplica a versiones anteriores de Chrome y Firefox.

Cada vez que navega a una nueva página que está bajo el alcance de un trabajador de servicio, Chrome realizará una solicitud HTTP estándar para el recurso de JavaScript que se pasó a la llamada navigator.serviceWorker.register() . Supongamos que se llama service-worker.js . Esta solicitud solo se realiza junto con una navegación o cuando un trabajador de servicio se despierta mediante, por ejemplo, un evento push . No hay un proceso en segundo plano que vuelva a buscar cada script de trabajador de servicio cada 24 horas, ni nada automatizado como ese.

Esta solicitud HTTP obedecerá las directivas estándar de caché HTTP , con una excepción (que se trata en el siguiente párrafo). Por ejemplo, si su servidor establece los encabezados de respuesta HTTP apropiados que indican que la respuesta en caché se debe usar durante 1 hora, entonces, dentro de la siguiente hora, la solicitud del navegador para service-worker.js será atendida por la memoria caché del navegador. Tenga en cuenta que no estamos hablando de la API de almacenamiento en caché , que no es relevante en esta situación, sino del almacenamiento en caché HTTP estándar del navegador .

La única excepción a las reglas estándar de almacenamiento en caché de HTTP, y aquí es donde entran las 24 horas, es que los navegadores siempre irán a la red si la antigüedad de la entrada de service-worker.js en el caché HTTP es superior a 24 horas. Entonces, funcionalmente, no hay diferencia en el uso de una max-age de 1 día o 1 semana o 1 año: todos serán tratados como si la max-age fuera 1 día.

Los proveedores de navegadores quieren asegurarse de que los desarrolladores no desplieguen accidentalmente un service-worker.js "roto" o con errores que se service-worker.js con una max-age de 1 año, dejando a los usuarios lo que podría ser una experiencia web persistente y rota para un largo periodo de tiempo. (No puede confiar en que sus usuarios sepan borrar los datos de su sitio o volver a cargar el sitio).

Algunos desarrolladores prefieren servir explícitamente a su service-worker.js con encabezados de respuesta que hacen que se deshabilite todo el almacenamiento en caché de HTTP, lo que significa que se realiza una solicitud de red para service-worker.js para cada navegación. Otro enfoque podría ser utilizar una max-age muy, muy corta max-age digamos un minuto, para proporcionar cierto grado de limitación en caso de que haya un gran número de navegaciones rápidas de un solo usuario. Si realmente desea minimizar las solicitudes y está seguro de que no actualizará su service-worker.js corto plazo, puede establecer una max-age de 24 horas, pero le recomiendo que elija algo más breve fuera de la posibilidad de que inesperadamente necesite volver a implementar.