¿Por qué mi AJAX se vuelve lento después de 10 llamadas?

¿Alguna vez has sentido que tus llamadas AJAX pierden la conexión justo cuando más las necesitas? Si notas un retraso de unos segundos después de diez o quince peticiones, tu aplicación deja de sentirse «en tiempo real» y pasa a un estado de espera.

Diagrama de conexiones HTTP bloqueadas en una cola del navegador
El navegador bloquea las nuevas peticiones hasta liberar una conexión disponible.

¿Qué está causando este retraso?

Este comportamiento suele deberse a varios factores técnicos que actúan como un cuello de botella. Las causas más probables incluyen:

  • Límite de conexiones simultáneas del navegador: Los navegadores no abren infinitas conexiones HTTP al mismo dominio. Si disparas muchas llamadas seguidas, las nuevas peticiones quedan en cola hasta que se libera una conexión.
  • Tu propio código (muy común): Lanzar requests sin esperar a que terminen o usar un setInterval que sigue disparando aunque la anterior no terminó puede acumular promesas y generar colas internas.
  • Buffering del servidor: Si tu backend agrupa respuestas o responde lento bajo carga, tú verás «silencio» antes de recibir todo el bloque de datos de golpe.

Cómo diagnosticarlo rápido

Abre la pestaña «Network» en tu navegador y observa el comportamiento de tus peticiones. Si ves que las solicitudes están marcadas como «Stalled» o «Queueing», es un claro indicio de límites de conexión.

Soluciones reales

Si necesitas una experiencia verdaderamente en tiempo real, considera migrar las actualizaciones críticas hacia tecnologías como WebSockets o Server-Sent Events. Además, evita el polling agresivo y prueba bajar la frecuencia de tus llamadas para ver si el problema desaparece.