Prednosti modernog HTTP/2 protokola za brze web stranice

Pregled sadržaja

U više navrata pričali smo o važnosti brzih web stranica. Nitko ne voli sjediti i čekati dok se one učitavaju a po istraživanjima znamo da preko 50% korisnika odustane od čekanja ako se stranica učitava duže od 3 sekunde. Ako se radi o stranici tvrtke, tada će vjerojatno korisnik otići direktno konkurenciji.

Brže web stranice su bolje za kvalitetno korisničko iskustvo, bolje rangiraju na tražilicama te shodno tome sve se kao domino pločice precrtava i na konačno poslovanje jer više posjetitelja znači i više kupaca. Postoje razne najbolje prakse koje u moderno vrijeme možemo primijeniti da se web stranice iznadprosječno brzo učitavaju. Posljednjih godina tehnologija je iznjedrila novi HTTP/2 protokol.

HTTP protokol

HTTP (engl. Hyper Text Transfer Protocol) je protokol preko kojeg preglednik dohvaća traženi resurs sa poslužitelja. Resurs može biti bilo što; HTML dokument, slika, videozapis, datoteke i skripte itd. Svaku web stranicu koju otvorate, dnevni portal koji čitate, web trgovinu u kojoj kupujete, forum na kojem ste čavrljate, svi vam prezentiraju informacije na ekran putem HTTP protokola. Najčešće se radi tako o prijenosu informacija od poslužitelja do korisnika, premda isti protokol funkcionira i kada poslužitelj odgovora na zahtjeve botova tražilica.

Prva verzija protokola dizajnirana je 1991. (gdje ste vi bili 91.? :)) kao jedna od metoda prijenosa informacija preko weba, zajedno s drugim kreiranim protokolima (FTP, POP3…). Protokol je još nešto idućih godina bio ažurirana zbog čega je službena verzija bila 1.1.

Kod tog starog protokola poslužitelj dijeli svaki resurs na manje dijelove koji se nazivaju paketi. S obzirom na to da nam je veza za internet ograničena na određenu količinu megabajta u sekundi, kako bi velike datoteke mogle putovati putem interneta one se dijele na manje pakete. Upravo je to razlog zbog čega možemo gledati glazbene spotove na YouTube ili gledati filmove, skidamo ih “mic po mic” :).

Od tog vremena, web stranice su evoluirale iz statičnih, ogoljelih dokumenata u interaktivne web stranice bogate medijskim zapisima. Temeljni protokol je kroz cijelo vrijeme ostao nepromijenjen ali s vremenom njegova ograničenja postala su sve više očita.

HTTP/2 je nova verzija protokola finalizirana 2015. i radi drugačijeg pristupa u načinu komuniciranja preglednika s poslužiteljem nudi poboljšanja koja u nekim slučajevima drastično ubrzavaju otvaranje web stranica. Sve to bez potrebe za promjenom rada samih aplikacija.

HTTP/2 i njegove prednosti

Glavna prednost HTTP/2 je da je protokol optimalniji nego prijašnji te da značajno ubrzava učitavanje web stranice. Konkretnije to se postiže:

Binarni format podataka

Stari HTTP/1.1 protokol podatke prenosi u obliku običnog teksta. Premda time olakšava formatiranje te čitanje zahtjeva i odgovora, istodobno rezultira povećanom veličinom paketa jer se uključuju i razmaci a i kompresija nije učinkovita. Novi protokol prenosi informacije binarnim podacima, dakle pomoću znakova 0 i 1 što je uobičajeni način komuniciranja računala, te se time ne gubi vrijeme na ponovno prevođenje informacija i cijela stvar radi efikasnije. Paketi su kompaktni i manje sklone pogreškama prijenosa.

Stvaranje jedne ali trajne veze i multipleksiranje zahtjeva

Veliki mana HTTP/1.1 protokola je taj što preko njega poslužitelj može slati samo jedan podatak i nakon što se on prenese veza se zatvara. Dodatni problem je da se poruke između preglednika i poslužitelja razmijenjuju uzastopno i poslužitelj odbija prihvatiti nove zahtjeve sve dok se postojeći nisu završili. Taj problem se riješavao tako da se stvaralo više veza ali to je dodatno stvaralo druge poteškoće. Stvaranjem nove HTTP dolazi do novih napora jer je opet potrebno vrijeme da se ponovi DNS zapis, riješe informacije o izvoru i odredištu. Otvaranje nove veze je proces koji se odvija za svaki novi zahtjev, tj. za svaki resurs koji će se prenositi korisniku. Ako na web stranici postoji velik broj resursa koje je potrebno dohvatiti, cijeli promet postaje dosta zakrčen. A web stranica često sadrži desetke a nerijetko i više od 100 zahtjeva.

