Drupal 8/9 sebesség javítása

Előfordul, hogy a Drupal alapú weboldalak - főleg fejlesztői gépen - kegyetlenül lassúak (10-30 sec) betöltődési idővel. Hogyan lehet gyorsítani a Drupal 8 / 9-et?

Mi az elfogadható?

Egy weboldal betöltődési sebessége elfogadható, ha legfeljebb 3-5 másodperc alatt töltődik be a hívástól függően. Ennél nagyobb betöltődési sebesség már SEO szempontból és a felhazsnálói élmény szempontjából sem megfelelő.

Mitől függ az oldal sebessége?

A sebesség növelése összetett dolog. Függ az alábbiaktól:

  • Az a hardver, amin futtatjuk
  • Az operációs rendszer, amin fut a szerver
  • A PHP verziótól
  • A Drupal beállításaitól
    • A sminktől, ami a Drupal oldalon fut
    • Az adatbázis típusától
    • A Drupal beállításaitól
  • És a felhasználó által használt eszköz
    • Mobil telefon vagy asztali PC
    • Mekkora a fogadó oldalon a sávszélesség

A fenti paraméterek közül csak azzal érdemes foglalkozni, amelyre van behatásunk, tehát a szerver

A hardver

A szerverek nyer teljesítményét - függetlenül attól, hogy milyen operációs rendszer és egyéb kiszolgáló szoftver fut rajtuk - olyan dolgok határozzák meg, amelyekra gyakran nincsen ráhatásunk. ennek megfelelően, ha mégis van, akkor az alábbiakat vegyük figyelembe:

  • Memórai mérete és sebessége - legyen minnél több, de legalább annyi, hogy maximális terhelésnél is maradjon még fizikai memória. Otthoni fejlesztői gépen 16-32 GB RAM a minimum, éles szerveren amennyi belefér.
  • A processzor sebessége, a magok száma - 4-16 Core. A fejlesztői gépen lehet olyan, amely terhelés hiányában lelassít, de az éles rendszereken ne spóroljunk ilyesmivel.
  • Hálózati kapcsolat sebessége - 1 Gbit/sec. A fejlesztői gép általában localhoston működik. Ilyenkor ez nem releváns.
  • Használj a webszerver az adatbázis szerver és a weboldalak tárolására SSD háttértárat. Az SSD-k olvasási sebessége majdnem a RAM olvasási sebességével egyezik meg. Az adatbázis fájlokat is tárolhatod SSD-n, mert az írási sebesség is nagyobb, mint a HDD-k esetén, de az SSD "romlik" a technológiából következően, ezért az SSd-kre nem illik írni. Az adatbázis legyen másk HDD-n és az adatbázisszerverben legyen elég nagy cache.

Operációs rendszer

Olyan operációs rendszert érdemes használni, amelyet kifejezetten szerver célokra fejlesztettek. Általában a Linux disztribúciók gyorsabban futnak szerverként, mint a Windowsok a grafikus felület hiánya és a belső felépítésnek köszönhetően, de Windows szerverekkel is lehet elérni elég jó válaszidőket.

Adatbázis szerver

A Drupalhoz leggyakrabban MySQL-t szokás használni, amelyben az InnoDB motor az alapértelmezett. Ez a motor tranzakció biztos, ami azt jelenti, hogy minden írás előtt az írandó rekordról készít egy backupot a szerver, majd utána írja be az adatokat az adatbázisba. Mivel egy adatbázisban táblánként lehet állítani, hogy milyen motor alatt fusson, ezért azokat a táblákat, amelyek gyakran változnak, de nem létszükséglet a tartalmuk nyugodtan állítsd át MyIsam táblára.

A cache típusú táblákat lehet átállítani MyIsam táblákra.

Az adatbázis szervernek állíts be legalább 32 MB cache-t.

PHP sebesség

WEBszerver

Használjunk NGINX szervert Apache helyett wink

Ha Apache-ot használunk, akkor

