¿Demasiadas llamadas de REST API en una página?

8

Una aplicación web diseñada con componentes muy modulares y pequeños (en este caso, utilizando las directivas AngularJS, pero podría ser fácilmente componentes web, componentes ReactJS o cualquier otra tecnología). Los componentes a menudo tienen llamadas de API REST asíncronas, durante la inicialización o la interacción del usuario. Este diseño está causando muchas llamadas a la API por página (a veces más de 20). ¿Hay algún problema con este diseño? Algunos sugieren que condensemos las llamadas a la API en servicios más grandes del lado del cliente que actúen como singletons. Por lo tanto, 10 llamadas a la API pueden reducirse a 1, aunque una página solo use una parte de esos datos. ¿Hay alguna bandera roja, o problemas con este diseño? ¿Cuál debería ser la preferida?

    
pregunta Ryan Langton 15.09.2015 - 15:43

4 respuestas

2

Los navegadores limitan el número total de solicitudes simultáneas

enlace

Así que sí, hay un problema con este diseño. Sin embargo, creo que la respuesta aceptada es pasar a una implementación de sockets web donde se usa una sola conexión, pero con muchos tipos de mensajes para comunicarse con el servidor

    
respondido por el Ewan 15.09.2015 - 16:36
1
  

Este diseño está causando muchas llamadas a la API por página (a veces más de 20). ¿Hay algún problema con este diseño?

No debería haber. El hecho de que cada solicitud sea pequeña y asíncrona significa que puede acelerar enormemente su aplicación web, en lugar de tener que esperar a que se complete una sola solicitud grande que bloquee todo.

Solo asegúrate de que tu javascript sea asinconcoso correctamente y pueda hacer cosas mientras tus otras solicitudes están esperando y terminarás con una aplicación mucho mejor que si tuvieras una solicitud masiva que lo haya buscado todo.

Después de que todos los navegadores están diseñados para manejar la carga de muchas URL en tándem, incluso una página web estándar típica puede tener decenas, si no cientos, de solicitudes de imágenes, css, javascript, iframes, etc.

    
respondido por el Cormac Mulhall 18.09.2015 - 17:55
0

No olvide el tamaño de cada solicitud de red. Generalmente, si cada solicitud devuelve solo 2 KB de datos, entonces la solicitud de red es demasiado cara para esa pequeña cantidad de datos.

Si la solicitud de red sube a 400 KB, entonces divídala en dos. Pero, en general, no hay suficientes datos para una única solicitud de red.

    
respondido por el dman 31.10.2018 - 15:11
0

Algunas consideraciones aquí:

Rendimiento

Si está viendo un rendimiento aceptable, no debería preocuparse demasiado por ello. Si puede administrar ejecutar HTTP2, debería ver un aumento en el rendimiento. [1] .

Diseño

Al igual que con cualquier diseño, no hay reglas rápidas para determinar si debe hacer muchas solicitudes pequeñas o pocas. Algunas cosas a considerar:

  1. ¿Son interdependientes muchas de las llamadas? Si tiene una relación de dependencia compleja entre diferentes llamadas, puede dificultar el mantenimiento. Si este es el caso, los datos de respuesta relacionados con el procesamiento por lotes tendrían sentido.

  2. ¿Los diferentes componentes comparten gran parte de los mismos datos? Si este es el caso, podría tener un punto central que haga las llamadas compartidas y permita que los componentes accedan a los datos compartidos.

  3. Mantenga un ojo en la carga de mantenimiento de los componentes pequeños haciendo llamadas separadas. Sabrá cuándo es difícil de manejar y entonces puede ser necesario un cambio. Cambiar un diseño basado en hipotéticas necesidades futuras puede causar errores de diseño, ya que debe anticipar con precisión qué problemas tendrá en el futuro. Si está funcionando bien ahora, cambiarlo también sería innecesario.

1: "HTTP / 2 es multiplexado por completo, lo que permite transferir múltiples archivos y solicitudes al mismo tiempo, a diferencia de HTTP1.x, que solo acepta una única solicitud / conexión a la vez. HTTP / 2 usa la misma conexión para transferir diferentes archivos y solicitudes, evitando la pesada operación de abrir una nueva conexión para cada archivo que deba transferirse entre un cliente y un servidor. "- enlace

    
respondido por el Tjaart 31.10.2018 - 15:52

Lea otras preguntas en las etiquetas