Što je HTTP 304 Not Modified?
HTTP statusni kod 304 Not Modified označava da se resurs kojem pokušavate pristupiti nije promijenio od vašeg posljednjeg zahtjeva. U tom slučaju server ne šalje ponovno sadržaj, već očekuje da preglednik prikaže verziju koja je već pohranjena u njegovoj predmemoriji (cacheu).
Statusni kod 304 koristi se kako bi se izbjegao nepotreban prijenos podataka, jer klijent već ima traženi resurs lokalno spremljen. Time se smanjuje potrošnja bandwidtha i ubrzava učitavanje stranice ili resursa.
HTTP 304 Not Modified pripada 3xx skupini HTTP statusnih kodova, pri čemu:
- broj 3 označava preusmjeravanje
- xx predstavlja dodatne znamenke koje preciznije opisuju status HTTP zahtjeva
Kako funkcionira HTTP 304 Not Modified?
HTTP 304 Not Modified smatra se oblikom klijentskog preusmjeravanja, jer se obrada događa na strani klijenta, odnosno korisničkog uređaja ili sustava.
Proces započinje kada klijent, primjerice internetski preglednik ili web crawler, pošalje HTTP zahtjev serveru. U ovom primjeru klijent traži pristup web stranici na adresi yourdomain.com. Server zatim provjerava je li se traženi resurs promijenio od posljednjeg puta kada je klijent pristupio stranici.
Ako promjena nije bilo, server vraća odgovor 304 Not Modified bez ponovnog slanja sadržaja. Preglednik tada učitava već spremljenu verziju iz cachea, što rezultira bržim prikazom stranice i manjim opterećenjem servera.
GET /index.html HTTP/1.1 Host: yourdomain.com
Ako klijent šalje zahtjev po prvi put, server odgovara s kodom 200 OK i ETag oznakom. Traženi resurs tada je uključen u tijelo poruke.
HTTP/1.1 200 OK ETag:92g93nb790256hwp72b9
ETag (skraćeno od entity tag) je HTTP zaglavlje odgovora koje se sastoji od niza brojeva, slova i simbola, a služi za identifikaciju određene verzije resursa poslane klijentu. ETag se mijenja svaki put kada se resurs ažurira.
Kada klijent ponovno pošalje zahtjev za pristup istom resursu, u zahtjev će uključiti zaglavlje If-None-Match. Ovo zaglavlje sadrži ETag koji je server poslao klijentu prilikom prethodnog posjeta.
Neki klijenti mogu također uključiti zaglavlje If-Modified-Since, koje sadrži vrijeme posljednjeg zahtjeva.
GET /index.html HTTP/1.1 Host: yourdomain.com If-None-Match: 92g93nb790256hwp72b9 If-Modified-Since: Fri, 19 Apr 2024 12:00:59 GMT
Server će zatim usporediti vrijednosti zaglavlja If-None-Match i If-Modified-Since s podacima koje ima spremljene. Ako se vrijednosti podudaraju, server neće poslati resurs. Umjesto toga, odgovorit će statusnim kodom 304 Not Modified, čime označava da se resurs nije promijenio od posljednjeg posjeta klijenta.
HTTP/1.1 304 Not Modified
Ako je klijent internetski preglednik, on će posjetitelju prikazati verziju resursa koja se već nalazi u njegovoj predmemoriji. Ako je klijent tražilica, poput Googlea, koristit će verziju sadržaja koju je prethodno pohranila.
Važno je naglasiti da zaglavlje If-None-Match ima prednost u odnosu na If-Modified-Since. Ipak, If-Modified-Since se češće koristi jer je jednostavnije za implementaciju.
Kako Googlebot koristi HTTP 304 Not Modified
Google podržava zaglavlja If-Modified-Since i If-None-Match te očekuje da server vrati statusni kod 304 Not Modified ako se sadržaj nije promijenio od posljednjeg posjeta Googlebota.
Međutim, Google ne uključuje ta zaglavlja u svaki zahtjev prilikom indeksiranja vaše stranice. Koristi ih samo kada procijeni da su potrebna za određeni crawl.
Čak i u slučajevima kada Google ne pošalje ta zaglavlja, server se može konfigurirati da Googlebotu vrati odgovor 304 Not Modified ako sadržaj nije promijenjen od njegove posljednje posjete.
SEO prednosti statusnog koda 304 Not Modified
Statusni kod 304 Not Modified pomaže u upravljanju tzv. crawl budgetom. Crawl budget predstavlja maksimalan broj stranica koje tražilica može pregledati na vašoj web stranici unutar određenog vremenskog razdoblja.
Kada tražilice indeksiraju web stranicu, troše server resurse i bandwidth. Ako prečesto posjećuju vašu stranicu, mogu nepotrebno opteretiti server, što može dovesti do usporenja stranice ili čak privremenog nedostupnosti.
Kako bi to izbjegle, tražilice procjenjuju kapacitet servera i na temelju toga određuju crawl budget, čime nastoje očuvati performanse stranice i kvalitetu korisničkog iskustva.
Za manje web stranice crawl budget uglavnom nije problem. On postaje relevantan kod stranica s 10.000 ili više jedinstvenih URL-ova ili kod stranica čiji su URL-ovi označeni kao Discovered – Currently not indexed u Google Search Consoleu.
Važno je napomenuti da procijenjeni kapacitet servera koji koristi Google ne mora odgovarati stvarnom kapacitetu vašeg servera. Google ga određuje prema vlastitim kriterijima i često je konzervativniji od stvarnih mogućnosti servera.
Ostale prednosti statusnog koda 304 Not Modified
Osim SEO prednosti, statusni kod 304 Not Modified donosi i konkretne koristi posjetiteljima i tražilicama.
Posjetitelji troše manje podataka jer se sadržaj ne preuzima ponovno sa servera, već se učitava iz predmemorije preglednika. To ujedno omogućuje i brže učitavanje stranice.
Tražilice, s druge strane, koriste velike količine resursa za indeksiranje interneta. Budući da ti resursi nisu neograničeni, statusni kod 304 sprječava ih da iznova troše resurse na učitavanje sadržaja koji se nije promijenio.
