# Gyorsítótár és szkriptoptimalizáló: hibák és megoldások

> Miért okozhat hibát az űrlapoknál a gyorsítótár és a szkriptoptimalizálás, hogyan ismered fel, és hogyan zárd ki az űrlapoldalakat.

Ez a fejezet elmagyarázza, mit jelent a gyorsítótárazás és a szkriptoptimalizálás, miért zavarhatja meg a Gravity Forms működését, ha a tárhelyszolgáltatód vagy egy külső bővítmény bekapcsolja, és hogyan hárítod el a gondot.

## Mi a gyorsítótárazás

A gyorsítótár az oldalról pillanatképet készít, és gyorsabb tárolóban (helyben vagy a kiszolgálón) tartja. Amikor az oldalt legközelebb kérik, a kiszolgáló nem futtat PHP-t és nem fordul az adatbázishoz, hanem a kész másolatot adja vissza. Ez a ritkán változó, sok látogatót kiszolgáló statikus oldalaknál hasznos.

## Mi a szkriptoptimalizálás

A szkriptoptimalizálás többféle eljárás. Ilyen a minifikálás: elhagyja a szóközöket, rövidíti a változóneveket, tömörebb függvényeket használ, vagy összevon több, egymástól független JavaScript-fájlt egyetlenné. Hasonlóan gyorsítótárazhatja is a szkripteket.

## Mi a hátránya

### Gyorsítótárazás

Gyorsítótárat csak olyan oldalon használj, amely gyakorlatilag statikus, vagyis ritkán változik. Ne kapcsold be olyan oldalon, amely adatot dolgoz fel, fizetést kezel, vagy dinamikus folyamatot tartalmaz, ilyenek az űrlapok. Az olyan oldalak, amelyeken sok a változó elem (AJAX-szal betöltött tartalom, feltételes mezők, a felhasználó műveletére induló események), rossz jelöltek: a gyorsítótár elavult változatot szolgálhat ki, az oldal régi adatokat mutathat, vagy régi bemenetre reagálhat. Ettől hibás működés és váratlan eredmény lesz.

A gyorsítótár az AJAX-kérések nonce-ait is megzavarhatja: ha a gyorsítótárazott oldalon lejárt nonce van, a rá támaszkodó kérések nem mennek át az ellenőrzésen, ami működési vagy biztonsági hibaüzenetet okoz.

### Szkriptoptimalizálás

A legtöbb gyorsítótár-bővítmény, egyes témák és oldalszerkesztők is tartalmaznak szkriptoptimalizálást: **Minify** (minifikálás), **Combine** (összevonás) és **Defer** (halasztás) néven találkozhatsz velük. Elméletben jól hangzik, a gyakorlatban viszont gyakran eltöri a szkripteket, mert automatikusan, minden szkriptre alkalmazódik, és nem veszi figyelembe, hogy egyik-másik már optimalizált.

A Gravity Forms szkriptjei is így járnak: eleve minifikáltak, és a `defer` attribútumot is megkapják. Ha ugyanazt a szkriptet kétszer minifikálják, a működése megsérülhet. Ez minden olyan szkriptnél gond, amelyet a gyártója már minifikált.

## Meg tudja oldani a Gravity Forms?

Nem. A gyorsítótárazásnak rengeteg, külső cégek által fenntartott módja van, havonta újak jelennek meg, és egy oldalon akár több is dolgozhat egyszerre, néha úgy, hogy nem tudsz róla.

Ha nehezen megoldható űrlaphibád van, és bármilyen gyorsítótár vagy szkriptoptimalizálás be van kapcsolva, ezt tedd:

1. **Kapcsold ki az összes gyorsítótárat és szkriptoptimalizálást**, a külső szolgáltatásokat is (például a Cloudflare Rocket Loader funkcióját). Ez döntő fontosságú: bekapcsolt gyorsítótárnál az ütközésvizsgálat téves eredményt adhat. Másik lehetőség, hogy az űrlapoldalakat kizárod a gyorsítótárból. Ha tesztoldalt vagy tesztűrlapot használsz a próbakörnyezetedben, azt is zárd ki, különben a vizsgálat félrevezető lehet.
2. **Ürítsd a gyorsítótárat**, és a böngésző gyorsítótárát is, hogy biztosan friss erőforrásokkal dolgozz.
3. **Töltsd újra az oldalt**, próbáld meg újra, és hasonlítsd össze az eredményeket.
4. Ha kiderül, hogy a gyorsítótár vagy az optimalizáló okozza a hibát, **zárd ki az összes űrlapoldalt** (a próbakörnyezeti és tesztváltozatokat is) a gyorsítótárból és az optimalizálásból, hogy mindig friss adattal dolgozzanak. A pontos lépések a használt eszköz dokumentációjában vagy a tárhelyszolgáltatónál derülnek ki.
5. Ha ez sem segít, hagyd kikapcsolva a gyorsítótárat és az optimalizálást, miközben ütközésvizsgálatot végzel (például az Állapotellenőrzés bővítménnyel, illetve ha az nem alkalmazható, kézi téma- és bővítményütközés-vizsgálattal).

