Funcionaba en pruebas, pero en producción va muy lento

· Rendimiento · 2 min de lectura

Con tres registros de prueba todo va rápido. Con datos y usuarios reales, el proyecto se arrastra. No es mala suerte: son problemas conocidos que solo aparecen cuando hay volumen.

Primero mide

No optimices a ciegas. Averigua dónde se va el tiempo:

  • En el navegador: Lighthouse y la pestaña de red muestran el peso de la página y qué tarda en cargar.
  • En el servidor: el registro de consultas lentas de la base de datos y los tiempos por petición.

Las causas más comunes

  • Consultas sin índices. Una búsqueda que tarda milisegundos con cien filas puede tardar segundos con cien mil.
  • Consultas repetidas. Cargar una lista y hacer una consulta extra por cada elemento (el problema N+1) multiplica el tiempo.
  • Todo sin paginar. Traer miles de registros cuando el usuario ve diez.
  • Imágenes y JavaScript pesados. Fotos sin optimizar y paquetes de código enormes retrasan la primera carga.
  • Trabajo pesado dentro de la petición. Enviar correos, generar un PDF o llamar a un servicio externo mientras el usuario espera.
  • Sin caché. Recalcular en cada visita algo que casi nunca cambia.
  • Servidor lejos de la base de datos. Cada consulta paga la distancia.

Cómo se arregla

  1. Agrega índices en las columnas por las que se busca y se ordena.
  2. Carga las relaciones en bloque, no una por una.
  3. Pagina y limita los resultados.
  4. Optimiza las imágenes y divide el código que se descarga.
  5. Pasa el trabajo pesado a colas que se procesan en segundo plano.
  6. Guarda en caché lo que no cambia seguido.

Sobre subir a un servidor más grande

Casi nunca arregla esto. Suelen ser unas pocas correcciones bien dirigidas, y por eso hay que medir primero.

¿Tu proyecto va lento en producción? Cuéntame y lo reviso.