NL EN

Magento

Waarom is mijn Magento-webshop traag?

Kevin Tieman ·

Kort antwoord

Een Magento-webshop is meestal traag door een paar vaste oorzaken: een paginacache die niet meedoet, indexers en cron die achterlopen, modules die bij elke pagina te veel doen, te veel JavaScript, te zware afbeeldingen of hosting die niet op Magento is ingericht. Welke het zwaarst weegt, verschilt per shop. Daarom meet je eerst waar de tijd zit, op de server en in de browser.

Hoe meet je waar de tijd zit?

Voordat je iets verandert, meet je. Anders weet je achteraf niet wat het opleverde.

Er zijn twee delen:

  • De server. Hoe lang duurt het voordat de eerste byte van de pagina binnenkomt? Dat is werk van Magento, PHP, de database en de cache.
  • De browser. Hoe lang duurt het daarna voordat de pagina bruikbaar is? Dat is werk van het thema: scripts, stijlen, lettertypen en afbeeldingen.

Meet op een paar vaste typen pagina’s: de homepage, een categorie, een product, de winkelwagen en de checkout. Die gedragen zich elk anders.

Welke cijfers kijk je naar?

Op de server is dat de wachttijd tot de eerste byte, per type pagina en met en zonder cache.

In de browser zijn het de Core Web Vitals van Google: hoe snel het grootste element in beeld staat (LCP), hoe snel de pagina reageert op een klik (INP) en of de opmaak verspringt tijdens het laden (CLS). Die meet je in een testomgeving, en waar Google genoeg bezoekers heeft gezien, ook bij echte bezoekers. Het tweede telt het zwaarst: een testmeting op een snelle laptop zegt weinig over een klant op een oude telefoon.

Doet de paginacache wel mee?

Dit is de oorzaak die we het vaakst vinden, en meestal de snelste winst.

Magento kan pagina’s kant-en-klaar uit een cache serveren. Adobe raadt daar voor productie sterk Varnish voor aan; de ingebouwde cache is veel trager. Maar de cache werkt alleen als de pagina cachebaar is. Als één blok op een pagina als niet-cachebaar is gemarkeerd, geldt dat voor de hele pagina. Eén module die dat doet op de productpagina, en elke bezoeker van elke productpagina gaat langs PHP en de database.

Staat zo’n markering in de algemene layout, dan cachet de shop geen enkele pagina meer. Dat komt vaker voor dan je zou denken.

Lopen cron en de indexers bij?

Magento houdt indexen bij voor prijzen, voorraad, categorieën en zoeken. Die kunnen bij elke wijziging in de admin opnieuw rekenen, of op een schema via cron.

Rekenen ze bij elke wijziging, dan wordt de beheeromgeving traag zodra er veel verandert, bijvoorbeeld bij een import van een leverancier. Staan ze op schema maar draait cron niet goed, dan lopen prijzen en voorraad in de winkel achter. Allebei zie je terug als we meten of cron bijblijft.

Doen de modules te veel?

Een module is code die op bepaalde momenten meedraait. Een goede module doet weinig. Een slechte doet bij elke pagina een externe aanroep of een zware query.

We meten per module wat hij kost. Daarna bespreken we wat eruit kan, wat anders moet en wat beter opnieuw gebouwd wordt. Hoe we zelf modules bouwen, staat op een eigen pagina.

Is het de frontend?

Het standaardthema van Magento laadt veel JavaScript. Dat merk je vooral op telefoons. Wat helpt:

  • Scripts bundelen en uitstellen wat niet meteen nodig is
  • Scripts van derden kritisch bekijken: chat, tracking, reviews
  • Afbeeldingen in WebP of AVIF, in de maat die het scherm vraagt, en alleen laden wat in beeld komt

Soms is een lichter thema zoals Hyvä de grootste stap. Dat betekent wel dat het thema en een deel van de modules opnieuw gebouwd worden. Eerst halen we wat zonder nieuw thema te halen is.

Is de hosting op Magento ingericht?

Magento vraagt meer dan een gewone website. Te weinig PHP-processen, geen OPcache, een database die niet is afgesteld of een zoekmachine die op een andere plek draait dan de shop: het tikt allemaal aan. Een database vol oude winkelwagens, logs en verlopen sessies ook.

Hosten wij de shop, dan lossen we dat op de server op. Host je elders, dan beschrijven we wat je hoster moet aanpassen.

Hoe pakken wij het aan?

Meten, oplossen, opnieuw meten. Je krijgt de metingen voor en na zelf, met onze conclusie erbij, en geen beloofde cijfers vooraf. Meer op Magento sneller maken en Magento hosting.

Veelgestelde vragen

Wat is het verschil tussen een trage server en een trage pagina?

Een trage server laat je wachten voordat er iets binnenkomt: de tijd tot de eerste byte is hoog. Een trage pagina komt snel binnen, maar de browser heeft lang nodig om scripts, stijlen en afbeeldingen te laden en op te bouwen. Het eerste los je op in Magento en op de server, het tweede in het thema en de frontend. Vaak speelt allebei.

Hoe zie ik of Varnish mijn pagina's echt uit de cache serveert?

Door naar de antwoordkoppen van een pagina te kijken. Varnish en Magento zetten daar informatie in over of een pagina uit de cache kwam of opnieuw werd opgebouwd. Laad een categorie- of productpagina twee keer en vergelijk. Komt een pagina die voor iedereen hetzelfde is steeds opnieuw van de server, dan doet de paginacache voor die pagina niet mee.

Helpt een snellere server tegen een trage Magento-shop?

Soms, maar vaak minder dan je hoopt. Als de paginacache niet meedoet of een module bij elke pagina een zware query doet, wordt een snellere server alleen iets minder traag. Eerst meten waar de tijd zit is goedkoper. Ligt het aan te weinig PHP-processen, een ontbrekende OPcache of een zoekmachine op afstand, dan helpt het aanpassen van de hosting wel direct.

Waarom is de beheeromgeving van Magento traag?

Vaak doordat indexers bij elke wijziging opnieuw rekenen, of doordat cron niet goed draait en het werk zich opstapelt. Ook een database met jaren aan oude winkelwagens, logs en sessies maakt de admin traag. De paginacache helpt hier niet, want de beheeromgeving wordt nooit gecachet. Indexers op schema zetten en de database opruimen helpt meestal het meest.

Vertel wat er bij jullie draait.

Een kennismaking kost niets. Je praat meteen met een van de twee mensen die het werk daarna ook echt doen.