¿Cuál es el costo de rendimiento web de usar trabajadores de servicio?

Los ServiceWorkers son declarativos, por lo que realmente depende de lo que les hagas hacer. Si no prueba y mide su trabajo, podría terminar haciendo un sitio más lento o usar más red que antes.

La primera preocupación es cuando registra el ServiceWorker en el ciclo de vida de su página.

  1. Si carga el trabajador de servicio después de la carga, su solicitud de página inicial y la representación no tendrán ningún costo de rendimiento, excepto las líneas adicionales de JS para registrar el ServiceWorker.
  2. Si usa ServiceWorker para administrar todas las solicitudes al sitio en un escenario de precarga y en un caché limpio, tendría que esperar a que una página simple se cargue y registre el ServiceWorker. El acceso al disco podría tener un impacto aquí, ya que su código podría estar mirando los estados de caché en el CacheStorage. [PD Nadie debe hacer esto hasta que todos los navegadores afectados de la audiencia sean compatibles con ServiceWorkers]

La segunda preocupación es qué tipo de almacenamiento en caché está utilizando en su ServiceWorker

  1. Si está utilizando una estrategia Offline-First ™ , la serie inicial de solicitudes para cebar el caché podría tener un impacto masivo en el tamaño total de la solicitud del usuario y el uso de la red. Si está cargando esta estrategia después de la carga, no afectará el rendimiento de la página inicial, pero si desea almacenar previamente en caché antes de renderizar, esto podría resultar muy costoso.
    Las solicitudes posteriores evitarían por completo la necesidad de una solicitud de red y estarían limitadas en velocidad por el acceso al disco del dispositivo en cuestión.
  2. Si está almacenando en caché ciertos recursos filtrando solicitudes por dominio o tipo de contenido, esencialmente está interceptando solicitudes de recursos. Esto tendría un efecto marginal, dependiendo del acceso al disco del dispositivo.

La tercera preocupación es lo que su ServiceWorker está haciendo más allá del almacenamiento en caché

  1. Si su ServiceWorker ejecuta funciones locas intensas de CPU, esto podría tener un efecto notable en el rendimiento del sitio, especialmente si está llamando a estas funciones por fetch

tl; dr : el acceso al disco podría tener un impacto en el rendimiento en situaciones de caché limpio, pero las solicitudes posteriores y en caché serían notablemente más rápidas a medida que omiten la red.