Tudástár / Teljesítmény
Weboldal teljesítmény és gyorsítás
Egy lassú weboldal látogatókat és bevételt veszít — és a Google is hátrébb sorolja. Összegyűjtöttük a legfontosabb teljesítménytényezőket, amelyek valóban mérhetően számítanak.
Tudástár / Teljesítmény
Egy lassú weboldal látogatókat és bevételt veszít — és a Google is hátrébb sorolja. Összegyűjtöttük a legfontosabb teljesítménytényezőket, amelyek valóban mérhetően számítanak.
A cache lényege, hogy a szerver nem generálja újra az oldalt minden egyes látogatónak, hanem eltárolja az előre elkészített HTML-t, és azt szolgálja ki. Egy adatbázis-intenzív oldalnál — ahol egy betöltéshez akár 50-100 adatbázis-lekérdezés is futhat — ez az egyetlen lépés akár tízszeres sebességjavulást is hozhat.
Kétféle cache működik együtt: a szerveroldali cache (pl. Redis, Memcached, Varnish) az adatokat és oldalgenerátumokat tárolja, a böngésző cache a statikus fájlokat (képek, CSS, JS) helyileg a látogató gépén tartja. Laravel alkalmazásoknál a route cache, config cache és view cache együttes alkalmazása a bootstrap idejét is töredékére csökkentheti.
A cache ürítéséről gondoskodni kell minden tartalomfrissítésnél — különben a látogatók elavult verziót látnak. Részletes útmutató: Mitől lesz gyors egy weboldal?
A CDN (Content Delivery Network) egy globálisan elosztott szerverrendszer, amely a weboldal statikus tartalmait (képek, CSS, JS, videók) a látogatóhoz legközelebb eső szerverről szolgálja ki. Ha a szerver Budapesten van, de a látogató Londonból érkezik, a CDN nélkül minden kérés Budapestre megy — CDN-nel a tartalom a legközelebbi londoni szerverről tölt be.
A neves CDN-szolgáltatók (Cloudflare, BunnyCDN, AWS CloudFront) emellett DDoS védelmet és WAF-ot is nyújtanak, nem csupán gyorsítást. Cloudflare ingyenes szintje már kis weboldalak számára is érdemi előnyt jelent.
CDN bevezetése különösen indokolt, ha az oldal sok médiát tartalmaz, ha a látogatók földrajzilag szórtan érkeznek, vagy ha a szerver önmagában nem bírja a csúcsforgalmat.
A PHP az a motor, amely a weboldal kódját futtatja. Minden főbb PHP verzió érzékelhető teljesítményjavulást hozott az előzőhöz képest: PHP 8.0 a 7.4-hez képest átlagosan 10-20%-kal gyorsabb, a PHP 8.3 JIT fordítójával egyes alkalmazásoknál ennél is nagyobb különbség mérhető.
Az elavult PHP verzió (7.x vagy régebbi) nemcsak lassabb, hanem biztonsági kockázatot is jelent, mivel az EOL (End of Life) verziók már nem kapnak biztonsági frissítéseket. Jelenleg aktívan támogatott verzió a PHP 8.2 és 8.3.
PHP verzióváltás előtt mindig szükséges a kompatibilitás ellenőrzése — egy staging környezetben érdemes tesztelni, mert a régi kód nem mindig fut hibátlanul az új motoron.
Az adatbázis a weboldal tartalmának tárolóhelye — minden oldalbetöltésnél a szerver lekérdezi az adatbázist. Ha ezek a lekérdezések nem optimalizáltak, az oldal lassulása egyenesen arányos a lekérdezések számával és komplexitásával.
A leggyakoribb adatbázis-teljesítményprobléma az N+1 lekérdezési probléma: ahelyett hogy egy hatékony JOIN-os lekérdezéssel kérnénk le az adatokat, a kód ciklusban indít újabb lekérdezéseket. Ez exponenciálisan rontja a teljesítményt. A másik tipikus ok a hiányzó adatbázis index — emiatt az adatbázis nem tud optimálisan keresni a táblákban.
A MySQL slow query log bekapcsolásával pontosan látható, melyik lekérdezés okozza a lassulást — ezt célzottan lehet optimalizálni.
A cron job egy időzített feladat, amelyet a szerver automatikusan futtat
meghatározott időpontokban — például éjjel biztonsági mentés, naponta email küldés,
óránként cache frissítés. Laravel alkalmazásoknál ez a
schedule:run
parancs rendszeres futtatásán keresztül valósul meg.
A probléma akkor jelentkezik, ha a cron rosszul van ütemezve: például ha egy erőforrás-igényes feladat napközben, csúcsforgalom idején fut, érzékelhető lassulást okozhat. Előfordulhat az is, hogy egy elakadt cron job nem áll le, és újabb példányok indulnak — ez zombi processekhez és memóriaszivárgáshoz vezet.
Jó gyakorlat a cron futásokat logolni és monitorozni — így azonnal látható, ha valamelyik feladat megakadt vagy rendkívül sokáig fut.
A reverse proxy egy közvetítő réteg a látogató böngészője és az alkalmazásszerver között. A legismertebb megoldás az Nginx, amelyet tipikusan reverse proxy-ként helyeznek PHP-FPM vagy Node.js alkalmazások elé.
Előnyei: statikus fájlokat (képek, CSS, JS) maga az Nginx szolgálja ki, nem terheli az alkalmazásszervert; SSL terminálást végez; gzip tömörítést alkalmaz; egyes kérések cache-elhetők anélkül, hogy a PHP egyáltalán futna; és terheléselosztást is képes végezni több backend szerver között.
Helyesen konfigurálva a reverse proxy önmagában is érdemi sebességjavulást hoz — különösen forgalmas oldalakon, ahol az alkalmazásszerver erőforrásai szűkek.
A rate limiting (kérésszám-korlátozás) azt szabályozza, hogy egy adott IP-cím vagy felhasználó adott időintervallumon belül hány kérést küldhet a szerverre. Például: maximum 60 kérés percenként egy IP-ről — az ezt meghaladókat a szerver visszautasítja.
Ez egyszerre véd és teljesítményoptimalizál: megakadályozza, hogy egy bot
vagy rosszindulatú kérésfolyam feleméssza a szerver erőforrásait,
és gátat vet a brute-force bejelentkezési kísérleteknek is.
Laravel-ben a rate limiting a
throttle
middleware-rel, Nginx-en a
limit_req
direktívával valósítható meg.
A DDoS (Distributed Denial of Service) támadás lényege, hogy sok ezer — esetenként milliós nagyságrendű — különböző IP-ről érkező kérés egyszerre árasztja el a szervert. A szerver nem tudja kiszolgálni az összes kérést, ezért lassul, majd elérhetetlenné válik.
A védelem eszközei: CDN-alapú DDoS szűrés (Cloudflare pl. L3/L4/L7 szintű védelmet nyújt), rate limiting, IP reputáció-alapú szűrés, és szükség esetén az infrastruktúra horizontális skálázása. Kis és közepes weboldalak számára a Cloudflare ingyenes szintje az alapvető DDoS védelmet már biztosítja.
A gyors weboldal nem egyetlen trükkön múlik — rendszerszintű optimalizálás eredménye. A legfontosabb elemek: megbízható, gyors tárhely vagy VPS; jól beállított szerveroldali cache; CDN a statikus fájlokhoz; optimalizált, tömörített képek (WebP formátum); modern PHP verzió; és tiszta, hatékony adatbázis-lekérdezések.
A mérőszámok sem mindegy melyeket nézünk: a Google Core Web Vitals (LCP, CLS, INP) azokat a felhasználói élményre hatással lévő mutatókat értékeli, amelyek a keresési rangsorolásba is beleszámítanak.
Részletes, lépésről lépésre útmutató: Mitől lesz gyors egy weboldal?
Teljesítmény audit, optimalizálás és folyamatos felügyelet.
Ajánlatkérés