Rendimiento

Cómo bajé el tiempo de carga de una SPA de 6 s a 1,4 s

Sin reescribirla. Midiendo primero, quitando después y aceptando que el mayor culpable era una fuente.

Ada RíosIngeniera de plataformas2 sep 20261 min de lectura
  • Rendimiento
  • Producción
Cómo bajé el tiempo de carga de una SPA de 6 s a 1,4 s

La queja llegó por soporte: «la app tarda muchísimo en abrir desde el móvil». Tenía razón: 6,1 segundos hasta que se podía usar en un Android de gama media.

Medir antes de tocar#

Lo primero fue un perfil real con la red limitada, no con mi portátil. Tres cosas se comían el tiempo:

  • Un paquete de JavaScript de 1,2 MB comprimido
  • Una fuente de iconos de 380 KB que bloqueaba el primer pintado
  • Una llamada a la API en cascada: datos → usuario → permisos

Lo que funcionó#

La fuente de iconos pasó a SVG en línea solo para los 14 iconos que usábamos. El paquete se dividió por rutas:

router.ts
const Informes = lazy(() => import("./pages/Informes"));const Ajustes = lazy(() => import("./pages/Ajustes"));

Y las tres llamadas en cascada se convirtieron en una sola en el servidor.

El resultado#

MétricaAntesDespués
JavaScript inicial1,2 MB310 KB
Primer pintado3,4 s0,9 s
Interactiva6,1 s1,4 s

Nada de esto es nuevo. Lo único nuevo fue medir en el aparato que usa la gente.

¿Te ha servido?

Cada dos semanas, un artículo como este en tu correo. Sin spam.