Precarga con Service workers

Clase 12 de 23Curso de Rendimiento en Angular

Resumen

¿Cómo mejorar el rendimiento de una aplicación usando Service Workers?

Optimizar nuestras aplicaciones web es esencial para ofrecer una experiencia de usuario fluida y rápida. Una manera efectiva de lograr esto es convirtiendo nuestra aplicación en una aplicación web progresiva (PWA) mediante el uso de Service Workers. Estas técnicas involucran pre-carga y almacenamiento en caché de archivos, mejorando significativamente los tiempos de carga y funcionamiento.

¿Qué es un Service Worker?

Un Service Worker es un script que el navegador descarga y ejecuta en segundo plano, incluso sin conexión a internet. Su principal objetivo es manejar caché y hacer que las aplicaciones funcionen más rápido y sin interrupciones.

¿Cómo implementar un Service Worker en Angular?

La implementación de un Service Worker en Angular es sencilla y sigue pasos sistemáticos:

  1. Instalación: Usa el comando de Angular CLI para añadir soporte de Service Worker a tu proyecto. Asegúrate de especificar el nombre adecuado del proyecto.
    ng add @angular/pwa --project nombreDelProyecto
    
  2. Configuración: Angular generará y actualizará varios archivos, incluyendo la configuración del Service Worker y un archivo manifest que define características de la aplicación como íconos y nombre.
  3. Archivos caché: Define los archivos que deben precargarse y almacenarse en caché, asegurándote de que no se vuelva a solicitar al servidor estático.

¿Qué problemas pueden surgir durante la implementación?

Al intentar compilar una aplicación de producción con Service Workers, puede surgir un error debido a la duplicidad de archivos o referencias incorrectas en el app.module. Es crucial revisar los módulos del proyecto y garantizar que las referencias sean correctas.

@NgModule({
  declarations: [
    // Componentes aquí
  ],
  imports: [
    // Otros módulos aquí
    ServiceWorkerModule.register('ngsw-worker.js', {
      enabled: environment.production,
      registrationStrategy: 'registerWhenStable:30000'
    })
  ],
  // ...
})
export class AppModule { }

¿Cómo probar y depurar Service Workers en producción?

Una vez que la aplicación esté configurada para producción, es importante probarla en un ambiente similar al real. Utiliza un pequeño servidor HTTP para desplegarla y verifica que el Service Worker funcione correctamente.

  • Usa herramientas de desarrollo en el navegador para revisar los recursos en caché y el manifiesto.
  • Limpia manualmente el caché si ves que no se reflejan los cambios.

Beneficios y consideraciones de rendimiento

Implementar un Service Worker mejora la experiencia del usuario al:

  • Reducir tiempos de carga: Los archivos almacenados localmente cargan mucho más rápido después de la primera visita.
  • Optimizar peticiones: Almacenando en caché ciertas solicitudes, se evitan los tiempos de espera derivados de solicitudes al servidor.

Sin embargo, la primera carga puede ser más lenta debido a la precarga de recursos. En proyectos de gran escala, considera estrategias avanzadas, como carga diferida o segmentación de bundles.

Recursos adicionales

Para un entendimiento más profundo, te recomendamos revisar el curso Aplicaciones Web Progresivas en Platzi donde se exploran más a fondo las capacidades y personalizaciones de Service Workers para distintos tipos de aplicaciones.