HTTP ETag

Из Википедије, слободне енциклопедије

ETag ili oznaka entiteta, je deo HTTP protokola svetske mreže. To je jedan od nekoliko mehanizama koji HTTP pruža za validaciju veb keš-a, i koji omogućava klijentu da napravi uslovne zahteve. Etag može da se koristi za kontrolu optimistične konkurentnosti[1] , kao pomoć u sprečavanju istovremenog ažuriranja resursa da zamene jedni druge.


Etag je indetifikator dodeljen od strane veb servera na specifičnu verziju resursa pronađenu na URL. Ako resurs na tom URL-u sadrži neke promene, Etag je dodeljen.

Raspoređivanje rizika[уреди]

Upotreba entitet oznaka u HTTP zaglavlju je opciono. Način na koji se generišu oznake entiteta nikada nije bio preciziran.

Uobičajne metode Etag generacija uključuju korišćenje heš funkcije - izbegavanje sudara.


Da bi se izbeglo korišćenje keš podataka, metode koje se koriste za generisanje oznaka entiteta treba da garantuju (koliko je to praktično) da je svaki Etag jedinstven.


Jaka i slaba validacija[уреди]

ETag mehanizam podržava obe validacije, i jaku i slabu. One se razlikuju po prisustvu početnog znaka W/.

"123456789" -- jaka ETag validacija
W/"123456789" -- slaba ETag validacija

Jaka validacija ETag označava da je sadržaj dva resursa bajt-po-bajt identičan i da su svi entiteti polja nepromenjeni. Jaka validacija dozvoljava keširanje i sklapanje parcijalnih odgovora.

Slaba validacija ETag označava da su dva resursa semantički ekvivalentni, što znači da su za praktičnu svrhu zamenljivi i te keširane kopije mogu da se koriste. Resursi nisu nužno bajt-po-bajt identični. Slabi ETagovi mogu biti korisni u slučajevima u kojima jaki ETagovi nisu praktični za generisanje veb servera.

Tipična upotreba[уреди]

U tipičnoj upotrebi, kada je URL preuzet, server će vratiti resurs zajedno sa odgovarajućom vrednošću ETaga, koja se nalazi u HTTP "ETag" polju:

ETag: "686897696a7c876b7e"


Klijent tada može da odluči da kešira resurs zajedno sa ETagom. Kasnije, ako klijent želi da ponovo preuzme isti URL, poslaće prethodno sačuvanu kopiju ETaga uz zahtev u "Ako-nije-isti" polju.

If-None-Match: "686897696a7c876b7e"

Na ovaj naknadni zahtev, server sada može da uporedi ETag klijenta sa ETagom trenutne verzije izvora. Ako se ETag vrednosti poklapaju, što znači da resurs nije promenjen, tada server može da pošalje nazad veoma kratak odgovor sa statusom HTTP 304 Not Modified. 304 status govori klijentu da je njegova sačuvana verzija dobra i da treba da je koristi.

Međutim, ako se ETag vrednosti ne poklapaju, što znači da je resurs verovatno promenjen, onda je pun odgovor vraćen, uključujuči i sadržaj resursa, baš kao da ETagovi nisu korišćeni. U ovom slučaju klijent može da odluči da zameni prethodno sačuvane verzije sa novim vraćenim resursom i novim ETagom.

ETag vrednosti mogu da se koriste u sistemu kontrolisanja veb stranica. Efikasno praćenje veb stranica je otežano činjenicom da većina veb sajtova nema postavljena ETag zaglavlja za veb stranice. Kada veb kontrolor nema nagoveštaja da li je veb sadržaj promenjen, sadržaj mora biti vraćen i analiziran, korišćenjem prebrojavanja resursa i za izdavača i za pretplatnika.

Reference[уреди]

Spoljašnje veze[уреди]