HTTP2-latentie

· Functies

In een vorige post liet ik een vergelijking zien tussen de prestaties van HTTP2 en HTTP1 met één verbinding (zie HTTP2 vs HTTP1-prestaties). In deze post laat ik een vergelijking zien tussen HTTP2 en HTTP1 waarbij ik latentie introduceer en toon ik hoe latentie HTTP-aanvragen kan beïnvloeden.

Wanneer een client een aanvraag doet, is er een latentie die meer of minder is afhankelijk van de netwerkomstandigheden (verkeer, afstand tot de server...). Latentie heeft veel invloed op het HTTP 1.1-protocol, want als je een hoop aanvragen moet versturen, moet je eerst de aanvraag versturen, op het antwoord van de server wachten, dan de volgende aanvraag doen, enzovoort... uiteraard kun je meer dan één verbinding gebruiken, maar dat vraagt meer resources van de server en schaalt niet goed.

Het HTTP2-protocol gebruikt één verbinding voor alle aanvragen, dus heeft latentie minder invloed: je kunt meerdere aanvragen versturen zonder te wachten tot ze zijn verwerkt, waardoor het proces veel sneller is.

HTTP2-latentietest

Ik gebruik de gratis HTTP2 Golang-testserver om te laten zien hoe latentie HTTP/2 ten opzichte van HTTP1 beïnvloedt.

Met het HTTP2-protocol hoef je alleen alle aanvragen naar de server te sturen en de antwoorden asynchroon te verwerken. Het proces is heel snel en duurt minder dan 1 seconde.

Bij het HTTP1-protocol worden de aanvragen daarentegen één voor één verzonden en moet je voordat je een volgende aanvraag verstuurt wachten op een antwoord van de server, waardoor het proces traag is.

Je kunt een al gecompileerd sgcWebSockets-demo-voorbeeld voor Windows downloaden via de onderstaande link. Test gewoon de verschillende opties en vergelijk de prestaties van beide protocollen.