Technikai

ETag és Last-Modified fejléc WordPress oldalon: mit állíts be és mit hagyj békén

ETag és Last-Modified fejléc WordPress alatt. Erős és gyenge ETag, mit állíts be Nginx és LiteSpeed alatt, és mit hagyj békén a CDN mellett.

Scheo · · olvasási idő ~10 perc · Szerző: Schmidt Péter

Összefoglalva: Az ETag és a Last-Modified nem gyorsítja az oldalt, hanem lehetővé teszi, hogy a böngésző és a bot letöltés nélkül, 304-es válasszal erősítse meg a másolatát. A haszon a nagy képtárakon és a botforgalomban jelentkezik, nem a látogatói sebességben.

Mit csinál valójában az ETag és a Last-Modified?

Rövid válasz. Mindkettő újraérvényesítő fejléc, vagyis nem attól gyorsul az oldal, hogy ott vannak, hanem attól, hogy a böngésző vagy a bot a lejárt másolatát egy 304-es válasszal is megerősítheti, teljes letöltés nélkül.

ETag és Last-Modified fejléc WordPress oldalon: mit állíts be és mit hagyj békén
ETag és Last-Modified fejléc WordPress oldalon: mit állíts be és mit hagyj békén

A Last-Modified egy időbélyeg, amit a szerver a válasszal küld. A kliens a következő kérésnél If-Modified-Since fejlécben visszaküldi, és ha a tartalom azóta nem változott, 304 Not Modified érkezik, üres törzzsel. Az ETag ugyanezt csinálja, csak nem idővel, hanem egy azonosító karakterlánccal, amit a szerver a fájl tartalmából vagy metaadataiból számol. A párja az If-None-Match kérésfejléc.

A kettő nem zárja ki egymást. A szabvány szerint ha mindkettő jelen van, a kliensnek az ETag-et kell erősebb validátornak tekintenie, a Last-Modified pedig tartalék marad. Hivatalosan igazolt, hogy az újraérvényesítés menetét az RFC 9110 és az RFC 9111 írja le, és hogy a Google Search Central dokumentációja külön kitér a 304-es válaszok helyes kiszolgálására a feltérképezési hatékonyság kapcsán.

Amit a legtöbb WordPress-oldalon félreértenek, az a következő. Ezek a fejlécek csak akkor érnek bármit, ha a Cache-Control már lejárt, vagy eleve rövid. Egy egy évre gyorsítótárazott, verziózott fájlnevű CSS-t a böngésző meg sem kérdez újra, ott az ETag pusztán egy plusz karakterlánc a válaszban.

Mi a különbség az erős és a gyenge ETag között?

Rövid válasz. Az erős ETag bájtra pontos egyezést ígér, a gyenge, amit a W/ előtag jelöl, csak annyit, hogy a tartalom jelentése ugyanaz.

Az erős ETag akkor és csak akkor egyezik, ha a két válasz törzse bájtról bájtra azonos. Ennek van egy nagyon gyakorlati következménye. Erős ETag mellett a szerver ki tud szolgálni Range-kéréseket, tehát a félbeszakadt letöltés folytatható, és a nagy fájl darabolva is kérhető. Gyenge ETag mellett az If-Range feltétel nem teljesül, a kliens az egészet újrakezdi.

A gyenge ETag nem hibás és nem is rosszabb minőségű. Pontosan arra való, hogy a szerver akkor is mondhasson igent az újraérvényesítésre, ha a bájtok közben megváltoztak, de a jelentés nem. Ilyen a különböző tömörítési szintekkel kiszolgált ugyanaz a HTML, vagy az a minifikáló, ami két futás között más sorrendbe rakja a szóközöket.

A formátum szabad szemmel is felismerhető. Az erős alak idézőjelek közé zárt karakterlánc, a gyenge ugyanaz, elé tett W/ jelöléssel. Szakmai feltételezés a részemről, hogy a magyar piacon futó WordPress-oldalak többségén a HTML-válasz vagy gyenge ETag-et kap, vagy egyáltalán nem kap ETag-et, mert a kimenetet menet közben tömöríti valami.

Miért ad sok magyar tárhely gyenge ETag-et?

Rövid válasz. Mert a tartalom a fájlrendszer és a kliens között még átmegy egy tömörítő vagy átíró rétegen, és ott a bájtra pontos ígéret már nem tartható.

A leggyakoribb okok hazai csomagokon a következők.

Saját tapasztalat. Amikor magyar tárhelyeken végignéztem ezt, a statikus asseteknél szinte mindig volt valamilyen validátor, a HTML-nél viszont gyakran egyik sem, se ETag, se Last-Modified. A feedeknél vegyesebb a kép, ott a WordPress maga küld Last-Modified fejlécet, csak a tárhely cache-rétege néha lenyeli.

