Naar hoofdinhoud
TIEMAN.IT

Magento performance, gebouwd voor je echte bezoekers

Een slechte PSI lab-score is een symptoom, geen diagnose. Ik ga tot de oorzaak: welke resources blokkeren, welke scripts de main thread opeisen, waarom de LCP later laadt dan nodig. CarCare24 ging van 14 tot 16 seconden LCP in PSI lab naar 2,14 seconden op CrUX, gemeten over 28 dagen echte bezoekers.

Waarom Magento traag is by default

Magento 2 is gebouwd voor flexibiliteit en uitbreiding, niet voor snelheid. Een standaard Magento-installatie met een paar populaire extensies levert al een JavaScript-bundle op die de browser seconden nodig heeft om te parsen voordat er iets zichtbaar wordt.

  • Zware theme-JavaScript: frameworks zoals Infortis Ultimo of RWD laden complete UI-bibliotheken, ook op pagina's die ze niet gebruiken.
  • RequireJS module-loading: Magento's front-end bundelsysteem is gebouwd voor compatibiliteit, niet voor snelheid. Elke module laadt zijn eigen dependencies in een waterval van requests.
  • Plumrocket en cookie-consent plugins: dit soort modules injecteert scripts die render-blocking zijn zolang er geen user-consent is.
  • Plugin sprawl: elke extensie voegt CSS en JavaScript toe aan elke pagina, zonder te checken of het daar nodig is.
  • Geen hero LCP-prioritering: de producthero of banner-afbeelding wordt standaard behandeld als een gewone afbeelding, zonder eager load of fetchpriority.
  • Shared hosting TTFB: op Hypernode-plannen die niet goed zijn geconfigureerd, of op shared omgevingen zonder Full Page Cache, loopt de Time to First Byte al op tot boven de 800ms.

PSI lab simuleert dit onder worst-case omstandigheden: 4x CPU-throttle, Slow 4G netwerk. Dat verklaart waarom lab-scores zo laag uitpakken voor Magento-shops. Het is geen teken dat de shop onbruikbaar is. Het is wel een signaal dat er ruimte is voor verbetering die echte bezoekers direct voelen.

PSI lab versus CrUX: wat echte bezoekers ervaren

PageSpeed Insights toont twee soorten data naast elkaar, en de meeste shop-eigenaren lezen alleen de lab-score. Dat is het getal dat varieert en tegenvalt. De field-data eronder, gevoed door het Chrome User Experience Report (CrUX), is wat je klanten daadwerkelijk ervaren.

Lab meet op een gesimuleerde device: 4x CPU-throttle, Slow 4G, Lighthouse-engine op een Google-server. Field-data meet op de hardware en verbindingen van echte bezoekers over de afgelopen 28 dagen. Voor Magento-shops die hoofdzakelijk desktop-verkeer hebben, of bezoekers met 4G+ verbindingen, is het verschil tussen lab en field aanzienlijk.

Bij CarCare24 was de lab-LCP op mobiel 14 tot 16 seconden. De CrUX-LCP over 28 dagen: 2,14 seconden. Dat is niet omdat de shop het zo goed doet dat lab het niet bijhoudt. Het is omdat lab een worst-case scenario simuleert. Ik optimaliseer voor wat je klanten ervaren, niet voor wat Lighthouse rapporteert. CrUX is de bron-van-waarheid voor Core Web Vitals ranking in Google.

Mijn audit-aanpak voor Magento 2

Een Magento performance-audit begint niet met gokken. Ik meet eerst, dan analyseer ik, dan prioriteer ik. Het verschil met een generieke webperf-audit: ik ken de Magento-internals die anderen overslaan.

  • PSI API op homepage, categoriepagina, productpagina en checkoutpagina: elk paginatype heeft zijn eigen knelpuntenprofiel.
  • Network waterfall in Chrome DevTools: welke request is de LCP-kandidaat, wat laadt ervoor, welk script blokkeert de render.
  • CrUX-dashboard en Google Search Console CWV-rapport: wat zien echte bezoekers de afgelopen 28 dagen, per paginatype.
  • Magento mode check: staat de shop in developer mode op productie? Dan draait RequireJS unbundled en is elke JS-file een aparte request.
  • Full Page Cache status: is Varnish of Magento FPC actief en correct geconfigureerd? TTFB van 800ms+ is bijna altijd een cache-miss.
  • MagePack of requirejs-bundling analyse: is JS al gebundeld en geminified, en zo ja, hoe is de bundle-strategie ingericht?
  • Third-party impact: hoeveel main thread time claimen Plumrocket, GTM, chat-widgets en consent-banners samen?

