Wat is HTTP/2?
Samengevat maakt HTTP/2 het bezoeken van websites veel sneller. En dat is van levensbelang (zegt iedere SEO expert)! Afgezien van wat zij zeggen willen wij, de bezoekers, ook een snelle (WordPress) website. Tijdens ons eerste bezoek op een website wil je een snelle reactie (time to first byte) en vervolgens wil je dat na iedere klik op de website! Wij ondersteunen dit protocol al jaren.
Waar is het allemaal begonnen?
Internet is begonnen met HTTP/1 (rond 1999). Een website was in die tijd niet meer dan een verzameling van pagina’s met wat tekst. Dat toneel is momenteel onherkenbaar veranderd. Nu zijn websites geavanceerde systemen met eindeloze functionaliteiten en veel content (zoals afbeeldingen, video’s, animaties en natuurlijk tekst). Hierdoor zijn websites niet alleen mooier en gebruiksvriendelijker geworden, maar ook groter en zwaarder. Van een paar kilobyte (KB) in 1999 naar volle megabytes (MB) in 2016.
De grote troef
Wanneer een website wordt opgevraagd door een browser, worden er vaak tientallen verzoeken naar de webserver verstuurd om de website te presenteren. Het gaat hierbij om afbeeldingen, stylesheets, Javascript bestanden, source code, headers, logging, etc. Soms gaat het om honderden verzoeken. Voor zo’n verzoek wordt een TCP-verbinding opgezet om de dataoverdracht plaats te laten vinden.
In HTTP/1.1 kunnen er meerdere verzoeken tegelijk worden gestart, afhankelijk van het type browser. Het grootste probleem wat hierbij ontstond was dat een verzoek pas kan worden gestart wanneer een ander verzoek was afgerond.
Stel je een wachtrij in een winkel voor, met maar 1 kassière, waarbij een klant een tijdrovende vraag heeft. Alle andere klanten achter hem moeten wachten totdat hij geholpen is. In onze vaktaal noemen we dat ‘head-of-line blocking’. Erg frustrerend…
Grote verassing: met HTTP/2 worden alle verzoeken samengevoegd en in één verbinding verstuurd naar de browser. In het voorbeeld van de wachtrij wordt de klant met de lastige vraag geholpen, maar ondertussen worden óók de andere klanten in de wachtrij geholpen. Dit noemen we multiplexing. Iedereen blij!
Welke bestanden worden als eerste ingeladen bij een website?
Bij het laden van een website moeten alle bestanden worden ingeladen. De volgorde waarin deze bestanden worden ingeladen is erg belangrijk. Wanneer een CSS bestand bijvoorbeeld pas als laatste wordt ingeladen, ziet de gebruiker (even) een website zonder vormgeving (want CSS = vormgeving). Anderzijds kan het te laat inladen van bijvoorbeeld Javascript ervoor zorgen dat bepaalde functies op de website niet werken (totdat het Javascript ingeladen en verwerkt is). Allemaal niet goed…
Met de introductie van HTTP/2 hebben wij, techneuten, hiervoor nóg een instrument tot onze beschikking gekregen: het precies bepalen welk bestand eerst wordt geladen / opgehaald / getoond aan de bezoeker. Daarmee kunnen wij tot achter de komma de (laad)snelheid van websites optimaliseren. We analyseren waar blokkades zitten en hoe die met behoud van de optimale werking en vertoning zijn te verbeteren. Samen met caching, snelle webservers en goed gebouwde websites produceren we ook dankzij HTTP/2 optimale beleving voor onze klanten en haar bezoekers.
Toetje: SSL is verplicht bij HTTP/2
Het gebruik van SSL is van levensbelang voor veilig surfen op het internet. Gebruik van SSL is in z’n eentje niet zaligmakend, maar zeker wel elementair als onderdeel van een goed beveiligingsbeleid.
Het HTTP/2 protocol zelf dwingt geen SSL af, maar de toonaangevende browsers als Google Chrome en Mozilla Firefox (samen een wereldwijd marktaandeel van ruim 70%) hebben de introductie van HTTP/2 aangegrepen om meteen het gebruik van TLS (SSL) verplicht te stellen. Slim! Zo is er dus geen ontkomen meer aan en zal het internet weer veiliger worden.
Kwaaijongens voorziet al haar websites al jarenlang van SSL, dus kan zonder issues volop gebruik maken van HTTP/2.
Kers op het toetje: gecomprimeerde (binaire) HTTP-headers
Bij het opvragen van bestanden van een webserver, wordt extra informatie over bestanden meegezonden via HTTP-headers.
In HTTP/1.1 wordt voor iedere HTTP-header een aparte verbinding gemaakt. In HTTP/2 worden alle HTTP-headers gecomprimeerd en in één verbinding verzonden. Daarbij hebben we sinds HTTP/2 binaire HTTP-headers. Dit, in tegenstelling tot de tekstuele HTTP-headers in HTTP/1.1., maakt HTTP/2 stukken minder foutgevoelig en resulteert weer in een snellere laadtijd.
Alle moderne browsers ondersteunen HTTP/2
De meest voorkomende browsers en versies:
- Chrome 41 of hoger
- Firefox 36 of hoger
- Edge 12 of hoger
- Safari 9 of hoger
- Opera 28 of hoger