Hogyan olvasod ki a fejléceket curl-lel?

Rövid válasz. Egy curl -I hívás megmutatja, milyen validátor jön, egy második hívás pedig azt is, hogy a szerver tényleg ad-e 304-et.

Az első lépés a nyers fejléc-lista, külön a HTML-re és külön egy feltöltött képre.

A kimenetből a Cache-Control, az ETag és a Last-Modified sor érdekes. A meglétük viszont még semmit nem bizonyít, a lényeg az, hogy a szerver reagál-e rájuk. Ezt így ellenőrzöd.

Ha ezekre 304 jön vissza, a lánc működik. Ha 200-at kapsz a teljes fájllal, akkor a szerver figyelmen kívül hagyja a validátort, és minden bot minden körben újra letölti a képet. Ha a tömörített valóságot akarod látni, tedd hozzá az -H 'Accept-Encoding: gzip, br' kapcsolót, mert sok szerver csak ilyenkor vált gyenge ETag-re.

Melyik fejléc melyik oldaltípuson legyen ott?

Rövid válasz. Statikus asseten mindkettő rendben van, HTML-en a Last-Modified a fontosabb, feeden a kettő együtt hoz a legtöbbet, bejelentkezett felületen pedig egyik sem való.

Hivatalosan igazolt, hogy a Google feltérképezője kezeli az If-Modified-Since és az If-None-Match fejléceket, és a 304-es válasz nem terheli ugyanúgy a feltérképezési kapacitást, mint egy teljes letöltés. Hogy ez egy adott oldalon mekkora nyereség, az már mérés kérdése.

Mikor írják felül a cache-bővítmények ezeket a fejléceket?

Rövid válasz. Szinte mindig, amikor statikus HTML-fájlt tesznek a dinamikus válasz helyére, mert onnantól a validátor forrása a cache-fájl, nem a tartalom.

Saját tapasztalat. A leggyakoribb rejtett mellékhatás nem az, hogy eltűnik az ETag, hanem hogy a Last-Modified minden cache-ürítésnél előreugrik. Ha az oldal naponta többször ürít teljes cache-t (új bejegyzés, widget-módosítás, bővítmény-frissítés), akkor a botok minden körben 200-at kapnak, pedig a tartalom nem változott. Szakmai feltételezés, hogy ez több fölösleges forgalmat termel, mint amennyit az ETag finomhangolása valaha megspórolna.

Hogyan kapcsolod ki az ETag-et Nginx alatt, ha a CDN már kezeli?

Rövid válasz. Egyetlen etag off; sorral, utána pedig ellenőrzöd, hogy a Last-Modified megmaradt-e.

  1. Nyisd meg az oldal szerverblokkját, jellemzően a /etc/nginx/sites-available/ könyvtárban.
  2. Tedd be az etag off; sort a statikus assetek location blokkjába, vagy ha az egész oldalra kéred, a server blokkba.
  3. Ha a CDN a Last-Modified értéket használja gyorsítótár-kulcsként, azt hagyd bekapcsolva. Teljes letiltáshoz az add_header Last-Modified ""; és az if_modified_since off; páros kell, de erre ritkán van valódi ok.
  4. Ellenőrizd a konfigot az nginx -t paranccsal, majd systemctl reload nginx.
  5. Nézd meg curl-lel az eredeti szervert és a CDN peremcsomópontját is, mert a kettő válasza eltérhet.

Fontos, hogy az etag off; csak azokra a fájlokra hat, amiket maga az Nginx szolgál ki. A PHP-FPM felől érkező válasz fejléceit nem érinti.

És LiteSpeed alatt hol kapcsolható ki?

Rövid válasz. A .htaccess FileETag None direktívája a kiindulás, de a cache-elt találatokhoz a LiteSpeed Cache bővítmény beállítása is kell.

  1. Írd be a FileETag None sort a .htaccess fájlba, a WordPress saját blokkja elé. A LiteSpeed az Apache direktívák nagy részét értelmezi.
  2. Ha van WebAdmin hozzáférésed, a Server Configuration alatt a Tuning fülön találod a statikus fájlok kiszolgálásának beállításait.
  3. A LiteSpeed Cache bővítményben a Cache fül Browser almenüje írja felül az expires és cache-control fejléceket. Bekapcsoláskor a hozzá tartozó szabályok is a .htaccess-be kerülnek, könnyen a te sorod alá.
  4. Üríts teljes cache-t, különben a régi válaszok a régi fejlécekkel maradnak bent.
  5. Ellenőrizd curl-lel, és nézd meg az x-litespeed-cache fejlécet is, mert abból derül ki, hogy a válasz a cache-ből vagy a PHP-ból jött.