Uit deze analyse komt een gerangschikte lijst van knelpunten. Niet gesorteerd op hoe makkelijk ze te fixen zijn, maar op hoeveel impact de fix heeft op CrUX. Dat is het verschil tussen score-chasing en daadwerkelijk verbeteren.

Wat ik typisch fix op Magento

Na de audit implementeer ik de fixes met de hoogste CrUX-impact. Op Magento-shops gaat het bijna altijd om een combinatie van de volgende ingrepen:

  • Hero-image: loading=eager en fetchpriority=high op de LCP-kandidaat. Dit is de snelste win op bijna elke Magento-shop. De banner of productafbeelding above the fold wordt standaard lazy-loaded. Dat is precies verkeerd.
  • WebP-conversie: Magento 2.4.x heeft ingebouwde WebP-support via de mediagallery. Activeren en testen per browser-support is een kwestie van configuratie.
  • Deferred third-party scripts: Plumrocket-consent, GTM, livechat-widgets en social embeds verplaatsen naar na het first contentful paint. Ze mogen de render niet blokkeren.
  • Custom CSP-module: een Content Security Policy die te breed of te permissief is, blokkeert op sommige Magento-installaties scripts die nodig zijn. Ik schrijf een module die de CSP correct afdwingt zonder functionaliteit te breken.
  • MagePack bundling tuning: MagePack groepeert RequireJS-modules per pagina-type. Verkeerde configuratie geeft juist grotere bundles. Ik analyseer het bundle-profiel en pas de configuratie aan.
  • Full Page Cache warming: een cold cache geeft hoge TTFB op de eerste bezoeker. Met een cache-warmer script wordt elke pagina vooraf gegenereerd.

Welke van deze fixes van toepassing zijn, hangt af van jouw installatie, theme en extensie-set. Op een Hypernode-omgeving met Cloudflare Free zijn andere knoppen beschikbaar dan op een generieke VPS. Ik pas de aanpak aan op wat jouw stack toelaat.

-- Klant-casus

CarCare24: van 14 seconden lab-LCP naar 2,14 seconden CrUX

CarCare24 is een Magento 2 webshop met circa 3400 producten in 4 talen (NL, EN, DE, FR), gehost op Hypernode met Cloudflare Free. Het Infortis Ultimo theme, custom extensies en meerdere third-party scripts zorgden voor een complexe front-end stack. Voor de performance-waves stond de mobiele LCP in PSI lab op 14 tot 16 seconden.

De audit wees drie primaire knelpunten aan: de hero-banner laadde zonder eager/fetchpriority, waardoor de browser hem pas ophaalde nadat alle blocking scripts klaar waren. Plumrocket cookie-consent blokkeerde render tot gebruikersinteractie. En de RequireJS-bundle-configuratie leidde tot meer parallel requests dan de browser kon verwerken zonder hoofd-thread-conflict.

14 tot 16s
LCP voor (PSI lab mobiel)
6,8s
LCP na 9 waves (PSI lab mobiel)
2,14s
LCP CrUX (28 dagen echte bezoekers)

Na negen performance-waves staan de resultaten als volgt. PSI lab mobiel: LCP 6,8 seconden. De lab-score varieert tussen 38 en 65 op dezelfde dag, afhankelijk van CPU-throttle-variantie op de Google-server. Dat is normaal voor lab-omstandigheden en geen reden tot zorg. Wat de werkelijke stand is: CrUX over 28 dagen toont LCP 2,14 seconden, INP 111ms, CLS 0,05, FCP 1,44 seconden. Alle Core Web Vitals zitten in het groen. Accessibility ging van 90 naar 100, Best Practices van 88 naar 96, SEO 100. PSI lab is een worst-case simulatie. CrUX is wat jouw klanten ervaren. Ik stuur op het tweede.

