Solicitud HTTP muy grande vs muchas solicitudes pequeñas


Necesito un array 2D (como Json) para ser enviado del servidor al cliente. Sería alrededor de 400x400 en tamaño con cada entrada alrededor de 4 caracteres de texto. Por lo que es alrededor de 640KB de datos.

¿Cuál de los siguientes enfoques extremos es mejor ?

  1. Hago una gran solicitud HTTP de todos los datos de una sola vez.
  2. Hago 400 solicitudes-cada una pidiendo una sola fila (alrededor de 1.6 KB)

Creo que el enfoque óptimo estaría en algún lugar en el medio. Podría alguien darme una idea ¿cuál podría ser el tamaño óptimo de solicitud única para estos datos?

Gracias.

Author: xav, 2010-06-29

3 answers

A menos que esté tratando con conexiones lentas ( muy lentas para los estándares actuales) y realmente necesite actualizaciones incrementales, hágalo en una solicitud.

Eso le da una mejor eficiencia para comprimir la respuesta, y evita la sobrecarga de las solicitudes HTTP adicionales y encabezados de respuesta.

 44
Author: Quentin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-29 06:40:17

Un par de consideraciones para elegir uno grande vs varios pequeños:

  • En el caso de una sola solicitud, no puede hacer un procesamiento progresivo de datos a medida que llegan los datos; debe esperar a que llegue el paquete completo antes de poder hacer nada. Si falla, debe comenzar todo desde cero.
  • En el caso de solicitudes múltiples, puede realizar un procesamiento de datos progresivo. Sin embargo, ahora debe considerar el potencial de múltiples fallas y cómo recuperarse de ellas.
  • Las solicitudes múltiples incurren en sobrecarga para cada solicitud. Este es el ancho de banda adicional que la aplicación consumirá.
  • Algunos agentes HTTP limitan el número de solicitudes concurrentes al mismo servidor, y es posible que deba hacer algo de lógica para evitarlo.
  • La compresión de respuesta funcionará mejor para el caso de solicitud única.
  • Las solicitudes múltiples no requerirán que asigne la memoria completa para sus datos. Concedido, 640KB no es que gran pedazo de memoria, por lo que podría no ser un gran consideración para usted, dependiendo de la frecuencia con la que lo asignará.
  • En el caso de terminación temprana del proceso (ya sea un botón de Cancelación o la aplicación se termina o el navegador se aleja de su página), la única solicitud aún finalizará la descarga de respuesta completa; sin embargo, para el caso de solicitudes múltiples, cualquier solicitud que su código aún no se haya iniciado no se ejecutará.

Honestamente, no estaría tan preocupado por los dos últimos y basaría mi elección en 1) es importante el procesamiento progresivo de datos; y 2) cuál es la tolerancia de su aplicación para errores y datos parciales.

 54
Author: Franci Penov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-29 06:49:07

Y hay que tener en cuenta que los servidores pueden tener vulnerabilidades con grandes peticiones.

 3
Author: Farsheed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-27 20:19:18