cPanel-es tárhelyen a WebAdmin általában nincs kiadva, ilyenkor marad a .htaccess, a bővítmény és szükség esetén a szolgáltató ügyfélszolgálata.

Miért nem a látogatói sebességben jelentkezik a haszon?

Rövid válasz. Mert a visszatérő látogató a legtöbb assetet a lejárati idő alapján, hálózati kérés nélkül veszi elő, a 304-es kör pedig ugyanúgy egy teljes oda-vissza út.

Saját tapasztalat és saját nézőpont. Átlagos bemutatkozó oldalakon az ETag beállítása vagy kikapcsolása után a mért betöltési időkben nem látszott érdemi különbség. Ennek egyszerű oka van. Az első látogatásnál még nincs mit újraérvényesíteni, a másodiknál pedig a jól beállított max-age miatt a böngésző meg sem kérdezi a szervert. A 304 csak abban a szűk sávban segít, amikor a másolat már lejárt, de tartalmilag még érvényes.

Két helyzetben viszont tényleg számít. Az egyik a nagy képtár. Több ezer fotós galériánál, ingatlanos listánál vagy termékkatalógusnál a lejárt képek újraérvényesítése nagyságrendekkel kevesebb adat, mint az újratöltés, és a szerver oldali sávszélesség-számla is ezen múlik.

A másik a botforgalom. A keresőrobotok, a feed-olvasók, a monitorozó eszközök és az AI-feltérképezők nem tartanak hosszú távú böngésző-gyorsítótárat, viszont sokszor kérnek rá ugyanarra az URL-re. Náluk a helyes Last-Modified és a valóban működő 304 közvetlenül csökkenti a szerverterhelést. Ez jó eséllyel segítheti azt is, hogy a feltérképezési kapacitás az új és a tényleg frissült tartalomra menjen el, de helyezést vagy idézettséget önmagában nem garantál.

Mit érdemes végigfutni, mielőtt hozzányúlsz?

  1. Nézd meg curl -I paranccsal a főoldalt, egy bejegyzést, egy feltöltött képet és a feedet.
  2. Ellenőrizd, hogy a 304-es kör tényleg lezajlik-e, ne csak a fejléc meglétét nézd.
  3. Ha a HTML Last-Modified értéke a cache-fájl idejét mutatja és naponta többször ugrik, keresd meg, mi üríti a cache-t.
  4. CDN mellett döntsd el, melyik réteg generálja a validátort, és ne generálja mind a kettő külön logikával.
  5. Osztott tárhelyen inode-alapú ETag esetén inkább kapcsold ki, mint hogy csomópontonként más értéket adjon.
  6. Bejelentkezett és fizetési felületre ne kerüljön validátor, oda no-store való.
  7. Változtatás után mindig üríts teljes cache-t, különben a régi fejlécekkel tárolt válaszokat méred.
  8. Jegyezd fel, mit változtattál és mikor, hogy a szerver-napló forgalmi adatait utólag össze tudd hasonlítani.

Források és további olvasnivalók

Amit érdemes megjegyezni
  • Az erős ETag bájtra pontos egyezést ígér, a gyenge (W/ előtag) csak azonos jelentést, és emiatt nem támogat Range-kérést.
  • Sok magyar tárhelyen a gzip vagy Brotli tömörítés, a fordított proxy és az inode-alapú alapbeállítás miatt lesz gyenge vagy csomópontonként eltérő az ETag.
  • A cache-bővítmények statikus HTML-fájlt tesznek a dinamikus válasz helyére, ezért a Last-Modified gyakran a cache-fájl idejét, nem a tartalom változását mutatja.
  • Ha a CDN már kezeli a validátorokat, Nginx alatt egy etag off; sor, LiteSpeed alatt a FileETag None plusz a bővítmény beállítása a megoldás.
  • Az ETag önmagában ritkán mérhető nyereség, a 304-es kör működése viszont közvetlenül csökkenti a bot okozta szerverterhelést.

Gyakori kérdések

Honnan tudom, hogy erős vagy gyenge ETag-et küld a szerverem?

Futtasd le a curl -I parancsot az adott URL-re, és nézd meg az ETag sort. Ha a karakterlánc előtt W/ előtag áll, gyenge ETag-ről van szó, ha nincs előtag, erősről. Érdemes a kérést Accept-Encoding: gzip, br fejléccel is megismételni, mert sok szerver csak tömörített kiszolgálásnál vált gyengére.

