Ovo je prvi članak u nizu na temu optimizacije web performansi. Cilj je da napravi pregled osnovnih stvari, ukaže odakle da krenete i na šta da se fokusirate prvo. Ukratko ćemo proći kroz alate i važne metrike sa kojima ćete dobiti prve informacije o performansama svog sajta. Preporuke su nezavisne od tehnologije koja se koristi u pozadini.
Ovaj članak vam može biti koristan ukoliko krećete da se bavite optimizacijom, ili ste već koristili neki od alata, međutim niste najsigurniji koje su metrike važne i da li ulažete vreme u prave stvari. Ovde ćete dobiti odgovor na sledeća pitanja:
Kako vreme prolazi optimizacija dobija sve više i više na značaju. Sada nije dovoljno da budete digitalno prisutni i da same informacije budu dobre već i da korisnik u optimalnom vremenu dođe do sadržaja koji ga zanima, kako kroz navigaciju sajta tako i kroz samu brzinu dostupnosti traženih informacija. Neki od glavnih razloga zašto je važno uložiti vreme su:
Da li ste znali?
Kao neko ko se pretežno bavi razvojem na serverskoj strani, u početku mi se dešavalo da optimizaciju pretežno tu i baziram. Ulagali smo dosta vremena u optimizaciju same infrastrukture, aplikacije, i sl., međutim vreme koje smo ulagali nije odgovaralo rezultatu koji dobijamo. Daljim istraživanjem smo naišli na različite alate koji su nam pomogli da primetimo da iako je sajt koji optimizujemo, po ukupnom vremenu učitavanja bio najbrži, iz ugla korisničke percepcije bio je najsporiji. Kao u većini slučajeva optimizacije na kojima sam radila, pogledajte u nastavku prikaz ukupnog vremena, gde se vidi poređenje serverske i klijentske strane:
Serversko vreme učitavanja stranice je samo mali deo prvog reda u odnosu na klijentsko vreme. U ovom slučaju server ne predstavlja mesto u koje prvo treba uložiti vreme. U većini slučajeva na kojima sam radila uticaj klijentske strane je bio oko 80%, a serverske oko 20%. Ovde izuzimam ekstremne slučajeve kada aplikacija nije dostupna, kao i kada određeni serverski odgovori imaju zahtevne operacije sa bazom i traju dugo ili sl. Ovo možete primetiti iz izveštaja na osnovu vremena trajanja pojedinačnih zahteva.
Optimizacija na serverskoj strani najčešće oduzima više vremena, a ima manji benefit na celokupni rezultat. Pogledajte vremensku liniju svih zahteva na strani, detektujte da li je problem na serverskoj ili klijentskoj strani i prema tome odaberite alate i dalje usmerite vreme koje ulažete.
Ukoliko ste krenuli da istražujete i čitate na ovu temu, verovatno ste naišli na različite metrike. Dosta njih su prikazane u samim pregledačima kao što su vreme učitavanja DOM-a, vreme učitavanja kompletne strane itd. Sintetički alati prikazuju rezultate za metrike poput prvog prikazivanja sadržaja (First Contentful Paint), prvog značajnog prikazivanja (First Meaningful Paint), indeksa brzine i slično. Možda ste se pitali koje su metrike relevantne i na šta treba najviše obratiti pažnju.
U nastavku sledi podela na dva osnovna tipa metrike:
Metrike pregledača su manje značajne. Može da se dogodi da je učitan DOM, ali da je CSS-om sakriven određeni element strane, ili da je učitan sadržaj strane a da korisnik ne može da izvrši bilo kakav vid interakcije. Veoma je važna korisnička percepcija učitavanja sajta. Onog momenta kada korisnik stekne utisak da je sajt spreman, počinje da ga koristi bez obzira na to da li su se učitali svi resursi koje strana zahteva. Metrike koje su orijentisane na korisnike definišu upravo stvari ovog tipa.
Referentne vrednosti za metrike možete naći na ovom linku, pogledajte kategoriju performanse.
1. Vreme do prvog bajta (TTFB - Time to First Byte)
Serverski orijentisana metrika koja nam govori koliko brzo server isporučuje odgovor, tj. prvi bajt odgovora. Korisna za detekciju usporenja na serverskoj strani.
2. Prvo prikazivanje (First Paint)
Daje nam informaciju o tome kada se prikazao prvi piksel odgovora na ekranu. Ovo, kao i preostale metrike koje su orijentisane na pregledač, nije nešto što je važno korisniku, za razliku od metrike za prvi prikaz sadržaja (First Contentful Paint) i metrika za prvo značajno prikazivanje (First Meaningful Paint) koje su opisane u nastavku. U trenutku kada se prikaže prvi piksel, korisnik ne može da konzumira sadržaj.
3. Vreme učitavanja stranice (Page Load)
Trenutak kada su preuzeti svi resursi koje strana zahteva (slike, js, css, ...) i strana prikazana u celini. Uključuje sve što postoji na strani, kako vidljive elemente na prvom ekranu, tako i sve preostale.
1. Prvo prikazivanje sadržaja (First Contentful Paint)
Prikaz prvog sadržaja na strani, najčešće to bude prikaz navigacije. Razlika u odnosu na metriku prvog prikaza (First Paint) je što mora da sadrži tekst, nešto što ljudski mozak može da procesuira.
2. Prvo značajno prikazivanje (First Meaningful Paint)
Za razliku od metrike prvog prikaza sadržaja (First Contentful Paint), ova predstavlja trenutak kada se prikaže prvi paragraf, naslov. Nešto što je sadržaj same strane, zbog čega je korisnik i došao na naš sajt.
3. Vreme početka interakcije (Time To Interactive)
Trenutak kada korisnik može da ima interakciju na strani. Dešava se da, iako je sadržaj dostupan na strani, korisnik još uvek ne može, putem linka, da ode na drugu stranicu, ili da pomeri sadržaj ka dole. Najčešće se javlja kod klijentskih aplikacija pisanim u React-u, Angularu, ...
4. Vreme prikaza najvećeg sadržaja (Largest Contentful Paint)
Meri vreme prikaza elementa koji zauzima najviše mesta na strani. Najčešće je to slika, i za ovaj tip sadržaja želimo da se što pre prikaže na strani.
5. Vreme prvog neaktivnog procesora (First CPU Idle)
Prethodni naziv ove metrike je bio “Vreme prve interakcije” i ono predstavlja trenutak kada je korisniku omogućena minimalna interakcija na strani. Većina UI elemenata je interaktivna.
6. Indeks brzine (Speed Index)
Daje nam informaciju o tome koliko brzo se sajt učitava, tj. koliko brzo se elementi prikazuju na strani.
Na slici iznad možete da primetite da je potrebno identično vreme za učitavanje kompletne strane “A”, kao i strane “B” (12s), s tim što postoji očigledna razlika u dinamici prikazivanja sadržaja. Na primeru strane “A”, oko 90% sadržaja ukupne strane je prikazano već posle 400ms, dok se na primeru strane “B”, ta ista vrednost dostiže tek nakon 11s. Ova metrika nam služi za bolje razumevanje dinamike prikaza elemenata na strani.
Sama percepcija korisnika je mnogo važnija od stvarnog vremena potrebnog za učitavanje sajta. Ukoliko korisnik ima utisak da je sadržaj prikazan, ranije će početi da ga koristi, bez obzira na to da li su se svi resursi na strani učitali.
7. Maksimalan zastoj prve interakcije korisnika (Max potential First Input Delay)
Vreme koje protekne od prve interakcije korisnika, kao što je npr. klik na određeni link, do trenutka kada pregledač može da odgovori na nju. Računa se kao vreme najduže aktivnosti nakon prvog prikaza sadržaja. Pre prvog prikaza sadržaja, korisnik i nije u mogućnosti da izvrši bilo koji vid interakcije.
8. Prilagođena metrika (Custom metric)
Metrika koju sami definišemo u zavisnosti od samog biznisa. Npr. Pinterest metrika je prikaz prvog pina, dok je Twitter metrika prikaz prvog tweeta.
Ukoliko vam se dogodilo da posle nekog vremena primetite da je vaš sajt značajno usporio od trenutka kada ste završili razvoj, a pritom znate da je u međuvremenu bilo dosta izmena na različitim nivoima i da ćete teško detektovati šta je uzrok i odakle da počnete, alati u nastavku vam mogu biti od velikog značaja kako bi optimizovali vreme održavanja i razvoja samog sajta.
Postoje dva tipa alata koji mogu biti korisni prilikom merenja performansi sajta, a to su alati za:
Ukoliko vas zanima kakav je korisnički doživljaj vašeg sajta, ovaj tip alata vam može biti od koristi i dati odgovore na sledeća pitanja:
Ovim alatima su prikazane performanse sajta upravo na osnovu iskustva pravih korisnika. Prilikom implementacije, potrebno je da se uključe skripte samog alata koji se koristi za merenje i generisanje izveštaja. Vrednosti koje se beleže su iz pregledača pravog korisnika. Koriste se na produkcionom okruženju, skuplji su, ali su realniji jer su bazirani na pravim korisnicima umesto pretpostavkama marketing ili razvojnog tima.
Neki od alata za monitoring realnih korisnika su:
U okviru Google Analitike takođe imate informacije o brzini učitavanja strane pravih korisnika, u sekciji Behaviour/Site Speed.
Ti podaci su dosta siromašniji u odnosu na informacije dobijene od gore navedenih alata.
Sintetički alati su alati koji vrše analizu sajta u “laboratorijskim” uslovima. Postoje skripte koje simuliraju posetu korisnika i koje se periodično izvršavaju. Ovi alati pružaju mogućnost da se kontroliše samo okruženje pod kojim se testira, u vidu podešavanja geografske lokacije, uređaja, mreže preko koje se pristupa i slično. Koriste se za razvojno i produkciono okruženje, i jeftiniji su. Neki od njih mogu lokalno da se instaliraju i postave da budu sastavni deo kontinuirane nadogradnje (CI - Continuous Integration).
Većina ovih alata sadrži mogućnost slanja notifikacija u slučaju da se prekorači određena vremenska granica. Npr. odgovor servera tj. TTFB je veći od 200 ms. Korisno je imati ovu vrstu informacija što ranije, kako bi promena ponašanja mogla da se poveže sa aktivnostima koje su rađene na samom sajtu. Tako ćete brže detektovati uzrok i pobrinuti se za potrebne optimizacije. Usporenje može biti uzrokovano kako infrastrukturalnom promenom, tako i prelaskom sajta na noviju verziju.
Neki od sintetičkih alata su:
Alat nudi veliki broj mogućnosti prilikom pokretanja testova, kao što su: definisanje lokacije sa koje se pokreće test, odabir broja testova koji se pokreću, podešavanje specifičnih zaglavlja zahteva, prikaz metrike specifične za sam sajt (ubacivanjem predefinisane skripte), mogućnost da se testovi izvrše i u slučaju da postoji osnovna autentifikacija, itd.
Jedan tip testova koji postoji kao mogućnost, je upoređivanje sa konkurentskim sajtovima. Ovde možete da dobijte osnovnu povratnu informaciju o tome kako izgleda učitavanje vašeg sajta u odnosu na konkurenciju, iz korisničke perspektive.
2. TestMySite
Ukoliko želite da vidite kako performanse vašeg sajta utiču na biznis:
Google Page Speed Insights je od 2018. godine baziran na alatu Lighthouse. Na sledećem linku možete videti na koji način se vrši kalkulacija ocene za kategoriju performanse. Prikazane su metrike koje su deo ukupne formule, svaka od njih ima različitu važnost u samoj formuli, kao i broj poena koji nosi u zavisnosti od broja sekundi za koji se ispuni.
4. Chrome Devleoper Tool
Lighthouse je takođe u pozadini "Audit" panela u okviru alata Chrome Developer Tool. Imate opciju da simulirate zagušenje mreže i odaberete tip uređaja sa kog se pristupa. Zgodan je za pokretanje u toku razvoja, za razliku od Google Page Speed Insight-a možete da ga koristite na lokalnom okruženju.
5. GT Metrix
GTMetrix nudi besplatnu verziju koja ima dosta funkcionalnosti, kao na primer mogućnost da se upamti istorija prethodnih testova, ili mogućnost da se uporede konkurentni sajtovi ili dve verzije istog sajta. Sem GT Metrix ocene, prikazano je i YSlow rangiranje, kao i preporuke za dalju optimizaciju.
Na narednoj slici možete primetiti koji su metrike dostupne u GTMetrix alatu, u podešavanjima za slanje notifikacija, u slučaju da se prekorači određena vrednost.
6. Pingdom
Pingdom sem mogućnosti nadgledanja performansi učitavanja strana, nudi i monitoring realnih korisnika, kao i dostupnost sajta i značajnih transakcija, kao što su npr. kupovina ili prijava. Ima mogućnost pokretanja testova sa 7 različitih geografskih lokacija.
Brzina učitavanja sajta je jedan od važnih aspekata korisničkog iskustva, i igra sve veću ulogu u poslednje vreme. Treba obratiti podjednako pažnju na nju u odnosu na ostale aspekte korisničkog iskustva, kao što su izgled, lakoća korišćenja, navigacija…
U članku su prikazane metrike koje su važne, referentne vrednosti kao i alati koji su značajni u procesu razvoja. Moje preporuke su da: