HTTP/2 – nu är framtiden här!
Vid första anblick erbjuder HTTP/2 inte speciellt mycket ny funktionalitet vilket inte heller var syftet, istället har fokus legat på effektivitet, prestanda och säkerhet och där har de lyckats med råge.
Finns som standard hos oss!
Sammanfattning
HTTP/2 är en vidareutveckling på googles SPDY som under 2014 antogs som utgångspunkt för HTTP/2. Tanken är att det ska ersätta nuvarande HTTP/1.1 under de kommande åren. Det mesta av högnivåspråket är samma som i HTTP/1.1 – skillnaderna ligger istället i den underliggande arkitekturen där det skett väsentliga förbättringar inom alla områden. Framför allt har fokus lagts vid att åtgärda de brister som HTTP fram till idag har dragits med.
- Använder en enda TCP-anslutning
- Flera dataflöden över samma tcp-anslutning med Multiplex
- Komprimering av HTTP-headers
- Prioritering efter beroenden
- Förbättrat stöd för kryptering
- Server-push
Av dessa är server-push den teknik som användare direkt kommer i kontakt med.
Du kan läsa den fulla specifkationen för HTTP/2 på https://tools.ietf.org/html/rfc7540/
En TCP-anslutning
Då HTTP/2 stödjer Multiplexing räcker det med att använda en enda TCP-anslutning för att kommunicera mellan server och webbläsare. Traditionellt öppnade webläsaren mellan 4 och 12 TCP-anslutningar och spred ut resursanropen på dessa. Då det traditionellt bara har gått att skicka en fil åt gången per anslutning ledde detta till försämrad prestanda då viktiga filer inte alltid kunde laddas i den ordning de krävdes.
Multiplexing
HTTP/2 gör det möjligt att skicka multipla förfrågningar och svar över samma anknytning vilket innebär en dramatisk ökning av effektiviteten. Det finns också stöd för prioritering vilket säkerställer att kritiska resurser hanteras snabbare.
Komprimerade HTTP-huvuden
HTTP-huvuden är meta-informationen som medföljer resursen du skickar eller tar emot. I HTTP/2 är dessa komprimerade och tar därför mindre bandvidd i anspråk vilket i de absolut flesta fall ökar prestandan. Viktigt att komma ihåg är dock att komprimeringen i sig kan ta resurser i anspråk också.
Prioritering
Genom att skicka med prioriteringsinformation i förfrågan säkerställs att resurser hämtas hem i rätt ordning vilket i sin tur resulterar i att sidan kan visas snabbare. Prioriteringsinformationen kan bestå av ett värde mellan 1 (låg) och 255 (hög) eller vara en beskrivning av beroenden till andra resurser.
Kryptering
Kryptering är egentligen inget krav för HTTP/2 men många servrar och webbläsare kräver kryptering för att över huvud taget använda HTTP/2. Genom att bara använda en enda TCP-anslutning ökas prestandan också här då det är tids- och resurskrävande att öppna nya SSL-anslutningar. En viktig sak att tänka på är att HTTP/2 ställer höga krav på hur din webbserver är konfigurerad – exempelvis fungerar HTTP/2 inte om du har gamla eller osäkra kryptoalternativ aktiverade på din server.
Server-push
Ytterligare en finess som möjliggörs tack vare multiplexing är att man kan får servern att automatiskt skicka resurser som man vet behövs för att rendera sidan. I normala fall skickas sidan till webbläsaren som då avgör vilka ytterligare filer (css, js, bilder etc) som krävs och frågar servern efter dessa. Med server-push kan man ange vilka filer som behövs i HTTP-huvudet. Webbservern tolkar huvudet och skickar automatiskt med dessa filer utan att ha fått en förfrågan från webbläsaren vilket kan öka prestandan.