Wat ik niet doe

Er zijn manieren om een Lighthouse-score omhoog te duwen zonder dat bezoekers daar iets van merken. Ik gebruik ze niet, en ik leg altijd uit waarom een bepaalde tactiek af te raden is.

  • Score-chasing zonder CrUX-context: een score van 90 in lab die niet terug te zien is in CrUX-field-data is weinig waard. Ik optimaliseer voor field-data, niet voor lab-schermafdrukken.
  • Ongeautoriseerde preload-hints: fetchpriority=high op resources die niet op het kritieke pad zitten, geeft de browser verkeerde prioriteitssignalen en kan performance verslechteren.
  • Theme-rewrites zonder kostenanalyse: een full Hyvä-migratie lost veel op, maar kost ook substantieel. Als de huidige stack met gerichte fixes al CrUX-doelen haalt, is een theme-rewrite geen proportionele keuze.
  • Afbeeldingen verbergen om CLS te verlagen: de visuele stabiliteitscore omhoog krijgen door elementen te verstoppen lost de oorzaak niet op.
  • Lichtere pagina's serveren aan bots: Google detecteert cloaking en bestraft het. De pagina die Lighthouse ziet, moet identiek zijn aan wat bezoekers zien.

Ik geef altijd inzicht in de afweging: wat kost een fix, wat levert het op in CrUX, en wat is de risicobeoordeling voor de rest van de shop.

Pricing en scope

De prijs van een Magento performance-traject hangt af van drie factoren: de omvang van de shop (aantal unieke paginatypes en producten), het aantal extensies en de complexiteit van de theme-stack, en of je alleen de audit wil of ook de implementatie.

Ik werk niet met vaste prijspakketten voor Magento-werk. Een kleine shop met een standaard-theme en tien extensies heeft een andere scope dan een shop met 3400 producten, custom CSP, MagePack en Cloudflare-regels. Prijzen zijn altijd op aanvraag, na een eerste orienteringsgesprek. Daarin bepaal ik wat de scope is en geef ik een vaste prijs voor de audit-fase.

Verwante pagina's

-- Veelgestelde vragen

Heb je een vraag?

Ik ken Hyvä en kan ermee werken, maar ik draai geen Hyvä-projecten als productiebeheerder. Op CarCare24 werk ik met Infortis Ultimo. Als jouw shop Hyvä draait, kan ik de performance-audit uitvoeren en fixes adviseren. Implementatie doe ik bij Hyvä op adviesbasis of in samenwerking met jouw front-end developer.
Ja, ik ken MagePack en de impact van verkeerde bundle-configuratie. Een slecht geconfigureerde MagePack-setup kan grotere bundles geven dan de standaard RequireJS-loading. Ik analyseer het bundle-profiel en pas de configuratie aan op jouw paginatypes en extensie-set.
Ja. B2B Magento-installaties hebben vaak extra extensies voor klantengroepen, prijslijsten en offerteflows. Die extensies voegen JavaScript toe dat in de performance-audit meegenomen wordt. Ik noteer de impact per extensie en geef advies over wat defer-baar is zonder B2B-functionaliteit te breken.
Ja. Ik werk dagelijks met composer op Magento 2-installaties en doe patch-updates, hotfixes en versiebeheer via composer. Als een performance-fix een patch vereist, pas ik dat correct toe inclusief test op staging.
Ik werk altijd op een kopie van de productie-database op een staging-omgeving voor ingrijpende changes. Performance-fixes die alleen front-end raken (theme-config, image-attributen, script-defer) kunnen via standaard Magento-deploymentflows. Fixes die modules of PHP raken, gaan via staging met een expliciete validatie voor het naar productie gaat.
Ja. CarCare24 draait Infortis Ultimo en haalt alle Core Web Vitals in het groen met CrUX-LCP van 2,14 seconden. Een Hyvä-migratie is geen vereiste voor goede performance. Gerichte fixes op de bestaande stack leveren in veel gevallen al de resultaten die nodig zijn voor CWV-compliance.

Wil je weten wat jouw Magento-shop vertraagt?

Stuur me de URL van je shop. Ik kijk naar de eerste PSI en CrUX-data en geef je een eerlijk beeld van de knelpunten, zonder verplichting.