Yousource

Kennisbank · Webshop prestaties

WooCommerce sneller maken zonder je checkout te beschadigen

Alle kennisartikelen

Onderzoek eerst welk winkelpad vertraagt: catalogus, product, winkelwagen of checkout. Cache nooit blind de hele shop. WooCommerce sluit Cart, Checkout en My Account uit van paginacaching; sessies, cookies en dynamische verzoeken vragen eveneens gerichte controles.

Meet een winkelpad, niet alleen de homepage

Een snelle homepage zegt weinig over een categorie met filters of een checkout die op externe diensten wacht. Noteer het apparaat, de URL, de sessiestatus en de handeling waarbij vertraging optreedt. Meet eerst uitgelogd met een lege winkelwagen, daarna met een product in de winkelwagen. Een ingelogde beheerder ziet vaak een andere cache- en scriptbelasting dan een klant.

Wij splitsen de diagnose in publieke cataloguspagina's en persoonlijke winkelhandelingen. Vergelijk een categorie zonder filters, dezelfde categorie met filters, een eenvoudig product en een product met varianten. Open in browserontwikkeltools het netwerkoverzicht en registreer welke aanvraag lang duurt. Verander niet tegelijkertijd hosting, thema en cache; dan kun je een verbetering of regressie niet toeschrijven.

Symptoom koppelen aan het juiste onderzoek

Waar merk je vertraging?
Categorie of filters
Onderzoek eerst
Productqueries, filterextensie en aantallen resultaten
Vergelijk
Zonder filter versus dezelfde selectie
Waar merk je vertraging?
Productpagina
Onderzoek eerst
Hoofdafbeelding, varianten en externe scripts
Vergelijk
Eenvoudig product versus variabel product
Waar merk je vertraging?
Winkelwagen
Onderzoek eerst
Sessies, dynamische requests en cache-uitzonderingen
Vergelijk
Lege versus gevulde winkelwagen
Waar merk je vertraging?
Checkout
Onderzoek eerst
Verzend-, betaal- en belastingkoppelingen
Vergelijk
Sandbox met meerdere verzend- en betaalkeuzes

Filters en productqueries kunnen duurder zijn dan het template

Een grote catalogus is niet automatisch traag, maar complexe combinaties van kenmerken, voorraad, prijzen en sortering kunnen veel databasewerk veroorzaken. Onderzoek trage queries op een testomgeving of met veilige monitoring. Bekijk of een filterextensie dezelfde gegevens herhaaldelijk opvraagt en of een import of achtergrondtaak op dat moment veel werk uitvoert.

Beperk onnodige aantallen producten per pagina en controleer paginering. Test filters met representatieve categorieën en varianten; een kleine lege testcatalogus laat schaalproblemen niet zien. Een zoekindex of objectcache kan helpen wanneer die bij de architectuur past, maar lost een verkeerde query of incompatibele uitbreiding niet vanzelf op.

Ruim de database alleen gericht op. Verwijder niet op goed geluk ordergegevens, sessies of tabellen omdat een plugin ze ‘overbodig’ noemt. Controleer eigenaarschap, bewaartermijnen en herstelmogelijkheden. Let bij wijzigingen aan orderopslag op de compatibiliteit van betaal-, export- en fulfilmentuitbreidingen. Hosting moet voldoende capaciteit bieden voor dynamisch werk, niet uitsluitend voor gecachete pagina's.

Maak productbeelden passend, zonder inspectie onmogelijk te maken

Een productoverzicht heeft andere beeldmaten nodig dan een zoomweergave. Controleer welke afbeelding werkelijk wordt geladen op mobiel: een kleine zichtbare thumbnail kan alsnog een groot origineel ophalen. Gebruik passende formaten en responsieve varianten; houd detailbeelden beschikbaar wanneer een klant materiaal, kleur of afwerking wil bekijken.

Laad de belangrijke zichtbare productafbeelding niet onnodig laat. Stel afmetingen vast zodat de pagina niet verspringt zodra foto's verschijnen. Bekijk ook badges, reviewswidgets, lettertypen en aanbevelingen die het producttemplate later invullen. De afweging is niet ‘minder beeld is altijd beter’, maar genoeg informatie met een doelbewuste laadvolgorde.

Cachegrenzen: publiek is niet hetzelfde als persoonlijk

