Vijftig tot wel honderden bestanden, terwijl de browser 6 tot 8 requests tegelijk af kan handelen. Dit betekent een lange laadtijd van je website voor je bezoekers. HTTP/2 maakt dit verleden tijd.
HTTP/1 beperking
Het HTTP/1 protocol dateert alweer van 1997. Binnen de wereld van HTTP/1, zijn browsers in staat om 6 bestanden tegelijk te downloaden. De statistieken voor bijvoorbeeld deze pagina (onder de 10 requests en minder dan 200kb), is een flinke uitzondering op het gemiddelde. Bekijk een gemiddelde Wordpress, Drupal of Magento site, en je zult aantallen van meer dan 50 of zelfs 100 HTTP requests tegen komen.
Dit vormt logischerwijs een issue, wanneer meerendeel van die bestanden, vanaf dezelfde server geserveerd en dus door de browser gedownload moeten worden. Het HTTP/2 protocol brengt hier verandering in, door (kort door de bocht) geen maximum te stellen aan het aantal gelijktijdige downloads binnen de browser. Requests kunnen over eenzelfde TCP verbinding parallel verstuurd worden.
Server push in HTTP/2
Normaliter wordt door de browser eerst het HTML document gedownload. In het HTML document, staat voor de browser relevante data (in de head gedeelte) om vervolg-acties te kunnen doen, zoals eerst verwerken van kritieke CSS en/of vervolg-resources downloaden, zodat de browser kan beginnen met het invullen van je beeldscherm. HTTP/2 biedt de mogelijkheid deze werkwijze te optimaliseren, middels HTTP/2's Server Push feature.
Doordat je als webbouwer weet welke bestanden een bezoeker nodig gaat hebben om de website minimaal toonbaar te maken, kun je via de Server Push feature in HTTP/2 alvast bestanden vooruit sturen. Denk aan stylesheet of javascript bestanden. Hiermee worden zogenaamde round-trips gereduceerd; je browser hoeft niet voor elk bestand over en weer te communiceren met de server om de opgevraagde bestanden op te halen. Gebruik het echter met mate, en push niet alle resources.
HTTP/2 tackelt daarmee dus de noodzaak voor inline CSS, beter bekend als Critical Path CSS. Maar is het al zo ver?
Andere HTTP/2 features
Naast dat servers en browsers onderling meerdere HTTP requests parallel af kunnen wikkelen, heeft HTTP/2 nog enkele andere voordelen ten opzichte van HTTP/1:
- Domain Sharding wordt overbodig
Er is geen Domain Sharding in de vorm van CDN servers meer benodigd om een website sneller te laten laden. Middels het gebruik van Domain Sharding ontwijk je de browser beperking, waarbij er maximaal 6 bronnen (CSS, JS, afbeeldingen) simultaan afgehandeld worden; - Header compressie via HPACK
Met veel websites gaan vele HTTP requests gemoeid. Daarbij worden per bestand ook voor de gebruiker onzichtbare (meta-)informatie omtrent de bestanden, tussen browser en server meegestuurd; Header-informatie. In HTTP/2 wordt deze data middels HPACK gecomprimeerd om overhead te reduceren; - Round Trip Time reductie
Doordat data over eenzelfde TCP verbinding verstuurd kan worden, wordt de Round Trip Time (RTT) gereduceerd. Hierdoor worden websites in staat gesteld sneller te laden; - Encryptie
Het gebruik van encrypie middels het TLS protocol, is vele malen efficienter middels HTTP/2.
Nadelen van HTTP/2
Je zou bijna het gevoel krijgen dat er aan HTTP/2 geen kanttekeningen kleven. In de basis is dit correct, maar desondanks kent het toch enkele nadelen:
- Bestanden die gepushed worden, benutten niet het voordeel van caching. Je kunt pushing en caching echter middels een cookie-workaround samen laten werken (alhoewel gebruikers een cache, maar niet de cookies zouden kunnen verwijderen).
- Het feit dat de browser de requests simultaan af kan wikkelen via HTTP/2, betekent niet dat een website ineens een licht gewicht wordt. Het aantal MB wordt dus niet gereduceerd. Kans is, dat webbouwers dit aangrijpen om websites van nog meer plugins te voorzien. Dit gaat dus als gevolg hebben dat websites server side langzamer worden en de bezoeker met meer te downloaden materiaal wordt opgezadeld;
- Sommige browsers zullen HTTPS encryptie vereisen bij om HTTP/2 toe te passen. Dat betekent dus een SSL certificaat voor je website om je website-bezoekers de voordelen van HTTP/2 te laten benutten (inclusief meerkosten);
- Zowel websites, als ook browsers moeten HTTP/2 ondersteunen. Toepassing binnen een website is dus afhankelijk van twee partijen. Zie hieronder.
HTTP/2 ondersteuning
In praktijk zijn we afhankelijk van wat de webbrowser van bezoekers ondersteunt, als ook of de hostingbedrijven waar een website gehost wordt, reeds met HTTP/2 werkt. Bovendien stellen sommige browsers als voorwaarde dat de site over een SSL moet beschikken, voordat ze HTTP/2 toe gaan passen.
HTTP/2 en webbrowsers
Nog niet alle browsers ondersteunen HTTP/2. Browsers die reeds HTTP/2 ondersteunen:
- Chrome 41 en hoger
- Firefox 36 en hoger
- Safari 9 en hoger
- Opera 28 en hoger
- Edge 12 en hoger
Internet Explorer ontbreekt in deze lijst, wegens besturingssysteem afhankeljikheid. Dit terwijl oudere versies van Internet Explorer nog steeds schrikbarend veel aanwezig is bij grotere organisaties als standaard browser.
HTTP/2 en webhosting bedrijven
Maar ook de ontvangende partij, de webhosting, moet HTTP/2 ondersteunen. Dit vergt dus een migratie en dus verandering van architectuur als gevolg aan de kant van een hosting-bedrijf. Ook medewerkers zouden omgeschoold moeten worden. Enkele hostingpartijen bieden dit reeds standaard (antagonist) of als aanvullende dienst (byte.nl) aan. Echter: Windows Server 2012 zal nooit HTTP/2 gaan ondersteunen, dus Windows hostingpartijen kunnen last hebben van een langere transitie.
Ondersteunt mijn browser of website HTTP/2?
Het antwoord op die vraag kun je online na gaan. Websites zijn omtrent HTTP/2 dus afhankelijk van de webhosting. Of je website en daarmee webhosting HTTP/2 ondersteunt, is onder meer na te gaan via deze site.
Wil je je website testen over het HTTP/1 en HTTP/2 protocol? Dat kan hier.
De meeste browserversies ondersteunen reeds HTTP/2. Voornamelijk Internet Explorer loopt achter. Enkel vanaf IE versie 11, gecombineerd met Windows 10, ben je gezegend met HTTP/2 ondersteuning.
Conclusie
Browser ondersteuning ziet er goed uit, met Internet Explorer als achterblijver. In de wetenschap dat veelal grotere (financiële/overheid/nuts) organisaties vaak nog achterlopen qua Internet Explorer versie als ook versie van besturingsysteem, is het ook mid 2017 nog te vroeg om volledig op het HTTP/2 protocol voort te borduren bij de bouw van websites.
Bovendien gebruikte volgens deze pagina rond januari 2016 nog 6% en rnd juli 2017 slechts 15% van de websites, het HTTP/2 protocol. Met dus verdere uitrol van HTTP/2 in het achterhoofd, is het zeker van toegevoegde waarde om de performance te blijven optimaliseren voor HTTP/1.
Blijf je toch nog met vragen omtrent HTTP/2 zitten? Die kun je wellicht hier beantwoord zien worden.