Drupal 8

  • Kikapcsolt Drupal 8 cache: 34 sec betöltődés!
  • Kapcsold be a Drupal 8 cache rendszerét:admin/config/development/performance
    • Bekapcsoltam a js és css tömörítést: 33,8sec, második letöltés: 2.05 sec. Ez összetömöríti az oldalon lévő js és css fájlokat egy-egy nagyobb fájlba.
      Magyarázat: A böngészők hagyományosan csak 20 párhuzamos fájlletöltést engednek meg, ezért ha sok CSS és JS fájl van, akkor azokat akkor kezdik letölteni, ha már felszabadult egy szál.
    • Bekapcsolom: Internal Page Cache, Internal Dynamic Page Cache modulokat: Második letöltés 2.06 sec. A fenti két modul a különböző tíípusú tartalmakat adatbnázisba cacheli, tehát a Drupalnak nem kell azt előálíltania újra. A cache megtartásának idejétől függően a tartalom gyorsan jön le.
  • Kapcsolj ki minden olyan modult, amit nem használsz. Minden bekapcsolt modul egy kis overhead-et jelent a futtatandó kódba még akkor is, ha nem szükséges.
  • Kapcsold ki a Statistics modult. Magyarázat: Ez a modul folyamatosan adatbázisba menti a lekérdezések adatait. Éles szerveren nem feltétlenül van rá szükség ha Google Analytics-ot használsz.
  • Kapcsoljuk ki az Update Manager modult. Magyarázat: Ez a frissítéseket ellenőrzi, tehát az oldal meghívásakor kinéz a Drupal szerverére és megnézi, hogy van-e frissítés. Ezt kézzel is meg lehet oldani.
  • A page-not-found hibák esetén a Fast 404 modul gyorsítja a rendszert.
  • Kapcsold be a BIgPipe modul-t. Magyarázat: akapesetben a szerver csak akkor küldi ki a HTML tartalmat, amikor teljesen elkészült vele és addig a böngésző vár. Ha lejött a HTML tartalom, a böngésző létrehozza a DOM-ot a memóriában, majd lehúzza a képeket, CSS és JS fájlokat. A CSS fájlokkal létrehozza a kinézetet és a végén futtatja a JS fájlokat. Ez a technika a weboldalakat részekre bontja (HTML markup) és a részeket külön küldi el a böngészőnek. Ezzel már a böngésző tud dolgozni. Lehőzza a CSS fájlokat és létrehozza a DOM-ot. A böngésző kevesebbet vár.
  • Image Lazyloader - Magyarázat: A technológia azokat a képeket tölti le, amelyek az ablakban láthatóvá válnak. Ilyen módon a felhasználónak nem kell megvárnia azt, hogy minden kép letöltődjön.
  • Ne használj PHP filter modult. Biztonsági problémákat okozhat. Inkább írj saját modult..

Külső szolgáltatások használata

  • CDN - Sok olyan külső lib van, amely felhőben található. A letöltése gyorsabb egy CDN szerverről. Magyarázat: Ha egy erőforrást (library, javascript kód) nem a saját szerveredről töltöd le, hanem egy gyors felhőből, akkor gyorsabb lesz CDN-ből.

Az oldal sebességét tesztelő eszközök

  • Performance Logging and Monitoring modul
  • A Performance and Scalability Checklist modul segítségével a rendszer optimalizálását ellenőrizhetjük
  • A Devel modul segítségével elemezhetjük a lassú lekérdezéseket
  • Akár a Zend Studio profiler, akár az XHProf PHP Profiler használható az oldal lefutásának elemzésére
  • YSlow használata a Firefoxban és/vagy Chromeban. Javaslatokat fogalmaz meg az oldal sebességének javítására ésteszteli az oldal sebességét.

A weboldal fejlesztőjének lehetőségei

További lehetőségek weboldalak sebességének gyorsítására

  • Egyszerűbb design a weboldalnak (kevés kép, kevés kód, kevés javascript és css)
  • A jpg, png képek méretének csökkentése akkorára, hogy a böngészőnek ne kelljen átméretezni.
  • A jpg képek tömörítése ne a 80%-os legyen, hanem alacsonyabb, ezááltal kisebb képek legyenek.
  • Kevesebb külső js kódot - meghívni, pl Google Analytics kódot a szerverre telepíteni
  • Ne használj iframe-eket.
  • A javascript kódokat az oldal végére téve a felhasználó számára megjelenik az oldal a böngészőben, amikor a js kódok még csak töltődnek.
  • A css fájlok a HTML oldal elején legyenek. Ezt a Drupal is így csinálja.

Néhány angol nyelvű oldal, ahol ezzel a témáával foglalkoznak