## Hogyan látod, hogy az oldalad gyorsítótárazott

### Az oldal forráskódja

A legtöbb gyorsítótár-bővítmény és néhány kiszolgálóoldali gyorsítótár HTML-megjegyzést fűz az oldal forráskódjának végére, jelezve, hogy az oldal gyorsítótárból érkezett. A böngésző „Oldal forrásának megtekintése” funkciójával ellenőrizheted. Ilyen megjegyzést tesz például a WP Fastest Cache.

### Az oldal fejlécei

A válasz fejlécei is elárulják. A gyorsítótár-motortól függően különböző fejlécek jelennek meg, de egy közös van: a `cache-control`. Ez azt mondja meg a böngészőnek, meddig tartsa meg a másolatot, vagyis meddig ne kérje újra az oldalt. Emellett más fejlécek általában `HIT` értéket mutatnak, ha az oldal gyorsítótárból jött, és `MISS` értéket, ha nem. Gyakori fejlécek:

- `x-cache`
- `proxy-cache`
- `cf-cache-status` (Cloudflare)
- `ki-cf-cache-status` és `x-kinsta-cache` (Kinsta)
- `x-sucuri-cache` (Sucuri)
- `WPO-Cache-Status` (WP-Optimize bővítmény)

A `server` és a `via` (nem mindig van jelen) fejlécből azonosíthatod a kiszolgálót vagy a gyorsítótár-motort. Cloudflare-es oldalon például a `server` értéke `cloudflare`.

A fejlécek megnézéséhez használd a böngésző fejlesztői eszközeinek **Network** (hálózat) lapját. Nyisd meg még az oldal betöltése előtt, töltsd be az oldalt, majd az oldal URL-jére mutató `GET` kérést kiválasztva nézd meg a fejléceket. A Chrome, a Firefox és a Microsoft Edge fejlesztői eszközei is tudják.

## Hogyan zárd ki az oldalt a gyorsítótárból

Ha tudod, melyik gyorsítótár vagy optimalizáló működik az oldaladon, a saját beállításaiban kell kizárnod az űrlapot tartalmazó oldalakat, és az űrlap szkriptjeit az optimalizálásból. Ismert eszközök, amelyeknél van kizárási lehetőség:

- gyorsítótár és tárhely: Breeze (Cloudways), Cloudflare, NitroPack, SiteGround Speed Optimizer, Sucuri, W3 Total Cache, WP Engine, WP Fastest Cache, WP-Optimize, WP Rocket;
- szkriptoptimalizálók: Autoptimize, Elementor (elemgyorsítótár), Jetpack Boost, Perfmatters, SiteGround Speed Optimizer.

A Cloudflare, a Divi, a LiteSpeed Cache, a NitroPack, a W3 Total Cache és a WP Rocket esetében a tünetek és a beállítandó kizárások eszközönként eltérnek, ezért mindegyiknél külön ellenőrizd a gyorsítótár és az optimalizáló beállításait. Ha Elementort használsz, és nem gyorsítótárazási, hanem megjelenési hibát látsz, a gond inkább stílusütközés.

## Segítő kiegészítők

Két külső fejlesztésű kiegészítő is ismert, amely a gyorsítótár okozta gondokat enyhíti.

**Fresh Forms.** A támogatott beágyazási módoknál és gyorsítótár-megoldásoknál automatikusan kizárja a gyorsítótárból az űrlapot tartalmazó oldalakat, és a Gravity Forms működéséhez szükséges szkripteket a támogatott JavaScript-optimalizálók elől is kizárja. Ha a beágyazási módot nem támogatja alapból, de a gyorsítótár támogatott, tartalmaz egy szűrőt, amellyel megadott oldalakon kényszerítheted a futását.

**Gravity Wiz Cache Buster.** Másképp közelít: nem az oldalt, hanem magát az űrlapot hagyja ki a gyorsítótárból, mégpedig úgy, hogy az űrlapot AJAX-szal tölti be (ez nem azonos az AJAX-os beküldéssel). A JavaScript-optimalizálásra nincs megoldása. Figyelj arra, hogy az AJAX-os betöltés megakadályozhatja, hogy az aktuális bejegyzést vagy oldalt igénylő összefűző címkék a várt értéket adják vissza.

A külső bővítményeket és kódrészleteket csak javaslatként említjük: nem teszteljük és nem támogatjuk őket, ezért te felelsz azért, hogy megfelelnek-e a funkcionális, biztonsági, jogi és költségigényeidnek, és hogy a későbbi frissítések után is jól működnek.