Ha kikapcsolom az ETag-et, romlik ettől az oldal sebessége?

Önmagában jellemzően nem, feltéve, hogy a Last-Modified fejléc megmarad, és a szerver reagál az If-Modified-Since kérésre. A két validátor ugyanazt a célt szolgálja, és a HTTP-szabvány szerint a Last-Modified is elfogadott alap az újraérvényesítéshez. A tényleges sebességet sokkal inkább a Cache-Control lejárati ideje határozza meg.

Miért kapok minden kérésre 200-at, pedig ott van az ETag a válaszban?

Ilyenkor a szerver kiírja a fejlécet, de nem dolgozza fel a beérkező If-None-Match értéket, jellemzően azért, mert egy cache-réteg vagy egy proxy átírja a választ. Nézd meg, melyik réteg szolgálja ki a fájlt, és hogy a cache-bővítmény böngésző-gyorsítótár beállítása nem írja-e felül a szerverét.

A WordPress ad alapból Last-Modified fejlécet a bejegyzésekre?

A feedekre igen, a sima HTML-oldalakra viszont nem minden beállításnál. Ha a kimenetet cache-bővítmény vagy szerver oldali gyorsítótár szolgálja ki statikus fájlként, akkor a fejléc a cache-fájl módosítási idejét fogja mutatni, nem a bejegyzés utolsó szerkesztését.

Kell-e ETag, ha Cloudflare vagy más CDN van az oldal előtt?

Ha a CDN maga generál és kezel validátort, a származási szerveren fölösleges párhuzamosan is generálni, mert a két logika eltérő értékeket adhat. Ilyenkor Nginx alatt az etag off; a tiszta megoldás, a Last-Modified viszont maradjon, mert sok CDN ezt is használja az érvényesség ellenőrzésére.

Mit nyerek azzal, ha a botok 304-et kapnak?

Kevesebb kiszolgált bájtot és kisebb szerverterhelést, különösen sok képet vagy sok aloldalt tartalmazó oldalakon. Ez jó eséllyel segítheti, hogy a feltérképezési kapacitás a tényleg új tartalomra menjen el, de sem jobb helyezést, sem több AI-idézettséget nem garantál önmagában.

Források és további olvasnivalók

Ezen az oldalon a hivatalosan igazolt információt elsődleges forrásokból építjük fel; a saját tapasztalatot és a szakmai becslést mindig külön jelöljük a szövegben.

A cikk szerzője

Schmidt Péter, online marketing szakértő, a Scheo Tanácsadó Kft. alapítója. Székesfehérvárról, országosan dolgozó csapattal végzünk keresőoptimalizálást, AI-láthatóság mérést, Google és Meta hirdetéskezelést, weboldalkészítést. Amit itt leírunk, azt ügyfélmunkában is használjuk. Rólunk bővebben · Szolgáltatásaink

Kapcsolódó olvasnivaló

Kapcsolódó

Amikor az AI-botok megterhelik a szervert: mit tegyél

Kapcsolódó

Honnan tudod, hogy tényleg AI-bot járt nálad, és nem valaki más adta ki magát annak

Kapcsolódó

Ügynöki (agentic) böngészés: amikor nem ember nyitja meg az oldalad

Helyi szolgáltatás a környékeden

Országosan dolgozunk, online és személyesen. Válaszd ki a városodat, és nézd meg, hogyan segítünk helyben:

Online marketing & AI SEO EgerOnline marketing & AI SEO ZalaegerszegOnline marketing & AI SEO SzekszárdOnline marketing & AI SEO SalgótarjánOnline marketing & AI SEO SzékesfehérvárOnline marketing & AI SEO Budapest

Weboldalkészítés városra bontva

Ha először a honlap kell, itt városonként arról írtunk:

Weboldalkészítés DunaújvárosWeboldalkészítés GyőrWeboldalkészítés DebrecenWeboldalkészítés SzegedWeboldalkészítés MiskolcWeboldalkészítés Pécs

Mind a 20 városunk és az összes szolgáltatás →

15 perces AI-láthatósági gyorselemzés - díjmentesen

Megnézzük három, számodra fontos keresőkérdésnél, hogy megjelenik-e a céged a ChatGPT, a Gemini és a Google AI-válaszaiban, mely versenytársakat ajánlják helyetted, és melyik három területen érdemes először javítani. A weboldaladat előzetesen átnézzük, tehát nem sablonos, automata riportot kapsz.

Adataidat kizárólag a kapcsolatfelvételhez használjuk. Kapcsolat: m@rketinges.hu
💬 Konzultáció