De officiële WooCommerce-documentatie noemt Cart, Checkout en My Account als pagina's die niet gecachet mogen worden. Controleer je echte winkelwagen-, afreken- en accountpaden: die hoeven niet de Engelse namen te hebben. Stel de uitzonderingen in op alle relevante lagen, dus ook bij de host of CDN. Een plugininstelling kan een bovenliggende paginacache niet automatisch corrigeren.

WooCommerce gebruikt onder meer woocommerce_cart_hash, woocommerce_items_in_cart en wp_woocommerce_session_ om winkelgegevens en sessies te herkennen. Volg de integratie van je cacheleverancier en controleer wat er gebeurt wanneer die cookies aanwezig zijn. Verwijder sessiecookies niet blind om een hogere cache-hitratio te krijgen. Een productpagina kan persoonlijke prijzen of een miniwinkelwagen tonen en daardoor aanvullende uitzonderingen nodig hebben.

Behandel AJAX, toevoegen-aan-winkelwagen en de Store API als functionele verzoeken, niet als gewone statische pagina's. Persoonlijke cart- en checkoutresponses mogen niet tussen klanten worden gedeeld; publieke catalogusresponses vragen hun eigen regels. Bekijk methode, cookies, headers en inhoud vóór je een CDN-regel toepast. Test na het legen van caches ook bestaande sessies, niet alleen een verse browser.

  • Cart, Checkout en My Account zijn op iedere paginacachelaag uitgesloten.
  • Sessiecookies en toevoegen-aan-winkelwagen behouden hun werking.
  • Twee afzonderlijke browsers zien uitsluitend hun eigen winkelwagen.
  • Dynamische Store API- en AJAX-responses worden niet als gedeelde persoonlijke HTML gecachet.

Cart fragments en checkout: schakel alleen uit wat je begrijpt

Cart fragments kunnen een miniwinkelwagen via dynamische requests bijwerken. Onderzoek eerst of jouw thema of uitbreiding dit mechanisme gebruikt; block-based winkels kunnen andere verzoeken hebben. Een script overal uitschakelen kan de teller of inhoud verouderen. Beperk onnodig laden alleen op pagina's waar de winkelinterface aantoonbaar niet van die functie afhankelijk is.

Bij checkoutvertraging kijk je naar de afzonderlijke verzend-, betaal- en adresverzoeken. Een externe dienst die langzaam reageert vraagt een andere oplossing dan een zware productquery. Test foutafhandeling: wat ziet de klant bij een mislukte betaalpoging of onbereikbare verzendservice? Vertraag scripts niet universeel; een knop kan dan zichtbaar zijn voordat zijn betaal- of validatielogica klaar is.

Bewijs dat de winkel nog werkt

Voer na iedere gerichte optimalisatie dezelfde meting opnieuw uit en controleer de bestelling in sandbox. Neem aantallen, varianten, korting, verzending, account en orderstatus mee. Controleer mobiel, met toetsenbord en met twee gescheiden sessies. Een sneller labrapport is geen geslaagde wijziging wanneer de klant de bestelling niet kan afronden.

Leg wijziging, verwachting, meetcondities en uitkomst vast. Maak onderscheid tussen technische responstijd en omzet: verkopen worden ook beïnvloed door assortiment, prijs, verkeer en vertrouwen. De cases hieronder laten het soort winkelwerk zien dat Yousource uitvoert, niet een beloofde snelheidswinst. Voor algemene WordPress-ingrepen blijft de bestaande vijftien-tips-gids de bredere vervolgstap.

Context uit ons werk

Deze projecten laten het type werk zien. Ze onderbouwen geen gegarandeerde uitkomst van de stappen in deze gids.

Homepage van de WooCommerce-webshop PhoneMarket.nl met smartphones, tablets en zoekfunctiePhoneMarket

Ondersteuning en doorontwikkeling van een bestaande WooCommerce-webshop.

Homepage van VloerenCentrum Zwolle met productzoeker en vloerencategorieënVloerenCentrum Zwolle

WooCommerce-catalogus met categorieën, filters en varianten; geen gepubliceerde snelheidsscore als bewijs.

Documentatie bij deze gids

Hulp bij de uitvoering? Bekijk de passende dienst en bespreek daar je situatie.

Bespreek je WooCommerce-project