Platforms
WooCommerce sneller maken zonder winkelwagen en checkout te breken
Welke WooCommerce-pagina’s je kunt cachen, welke dynamisch moeten blijven en hoe je je webshop sneller maakt zonder bestellingen te verliezen.
Je maakt WooCommerce flink sneller door de pagina's te cachen die elke bezoeker hetzelfde ziet, zoals product-, categorie- en contentpagina's, terwijl winkelwagen, checkout en accountpagina's volledig dynamisch blijven. De meeste kapotte winkelwagens na een snelheidsproject ontstaan doordat iemand die scheiding negeert. In deze gids lees je welke pagina's waar thuishoren, hoe je dat controleert en wat je webshop nog meer vertraagt als de caching eenmaal staat.
Waarom WooCommerce trager is dan gewone WordPress
WooCommerce draait op WordPress, dus alles wat WordPress vertraagt, geldt hier ook: hosting, plug-ins, thema en afbeeldingen. Heb je die basis nog niet bekeken, begin dan met waarom een WordPress-site traag is.
Daarbovenop brengt een webshop zijn eigen belasting mee:
- Meer data per pagina. Productpagina's vragen prijzen, variaties, voorraad, btw-klassen, reviews en gerelateerde producten op.
- Sessies en cookies. Zodra iemand een product in de winkelwagen legt, start WooCommerce een sessie en zet het cookies. Vanaf dat moment zijn de verzoeken van die bezoeker persoonlijk.
- AJAX-verzoeken. Knoppen om iets aan de winkelwagen toe te voegen, minicarts en updates in de checkout roepen allemaal de server aan via
wc-ajax-endpoints. - Achtergrondtaken. Bestelmails, voorraadsynchronisaties, webhooks en geplande acties lopen naast het normale verkeer.
- Extensies. Betaalproviders, verzendcalculators, productfilters en marketingtools voegen elk hun eigen scripts en query's toe.
Daardoor ligt de ongecachete responstijd van een webshop hoger dan die van een blog. Caching levert dus meer op, maar luistert ook nauwer.
Wat je wel en niet kunt cachen
De regel is eenvoudig: ziet de pagina er voor elke anonieme bezoeker hetzelfde uit, cache hem dan. Hangt de inhoud af van wie er kijkt, dan niet.
| Paginatype | Cachen voor anonieme bezoekers? | Opmerkingen |
|---|---|---|
| Homepage, contentpagina's, blog | Ja | Cache legen na wijzigingen |
| Categorie- en tagarchieven | Ja | Filter-URL's met querystrings vragen aandacht |
| Productpagina's | Ja | Cache legen als prijs of voorraad verandert |
Winkelwagen (/cart/) | Nee | Altijd persoonlijk |
Checkout (/checkout/) | Nee | Persoonlijk, bevat nonces en betaalgegevens |
Mijn account (/my-account/) | Nee | Ingelogde omgeving |
?add-to-cart=-links | Nee | Wijzigt de sessie |
wc-ajax- en admin-ajax.php-verzoeken | Nee | Dynamisch van opzet |
| Elk verzoek met een winkelwagen- of sessiecookie | Nee | Bezoeker heeft een actieve winkelwagen |
WooCommerce beschrijft welke pagina's en cookies je moet uitsluiten in de handleiding over het configureren van cachingplug-ins (Engelstalig). De belangrijkste cookies zijn woocommerce_items_in_cart, woocommerce_cart_hash en wp_woocommerce_session_*, plus de inlogcookies van WordPress.
Cache omzeilen op basis van cookies
Regels op URL-niveau zijn niet genoeg. Heeft een bezoeker iets in de winkelwagen, dan kan zelfs een productpagina een minicart met zijn artikelen tonen. Een goede cache-instelling slaat elk verzoek met een WooCommerce-sessie- of winkelwagencookie over, zodat een klant met een volle winkelwagen nooit de pagina van iemand anders te zien krijgt.
Test winkelwagen en checkout na elke wijziging
Snelheidsaanpassingen in een webshop vragen om een functionele test, niet alleen om een snelheidstest. Heb je caching ingeschakeld of aangepast, doorloop dan het hele aankooppad in een privévenster:
- Open een productpagina als anonieme bezoeker.
- Leg het product in de winkelwagen en controleer of de minicart bijwerkt.
- Open de winkelwagen, wijzig het aantal en voer een kortingscode in.
- Ga naar de checkout, kies een ander verzendland en kijk of de totalen meeveranderen.
- Plaats een testbestelling met een sandbox-betaalmethode.
- Log in als klant en open de accountomgeving.
Controleer daarna de response-headers van de winkelwagen en de checkout. Die moeten een bypass of miss tonen, nooit een hit:
curl -sI https://shop.example.com/checkout/ | grep -i -E "cache|set-cookie"
Houd gecachete pagina's actueel
Productpagina's cachen roept een terechte vraag op: wat gebeurt er als de prijs of voorraad verandert?
- Cache legen bij een update. Bewerk je een product, leeg dan de cache van die URL en van de categoriepagina's waarop het product staat. Veel cache-oplossingen doen dat automatisch via een plug-in of een API-aanroep.
- Korte levensduur voor wisselende pagina's. Verandert de voorraad voortdurend, geef productpagina's dan een kortere cacheduur in plaats van ze helemaal niet te cachen.
- Belangrijke pagina's opwarmen. Na het legen van de cache veroorzaakt de eerste bezoeker een cache miss. Door je topproducten en categorieën op te warmen, blijven die snel.
- Acties en imports. Leeg de cache van de betrokken pagina's bewust voordat een actie start of na een bulkimport van prijzen.
Geolocatie en valuta
Toont je webshop prijzen op basis van het land van de bezoeker, dan kunnen gecachete pagina's de verkeerde btw of valuta laten zien. WooCommerce biedt voor de standaardlocatie van klanten de optie "Geolocate (with page caching support)". Die voegt een queryparameter toe, zodat elke locatie een eigen gecachete kopie krijgt. Plug-ins voor valutawissel hebben een vergelijkbare aanpak nodig. Kijk in hun documentatie of ze caching ondersteunen voordat je erop vertrouwt.
Versnel de dynamische onderdelen
Winkelwagen en checkout worden nooit gecachet, dus hun snelheid hangt helemaal af van de server en de code.
Cart fragments
Klassieke thema's laden vaak het script wc-cart-fragments, dat bij het laden van de pagina de server aanroept om de minicart te vernieuwen. In een drukke webshop betekent dat een ongecachet verzoek bovenop elke gecachete paginaweergave. Controleer of je thema dat echt nodig heeft. Gebruik je geen minicart in de header, dan kun je het script misschien weglaten; veel performanceplug-ins hebben daar een instelling voor.
Checkout
- Verwijder checkoutvelden en extensies die je niet nodig hebt, want elke verzend- of betaalplug-in voegt scripts en serveraanroepen toe.
- Laad betaalscripts alleen op de checkoutpagina, niet op de hele site.
- Beperk het aantal AJAX-updates op de checkoutpagina. Elke wijziging van adres of verzendmethode laat de server de totalen opnieuw berekenen.
Hoe vlot de checkout reageert, is precies wat INP (Engelstalig) meet: hoe snel de pagina reageert als een klant klikt of typt.
Database en achtergrondtaken
- Schakel High-Performance Order Storage (HPOS) in als je extensies het ondersteunen. Bestellingen komen dan in eigen tabellen te staan in plaats van in de posts-tabel.
- Houd de Action Scheduler in de gaten. Staat er onder WooCommerce > Status > Scheduled Actions een lange lijst met mislukte of wachtende acties, dan wijst dat vaak op een extensie die zich misdraagt.
- Voeg een persistente object cache toe (Redis of Memcached), zodat herhaalde query's voor producten, opties en sessies uit het geheugen komen.
- Vervang WP-Cron door een echte servercron, zodat geplande taken niet binnen het verzoek van een klant draaien.
Wil je serverresponstijden grondig aanpakken, lees dan de gids over TTFB verlagen.
Afbeeldingen en scripts op productpagina's
Productgalerijen zijn vaak het zwaarste deel van een webshop. Gebruik WebP of AVIF, lever formaten die bij de galerijlay-out passen en laad de hoofdafbeelding van het product niet lazy, want die is meestal je LCP-element. Scripts voor zoom, lightbox en sliders horen alleen op productpagina's te laden, niet op elke pagina van de site.
Neem ook je tracking- en marketingscripts onder de loep. Elke pixel, chatwidget en reviewbadge concurreert op de main thread met de eigen code van de webshop.
Beheer of vergelijk je ook andere shopsystemen, dan behandelt de gids over Shopware 6-prestaties dezelfde scheiding tussen cache en dynamiek voor de HTTP-cache van Shopware.
Zo helpt fast.site je
fast.site staat vóór je WooCommerce-hosting. Je houdt je eigen hoster: je voegt je domein toe in het dashboard en zet je nameservers over naar fast.site. Daarna beheert fast.site je DNS, dus alle bestaande records, inclusief de MX-records voor de e-mail van je webshop, moeten in de DNS-zone van fast.site staan.
Product-, categorie- en contentpagina's voor anonieme bezoekers kunnen door Fast Edge Cache™ vanaf de edge worden geleverd, in de regio's die bij je abonnement horen. Een cache HIT bereikt je origin nooit, zodat je server in piekuren meer capaciteit overhoudt voor winkelwagen en checkout. Winkelwagen, checkout, accountpagina's en sessies moeten de cache omzeilen, en de header fs-cache toont daar BYPASS. Zo kun je elke pagina controleren met de checkouttest hierboven. Veranderen prijzen of voorraad, dan leeg je de cache per URL in het dashboard of via de API, en de cache warmer houdt belangrijke pagina's warm.
fast.site kan productafbeeldingen ook direct naar WebP omzetten (AVIF afhankelijk van je abonnement) en schadelijke bots en HTTP-floods aan de edge tegenhouden voordat ze je webshop bereiken. Op de WooCommerce-pagina en in het artikel over de WooCommerce-integratie lees je hoe je het instelt.
Meet je webshop voor en na, inclusief een volledige doorloop van de checkout. Je kunt beginnen met een gratis proefperiode van 7 dagen, zonder creditcard.
Veelgestelde vragen
Kun je WooCommerce-pagina's cachen?
Ja, voor anonieme bezoekers kun je de homepage, contentpagina's, categoriearchieven en productpagina's cachen. Winkelwagen, checkout, de accountomgeving, AJAX-verzoeken en elke bezoeker met een winkelwagen- of sessiecookie moeten de cache omzeilen.
Waarom is mijn WooCommerce-checkout traag?
De checkout wordt nooit gecachet, dus die laat de pure snelheid van je server en extensies zien. Veelvoorkomende oorzaken zijn trage hosting, veel betaal- en verzendplug-ins, externe API-aanroepen voor verzendtarieven of btw, en veelvuldige herberekeningen terwijl de klant het formulier invult.
Maakt caching de WooCommerce-winkelwagen kapot?
Alleen als het verkeerd is ingesteld. Problemen ontstaan als winkelwagen- of checkoutpagina's, of verzoeken met WooCommerce-sessiecookies, in de cache belanden. Sluit ze uit en test daarna het hele aankooppad in twee browsers tegelijk.
Hoe houd ik prijzen en voorraad actueel met caching?
Leeg de cache van de product-URL en de bijbehorende categoriepagina's zodra je een product wijzigt, en leeg hem bewust vóór acties of na imports. Verandert de voorraad in je webshop voortdurend, gebruik dan een kortere cacheduur voor productpagina's.
Moet ik cart fragments uitschakelen?
Toont je thema geen minicart, dan is het verzoek voor cart fragments meestal onnodige belasting. Toont het er wel een, houd het dan aan of stap over op een oplossing die je thema ondersteunt, en test of het aantal in de winkelwagen nog bijwerkt nadat je een product toevoegt.
Test fast.site met je eigen website
fast.site voegt edge-caching, afbeeldingsoptimalisatie en DDoS-bescherming toe aan je bestaande hosting. Koppel je domein en meet het verschil op je eigen pagina's.
Geef je website 7 dagen. Laat de resultaten beslissen.
Begin met je eigen domein, je eigen verkeer en duidelijkheid over wat daarna gebeurt.