TTFB, brzina servera i keširanje: zašto sajt kasni pre prvog piksela
Pre nego što se na ekranu pojavi bilo šta, pregledač mora da sačeka prvi odgovor servera, a to vreme se meri kao TTFB. Objašnjavamo šta ga usporava i kako ga smanjiti keširanjem stranica, CDN mrežom i pravilnim zaglavljima za keš u pregledaču.
Sadržaj članka
Kada se govori o brzini sajta, najčešće se misli na slike, skripte i fontove. Ali pre nego što pregledač uopšte počne da preuzima bilo šta od toga, mora da dobije prvi odgovor servera. To vreme čekanja zove se TTFB (Time to First Byte, vreme do prvog bajta). Ako server razmišlja sekundu ili dve, nijedna optimizacija slika neće to nadoknaditi. U ovom tekstu objašnjavamo šta TTFB meri, šta ga usporava i kako ga smanjiti keširanjem na serveru, CDN mrežom i pravilnim zaglavljima za keš u pregledaču.
Šta je TTFB i šta tačno meri
TTFB je vreme od trenutka kada pregledač zatraži stranicu do trenutka kada stigne prvi bajt odgovora. U to vreme ulaze:
- eventualna preusmerenja (na primer sa http na https ili sa verzije bez www),
- DNS upit i uspostavljanje veze, uključujući TLS za HTTPS,
- putovanje zahteva do servera i nazad, koje zavisi od udaljenosti,
- vreme koje server troši da pripremi stranicu: izvršavanje PHP koda, upiti ka bazi, pozivi ka drugim servisima.
Google na web.dev kao okvirnu smernicu navodi da je TTFB do 0,8 sekundi dobar za većinu sajtova, mereno kod 75 posto posetilaca. TTFB nije među Core Web Vitals metrikama, ali direktno utiče na LCP, jer se glavni sadržaj ne može prikazati pre nego što HTML stigne. O ostalim metrikama pisali smo u tekstu o Core Web Vitals.
Kako izmeriti TTFB
- PageSpeed Insights prikazuje TTFB iz stvarne upotrebe kada postoji dovoljno podataka, a u laboratorijskom delu savet „smanjite početno vreme odgovora servera“. Kako čitati izveštaj, objasnili smo u tekstu o PageSpeed Insights rezultatima.
- Alati za programere u pregledaču: na kartici Network izaberite HTML dokument i u delu Timing pogledajte stavku „Waiting for server response“.
- Komandna linija, za brzu proveru sa sopstvenog računara:
curl -o /dev/null -s -w "TTFB: %{time_starttransfer}s\n" https://www.vasdomen.rs/ Merite više puta i više različitih stranica. Prvi zahtev često je sporiji jer stranica nije u kešu, a početna stranica može biti keširana dok stranice proizvoda nisu.
Šta najčešće usporava server
| Uzrok | Kako se prepoznaje | Rešenje |
|---|---|---|
| Nema keša stranica | Svaka stranica je podjednako spora, i pri ponovnom otvaranju | Uključiti keširanje stranica na serveru ili kroz dodatak |
| Preopterećen deljeni hosting | TTFB jako varira tokom dana | Bolji paket ili drugi hosting |
| Spori upiti ka bazi | Spore su pretraga, filteri i korpa | Optimizacija baze, objektni keš (Redis) |
| Previše dodataka | Pad brzine posle instalacije novog dodatka | Ukloniti nepotrebne, zameniti teške |
| Stara verzija PHP-a | Hosting nudi noviju verziju koja nije uključena | Preći na podržanu verziju PHP-a |
| Server daleko od posetilaca | Sporo za domaće posetioce i kod keširanih stranica | Server u regionu ili CDN |
| Lanci preusmerenja | Više 301 odgovora pre prave stranice | Jedno direktno preusmerenje |
Mnogi od ovih problema počinju izborom hostinga. Na šta obratiti pažnju pri izboru, opisali smo u tekstu koji hosting izabrati.
Keširanje stranica na serveru
Kod sajtova na WordPress-u svaka poseta bez keša pokreće PHP i niz upita ka bazi. Keš stranica čuva gotov HTML i sledećem posetiocu ga vraća odmah, bez ponovnog generisanja. To je obično najveće pojedinačno poboljšanje TTFB-a.
- Keš na nivou servera, poput LiteSpeed Cache, Nginx FastCGI keša ili Varnish-a, najbrži je jer zahtev ne stiže ni do PHP-a.
- Dodaci za keširanje rade na većini hostinga i dobar su izbor kada serverski keš nije dostupan.
- Objektni keš (Redis ili Memcached) čuva rezultate upita ka bazi i pomaže stranicama koje se ne mogu keširati u celini, kao što su korpa i nalog kupca.
Pazite na izuzetke: korpa, plaćanje, nalog korisnika i stranice sa ličnim podacima ne smeju se keširati kao javne stranice. Dobri dodaci to podrazumevano isključuju, ali posle podešavanja uvek testirajte kupovinu. Širi pregled optimizacije dat je u vodiču kako ubrzati WordPress sajt.
CDN i keš u pregledaču
CDN (content delivery network) čuva kopije fajlova na serverima širom sveta i isporučuje ih sa lokacije najbliže posetiocu. Uvek pomaže kod statičkih fajlova, a ako je podešen da kešira i HTML, može znatno smanjiti TTFB za udaljene posetioce. Za sajt čiji su posetioci uglavnom iz Srbije, a server u regionu, efekat na TTFB je obično manji.
Keš u pregledaču ne utiče na prvu posetu, ali ubrzava svaku sledeću jer se fajlovi ne preuzimaju ponovo. Njime upravlja zaglavlje Cache-Control. Uobičajena podela izgleda ovako:
# Slike, CSS i JS sa verzijom u nazivu fajla
Cache-Control: public, max-age=31536000, immutable
# HTML stranice
Cache-Control: no-cache Dug rok važenja bezbedan je samo za fajlove čiji se naziv menja kada se promeni sadržaj, na primer style.3f9a.css. HTML stranice treba ostaviti sa kratkim rokom ili vrednošću no-cache, koja znači da pregledač sme da čuva kopiju, ali pre upotrebe mora da proveri sa serverom da li je i dalje aktuelna. Na Apache serveru rokovi se mogu podesiti i u .htaccess fajlu:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/webp "access plus 1 year"
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/javascript "access plus 1 year"
</IfModule> Zaključak
TTFB je temelj brzine sajta: dok server ne odgovori, sve ostalo čeka. Najveći dobitak obično donosi keširanje stranica, zatim kvalitetan hosting blizu posetilaca, uklanjanje nepotrebnih dodataka i preusmerenja, a CDN i pravilna Cache-Control zaglavlja dopunjuju sliku. Ako vam PageSpeed Insights prijavljuje sporo vreme odgovora servera, a ne znate odakle da počnete, pošaljite nam upit i izmerićemo gde tačno vaš sajt gubi vreme.
Česta pitanja
Koliki TTFB je dobar?
Google u svojim smernicama na web.dev navodi da je TTFB od 0,8 sekundi ili manje dobar za većinu sajtova, mereno kod 75 posto posetilaca. To je okvirna vrednost, a ne zvanična Core Web Vitals metrika. Kod keširanih stranica na dobrom hostingu vrednosti su obično znatno niže.
Da li TTFB direktno utiče na pozicije na Google-u?
TTFB nije jedna od Core Web Vitals metrika, ali utiče na njih, posebno na LCP, jer se ništa ne može prikazati pre nego što stigne prvi odgovor servera. Brzina je samo jedan od mnogih signala, pa brži server ne garantuje bolje pozicije, ali poboljšava iskustvo posetilaca.
Zašto je TTFB u PageSpeed Insights različit pri svakom testu?
Laboratorijski test meri jedan zahtev sa jedne lokacije, pa rezultat zavisi od toga da li je stranica bila u kešu, koliko je server bio opterećen i koliko je udaljen test server. Pouzdaniji su podaci iz stvarne upotrebe, prikazani u gornjem delu izveštaja kada ih ima dovoljno.
Da li mi treba CDN ako su svi posetioci iz Srbije?
Ne mora. Ako je server u regionu i stranice su keširane, CDN često ne donosi veliku razliku za domaće posetioce. Koristan je kada imate posetioce iz više zemalja, mnogo statičkih fajlova ili potrebu za dodatnom zaštitom. Ako je server daleko, na primer u SAD, razlika može biti primetna.
#TTFB#brzina servera#keširanje#CDN#Cache-Control