Drupal jõudluse optimeerimine — praktilised sammud
🎧 Kuula kõiki artikleid järjest
Drupal suudab teenindada väga suure liiklusega veebisaite. Kui sait on aeglane, on põhjus tavaliselt konfiguratsioonis, mitte platvormis endas.
Kas Drupal on aeglane?
See on üks levinumaid küsimusi Drupaliga seotud aruteludes.
Lühike vastus: ei.
Drupal teenindab igapäevaselt miljoneid kasutajaid üle maailma, sealhulgas ülikoolide, riigiasutuste ja rahvusvaheliste organisatsioonide veebiplatvorme.
Kui Drupal-sait on aeglane, on põhjus tavaliselt üks järgmistest:
- vahemälu ei tööta korrektselt;
- andmebaasipäringud on ebaefektiivsed;
- pildid on optimeerimata;
- server on valesti seadistatud;
- kohandatud kood tekitab pudelikaelu.
Hea uudis on see, et enamik neist probleemidest on lahendatavad.
Alusta mõõtmisest
Enne muudatuste tegemist tuleb teada, mis on tegelik probleem.
Kontrollimiseks sobivad näiteks:
- Google PageSpeed Insights;
- Lighthouse;
- WebPageTest;
- GTmetrix;
- Google Search Console Core Web Vitals raport.
Oluline on eristada:
- serveri vastuse aega;
- lehe renderdamise aega;
- piltide laadimise aega;
- JavaScripti mõju kasutajakogemusele.
Kõik aeglased veebid ei ole aeglased samal põhjusel.
Kiht 1: Drupali vahemälu
Drupal sisaldab mitut sisseehitatud vahemälukihti.
Need peaksid tootmiskeskkonnas olema alati sisse lülitatud.
Internal Page Cache
Salvestab anonüümsetele kasutajatele genereeritud HTML-lehed.
Kui see puudub, peab Drupal iga külastuse korral kogu lehe uuesti koostama.
Dynamic Page Cache
Salvestab lehe osad, mis ei sõltu konkreetsest kasutajast.
See parandab märgatavalt sisselogitud kasutajate jõudlust.
BigPipe
BigPipe saadab lehe kiiresti brauserisse ja täidab personaalsed komponendid hiljem.
Kasutaja näeb sisu kiiremini isegi siis, kui osa lehe elemente alles genereeritakse.
See parandab eelkõige tajutavat jõudlust.
Kiht 2: Redis ja Varnish
Kui liiklus kasvab, jääb ainult Drupali sisemisest vahemälust väheks.
Redis
Redis salvestab vahemälu mällu.
Võrreldes andmebaasipõhise vahemäluga tähendab see:
- vähem SQL-päringuid;
- kiiremaid vastuseid;
- väiksemat serverikoormust.
Keskmise ja suure liiklusega Drupal-saitidel on Redis sisuliselt standardlahendus.
Varnish
Varnish töötab Drupalist eespool.
Kui külastaja avab lehe, saab Varnish vastata otse vahemälust ilma Drupalit käivitamata.
Tulemuseks on:
- väiksem serverikoormus;
- lühem vastuseaeg;
- parem skaleeritavus.
Anonüümse liikluse puhul annab Varnish sageli kõige suurema jõudlusvõidu.
Kiht 3: CDN
CDN ehk Content Delivery Network aitab staatilisi faile serveerida kasutajale lähemast asukohast.
Tüüpilised kandidaadid:
- pildid;
- CSS-failid;
- JavaScript;
- fondid.
Levinud lahendused:
- Cloudflare;
- Fastly;
- Amazon CloudFront.
Rahvusvaheliste veebide puhul võib CDN vähendada laadimisaega märgatavalt.
Kiht 4: Andmebaasi optimeerimine
Paljud Drupal jõudlusprobleemid algavad andmebaasist.
Aeglaste päringute logi
MySQL või MariaDB slow query log näitab päringuid, mis võtavad liiga kaua aega.
Sageli leitakse sealt:
- keerukad Views-vaated;
- puuduvad indeksid;
- halvasti kirjutatud kohandatud päringud.
Indeksid
Kui sisu filtreeritakse sageli:
- kuupäeva järgi;
- kategooria järgi;
- staatuse järgi;
tasub kontrollida, kas vastavad väljad on indekseeritud.
Indeksite puudumine võib muuta suure andmemahu korral päringud kordades aeglasemaks.
Logide puhastamine
Drupal kogub pidevalt logikirjeid.
Aastate jooksul võivad logitabelid kasvada väga suureks.
Regulaarne puhastamine aitab hoida andmebaasi väiksema ja kiiremana.
Kiht 5: Pildid
Paljud aeglased veebid ei ole tegelikult serveri tõttu aeglased.
Need on aeglased suurte piltide tõttu.
Kontrolli:
- kas kasutatakse WebP formaati;
- kas pildid on õiges mõõdus;
- kas lazy loading töötab;
- kas pildistiilid genereeritakse automaatselt.
Sageli annab piltide optimeerimine suurema võidu kui serveri uuendamine.
Kiht 6: CSS ja JavaScript
Drupal võimaldab:
- CSS agregatsiooni;
- JavaScripti agregatsiooni;
- failide minifitseerimist.
Tootmiskeskkonnas peaksid need olema sisse lülitatud.
Mida vähem HTTP-päringuid brauser tegema peab, seda kiiremini leht avaneb.
Samuti tasub regulaarselt kontrollida, kas saidile pole kogunenud JavaScripti teeke, mida enam ei kasutata.
Kiht 7: PHP ja server
OPcache
PHP OPcache hoiab kompileeritud PHP-koodi mälus.
Ilma selleta peab server iga päringu korral kogu koodi uuesti töötlema.
Tootmiskeskkonnas on OPcache praktiliselt kohustuslik.
PHP versioon
Iga uus PHP versioon toob tavaliselt kaasa jõudlusparandusi.
Näiteks võib PHP 8.3 olla märgatavalt kiirem kui vanad PHP 7.x versioonid.
Lisaks jõudlusele paraneb ka turvalisus.
HTTP/2 ja HTTP/3
Kaasaegsed veebiserverid peaksid kasutama vähemalt HTTP/2 protokolli.
See võimaldab:
- paralleelseid päringuid;
- väiksemat latentsust;
- kiiremat ressursside laadimist.
Kuidas leida tegelik pudelikael?
Keerukamate probleemide korral ei piisa enam PageSpeedi raportist.
Kasulikud tööriistad on:
- Blackfire;
- New Relic;
- XHProf;
- Tideways.
Need näitavad täpselt:
- milline PHP-funktsioon aega kulutab;
- milline päring on aeglane;
- milline moodul tekitab koormust.
Ilma mõõtmiseta on optimeerimine sageli lihtsalt oletamine.
Levinumad põhjused, miks Drupal aeglane tundub
Praktikas korduvad samad probleemid:
- vahemälu on kogemata välja lülitatud;
- Redis puudub;
- Varnish puudub;
- pildid on liiga suured;
- Views teeb keerukaid päringuid;
- kohandatud moodul tekitab liigseid andmebaasipäringuid;
- server kasutab aegunud PHP versiooni.
Harva on probleem Drupalis endas.
Kokkuvõte
Drupal jõudluse optimeerimine algab mõõtmisest, mitte serveri vahetamisest.
Enamasti annab suurima tulemuse:
- korrektne vahemälu;
- Redis või Varnish;
- piltide optimeerimine;
- andmebaasi korrastamine;
- kaasaegne PHP versioon;
- jõudlusprobleemide regulaarne monitooring.
Hästi seadistatud Drupal võib teenindada väga suurt liiklust kiirelt ja stabiilselt. Kui sait on aeglane, on peaaegu alati võimalik leida konkreetne põhjus ning see kõrvaldada ilma kogu platvormi ümber ehitamata.
Kui soovid teada, mis sinu Drupal-saidi aeglaseks teeb, aitab tehniline audit tuvastada peamised kitsaskohad ja nende mõju tegelikule kasutajakogemusele.

Vajad Drupal abi?
Kui artikkel puudutab sinu olukorda, ei pea kõike lõpuni lugema. Sinuga suhtleb päris inimene ja aitab järgmise sammuni jõuda.