Es importante entender por qué la sobrecarga de una solicitud de HTTP tiene tal impacto.
En su forma más simple, una solicitud HTTP consiste en abrir un socket, enviar la solicitud en el socket abierto y leer la respuesta.
Para abrir un socket, la pila TCP/IP del cliente envía un paquete TCP SYN al servidor. El servidor responde con un SYN-ACK y el cliente responde con un ACK.
Por lo tanto, antes de enviar un solo byte de datos de la aplicación, tiene que esperar al menos una vuelta y media de ida y vuelta al servidor.
Luego, el cliente debe enviar la solicitud, esperar a que el servidor analice la solicitud, encontrar los datos solicitados, enviarlos de vuelta, eso es otro viaje redondo más algunos gastos indirectos del servidor (con suerte, una pequeña sobrecarga, aunque se han visto algunos servidores lentos) más el tiempo para transmitir los datos reales, y ese es el mejor caso, suponiendo que no haya congestión de la red, lo que provocaría que los paquetes se descartaran y retransmitieran.
Cada vez que tenga que evitar esto, debe hacerlo.
Los navegadores modernos emitirán varias solicitudes en paralelo en un intento de reducir parte de la sobrecarga involucrada. Las solicitudes HTTP teóricamente se pueden hacer en el mismo socket, mejorando un poco las cosas. Pero en general, los viajes redondos de red son malos para el rendimiento y deben evitarse.
Hice algunas cifras hace unos años: para un gif de 43 byte 1x1, la tara de HTTP (sin incluir la sobrecarga del paquete TCP) superaba los 240 bytes. –
Puede agregar, que dependiendo de la imagen, la compresión puede ser más eficiente. –
Además, TCP/IP es más eficiente cuando se trata de transferir archivos más grandes. – David