È importante capire perché il sovraccarico di una richiesta HTTP ha un tale impatto.
Nella sua forma più semplice, una richiesta HTTP consiste nell'aprire un socket, inviare la richiesta sul socket aperto e leggere la risposta.
Per aprire un socket, lo stack TCP/IP del client invia un pacchetto TCP SYN al server. Il server risponde con un SYN-ACK e il client risponde con un ACK.
Quindi, prima di inviare un singolo byte di dati dell'applicazione, è necessario attendere un intero giro di un giro e mezzo al server, almeno.
Quindi il client deve inviare la richiesta, attendere che il server analizzi la richiesta, trovare i dati richiesti, rispedirli indietro - questo è un altro round trip più un po 'di overhead del server (si spera un piccolo overhead, anche se ho visto alcuni server lenti) più il tempo di trasmettere i dati effettivi, e questo è il caso migliore, supponendo che non ci sia congestione di rete che provocherebbe la caduta e il ritrasmissione dei pacchetti.
Ogni volta che devi evitare questo, dovresti.
I browser moderni generano più richieste in parallelo nel tentativo di ridurre parte dell'overhead coinvolto. Le richieste HTTP possono essere fatte teoricamente sullo stesso socket, rendendo le cose un po 'migliori. Ma in generale, i viaggi di andata e ritorno della rete fanno male alle prestazioni e dovrebbero essere evitati.
fonte
2009-03-25 20:43:18
Ho fatto alcuni numeri alcuni anni fa: per un 43 byte 1x1 gif, l'overhead HTTP (non incluso un sovraccarico del pacchetto TCP) era superiore a 240 byte. –
È possibile aggiungere che, a seconda dell'immagine, la compressione può essere più efficiente. –
Inoltre, TCP/IP è più efficiente quando si tratta di trasferire file più grandi. – David