service worker - with - ¿Cuál es la diferencia entre usar la API de caché de trabajador de servicio y la caché de navegador regular?
service worker implementation (2)
En mi aplicación web progresiva, ¿debería usar la API de caché en un trabajador de servicio para mis activos estáticos, o simplemente debo confiar en el control de caché nativo del navegador para estos? ¿Cual es la diferencia?
La principal diferencia es el control. El caché del navegador se elimina de los encabezados de Cache-Control, lo cual es bueno hasta que no lo es. Hay todo tipo de estrategias para administrar cómo se almacenan en la caché los recursos direccionables de la red; privado publico; tiempo de vivir, etc.
Con el almacenamiento en caché del trabajador de servicios puede controlar mediante programación cómo se conservan esos activos. Pero eso significa que la carga está en ti.
El caché del navegador es lo que considero poco confiable. El navegador purgará automáticamente los activos según la disponibilidad de almacenamiento del dispositivo. Por ejemplo, los iPhones solían ignorar el almacenamiento en caché de cualquier recurso de más de 25kb. Hoy creo que son muy agresivos.
Sé que el equipo de Facebook realizó un estudio hace unos años y descubrió que solo el 25% de los archivos que esperaban que los navegadores almacenaran en caché basados en encabezados se almacenaron en caché. Esto significaba que había tráfico de red adicional y actividad del servidor.
Esta es la razón por la cual el caché del trabajador de servicios es la mejor opción. No vayas a eliminar los encabezados de tu caché, simplemente no te apoyes en ellos.
Una de las principales ventajas de la API de la memoria caché del trabajador de servicios es que le proporciona un control más detallado que el de la memoria caché integrada del navegador. Por ejemplo, su trabajador de servicio puede almacenar en caché múltiples solicitudes cuando el usuario ejecuta su aplicación web por primera vez, incluidos los activos que aún no han visitado. Esto acelerará las solicitudes posteriores. También puede implementar su propia lógica de control de caché, asegurándose de que los activos que se consideran importantes se mantengan en el caché mientras se eliminan los datos menos utilizados.