Tovább a tartalomhoz

ETag vagy Last-Modified

A teszt azt nézi, hogy a nyitóoldal válasza küld-e ETag vagy Last-Modified fejlécet, amellyel a böngésző rövid 304-es válaszból megtudhatja, változott-e az oldal.

Az ETag és a Last-Modified válaszfejléc úgynevezett validátor: a böngésző a következő látogatáskor visszaküldi az értéket (If-None-Match, illetve If-Modified-Since kérésfejlécben), a szerver pedig, ha semmi nem változott, törzs nélküli 304 Not Modified választ ad. A látogató így nem tölti le újra az egész oldalt. Ha egyik fejléc sincs, a lejárt gyorsítótári bejegyzést a böngészőnek mindig teljes egészében újra le kell töltenie.

A riport a nyitóoldal válaszában keresi a két fejlécet.

  • Megfelelő: van ETag vagy Last-Modified fejléc (elég az egyik).
  • Hiba: egyik sincs.

A teszt nem ellenőrzi, hogy a szerver tényleg helyesen kezeli-e a feltételes kéréseket (a 304 választ), csak a fejlécek meglétét nézi. Csak a nyitóoldal HTML-jét méri.

Statikus fájloknál (képek, CSS, JavaScript) a webszerver maga küldi ezeket: az nginx az etag on; alapbeállítással automatikusan generál ETag fejlécet a statikus fájlokhoz, az Apache a FileETag direktívával (alapértéke MTime Size) teszi ugyanezt. A kérdés a dinamikusan előállított HTML-nél merül fel, mert ott a webszerver nem tudja, mikor változott az oldal tartalma.

Ezért nincs egyetlen, minden oldalra érvényes kódrészlet: a helyes ETag vagy Last-Modified érték csak az oldalt előállító alkalmazás ismerete alapján adható meg. A lehetőségek:

  1. Oldal-gyorsítótár. Ha a HTML kész fájlként vagy gyorsítótári bejegyzésként tárolódik, a gyorsítótár-megoldás dönti el, küld-e validátort; a bekapcsolás után a riporttal ellenőrizd, megjelent-e a fejléc. Lásd az Oldal-gyorsítótár oldalt.
  2. Az alkalmazás kódja. Az alkalmazás a tartalom módosítási idejéből Last-Modified fejlécet, a tartalom lenyomatából ETag fejlécet küldhet, és a feltételes kérésre 304-gyel válaszolhat.
  3. WordPress. A WordPress referenciája szerint a core a Last-Modified, ETag és 304 válaszokat csak hírcsatornák (feed) kiszolgálásakor küldi. A hagyományos oldalakra ezt a gyorsítótár-megoldásnak vagy saját kódnak kell adnia.

Ha mindkét fejlécet el tudod küldeni, a web.dev az ETag-et javasolja, mert pontosabb: az ETag a tartalom alapján, a Last-Modified az idő alapján dönt.

Futtasd újra a riportot, vagy parancssorból:

Terminál
curl -sI https://pelda.hu/ | grep -iE "^(etag|last-modified)"

A feltételes kérés működését is kipróbálhatod: az előző válasz ETag értékével küldj If-None-Match fejlécet.

Terminál
curl -sI -H 'If-None-Match: "ide-az-etag-ertek"' https://pelda.hu/ | head -1

Ha az első sor 304 Not Modified, a szerver jól kezeli a feltételes kéréseket.

Készült:

Tiszteletben tartjuk a magánszférádat

Sütiket használunk a böngészési élmény javítására és a forgalom elemzésére. Az analitika csak akkor indul, ha engeded. Adatvédelmi irányelvek, Sütitájékoztató.

Sütibeállítások