S druge strane, HTTP/2 stvara jednu stalnu TCP vezu između poslužitelja i preglednika, može je stalno držati otvorenom i istovremeno slati više različih resursa. Ta sposobnost poslužitelja da odjednom šalje i prima više datoteka putem jedne veze zovemo multipleksiranje. A i nakon što se veza uspostavi, poslužitelj može primati nove zahtjeve dok šalje odgovore na prošle. Time više nema kašnjenja koja se događaju zbog uspostavljanja novih veza, a nema ni potrebe za održavanje višestrukih veza s jednim te istim klijentom. Takav način rada omogućuje nam drastično povećanje brzine.

Kompresija zahtjeva

Prilikom uspostavljanja veze, šalje se zaglavlje (eng. header) koji nosi informacije vezano uz zahtjev. Kod HTTP/1.1 zaglavlja nisu kompresirana (sažeta, zbijena da im se smanji veličina) a usto se i ponavljaju na svaki zahtjev. Kako raste taj broj zahtjeva, tako raste i količina zaglavlja koja su samo duplicirana. Novi HTTP/2 uklanja sva ta suvišna zlaglavlja a preostalo dodatno kompresira čime se smanji količina podataka.

Server push

Preglednik sam zatraži svaki resurs koji mu treba od poslužitelja, međutim postoje neki slučajevi kada možemo naslutiti koji će mu podaci trebati. Zahvaljujući metodi server push, poslužitelj možemo podesiti tako da unaprijed pripremi i gurne pregledniku resurse za koje mislimo da će korisniku trebati, prije nego što je on uopće došao do zaključka da su mu potrebni. Velika prednost ove metode je da će time korisnici vidjeti sadržaj brzinom munje jer ih već sve čeka spremno.

Ekosustav ga podržava

HTTP/2 ima izrazito dobru podršku i kako vrijeme prolazi ona će samo biti još bolja.

  • Podržavaju ga svi moderni preglednici, uključujući Chrome, Firefox, Edge i Safari.
  • Glavnih poslužiteljski softver ga podržava uključujući Apache (kojeg mi koristimo), IIS, nginx i Tomcat.
  • Većina CDN servisa (mreže za isporuku sadržaja koje su vrlo korisne kao nadopuna radi optimizacije za brzinu i sigurnosti web stranica) ga također podržavaju, uključujući Cloudflare (kojeg mi koristimo), Akamai, AWS i drugi

Čak i kada nema podrške za HTTP/2, sustav je osmišljen tako da je kompatibilan sa starom verzijom i degradira se na njega bez dodatnih problema.

HTTPS

Moramo spomenuti da HTTP/2 zahtijeva instaliran i pravilno konfiguriran SSL certifikat da bi radio.

Velika mana prve verzije protokola je da su njegove veze nezaštićene te hakeri mogu doći do pristupa osjetljivim informacijama. Zbog toga je zadnjih godina na snazi sigurni HTTPS standard koji djeluje preko zaštićene SSL veze. Time je omogućena kriptirana komunikacija što je posebno važno kod novčanih transakcija te za slanje drugih povjerljivih informacija.

Testiranje

Kako možete znati ako vam web stranice podržavaju HTTP/2? Nekoliko je načina, jedan od njih je jednostavna provjera pomoću online alata. Primjerice, poznati CDN servis nudi jednostavan HTTP/2 test, potrebno je samo upisati naziv domene.

Zastarjele metode optimizacije

Dolaskom HTTP/2 protokola neke metode dobre prakse optimizacije odlaze u povijest:

Kombiniranje CSS i JS datoteka

Spajanje više CSS datoteka u jednu te isto tako spajanje JS skripta u jednu veću više nije potrebno. Sažimanje postojećih datoteka je ipak i dalje preporučljivo.

Dijeljenje resursa na više domena

Dijeljenje resursa na više domena ili eng. domain sharding je način posluživanja datoteka sa različitih domena. Preglednik je mogao napraviti maksimalno osam paralelnih veza s poslužiteljem a takva ograničenja zaobilazila su se povlačenjem datoteka obično sa više različitih CDN domena. Danas je ta metoda kontraproduktivna, premda je i dalje korištenje CDN servera poželjno. Ali samo jednog servera.

CSS spriteovi

CSS sprite je metoda kombiniranja više malih slika (često ikona) u jednu kako bi se smanjio broj resursa i nepotrebnog stvaranja veze za svaki zahtjeva resursa. U CSS datoteci bi potom odredili gdje su granice svake sličice. S obzirom da novi protokol uklanja potrebu za stvaranjem novih veza, ova metoda je također postala zastarjela.

Sažetak

Vidjeli smo kako je HTTP/2 od velike važnosti za brze web stranice. Samo je jedan od kotačića koje je potrebno za obaviti jer ne mijenja druge načine optimizacije stranica več ih nadopunjuje.

Kako vaše kotiraju web stranice po brzini, koriste li moderni HTTP protokol? Ako ne, svakako razmislite o promjeni na drugi poslužitelj jer je to od velike tehničke važnosti.