WooCommerce Cart Fragments & MyParcel AJAX Overheads Uitschakelen
Hoe u onnodige ?wc-ajax=get_refreshed_fragments aanroepen en MyParcel verzendoptie-loops uitschakelt voor een direct voelbare 50% reductie in serverbelasting.
In Nederland maken duizenden webshops gebruik van de combinatie WooCommerce en verzendsoftware zoals MyParcel of Sendcloud voor PostNL- en DHL-verzendlabels. Een berucht prestatie-lek in deze setup is het standaardgedrag van WooCommerce: op elke pagina van de website wordt een trage AJAX-aanroep (?wc-ajax=get_refreshed_fragments) afgevuurd om het winkelwagen-icoontje bij te werken.
Bij een webshop met 50 gelijktijdige bezoekers vuurt dit elke seconde 50 zware, ongecachte PHP-verzoeken af naar uw webserver. Zodra MyParcel daar nog extra bezorgoptie-checks (zoals ochtend- of avondlevering) aan koppelt, schiet de serverbelasting omhoog en keldert de TTFB.
Hier is hoe u dit probleem definitief oplost.
1. De Oorzaak: Niet-gecachte AJAX op statische pagina’s
Wanneer een bezoeker een informatieve blogpost of de homepage leest, is de winkelwagen meestal leeg. Toch laadt WooCommerce het volledige WordPress-framework in het geheugen voor get_refreshed_fragments, wat de FastCGI- of Varnish-cache volledig omzeilt:
[Bezoeker opent Homepage] ──► [Snelle Cache Response: 20ms]
│
└──► [JS vuurt AJAX: /?wc-ajax=get_refreshed_fragments] ──► [PHP-FPM: 650ms CPU Spike!]
2. Oplossing Stap 1: Cart Fragments uitschakelen wanneer de mand leeg is
We schakelen het script standaard uit op alle pagina’s en activeren het pas zodra de klant daadwerkelijk een product toevoegt:
<?php
// wp-content/mu-plugins/disable-cart-fragments.php
add_action('wp_enqueue_scripts', function() {
// Laad fragments nooit op de winkelwagen- of afrekenpagina (daar is het overbodig)
if (is_cart() || is_checkout()) {
return;
}
// Controleer of de WooCommerce cart sessie leeg is
$has_cart = false;
if (isset($_COOKIE['woocommerce_items_in_cart']) && (int)$_COOKIE['woocommerce_items_in_cart'] > 0) {
$has_cart = true;
}
// Als de winkelmand leeg is, de-queue het zware cart-fragments script
if (!$has_cart) {
wp_dequeue_script('wc-cart-fragments');
}
}, 99);
3. Oplossing Stap 2: SessionStorage ter vervanging van live AJAX
Gebruik de moderne HTML5 sessionStorage van de browser om het winkelwagen-aantal lokaal bij te houden. Het winkelwagen-icoon wordt pas via AJAX bijgewerkt bij een werkelijke added_to_cart gebeurtenis:
// Minimalistisch script dat sessionStorage synchroniseert
jQuery(document.body).on('added_to_cart', function(event, fragments, cart_hash) {
if (fragments) {
sessionStorage.setItem('wc_fragments', JSON.stringify(fragments));
sessionStorage.setItem('wc_cart_hash', cart_hash);
}
});
4. Oplossing Stap 3: MyParcel Delivery Options Cachen
De MyParcel checkout-module berekent aflevermomenten dynamisch via de PostNL API. Schakel in de MyParcel plugin-instellingen de optie in om bezorgdagen lokaal 30 minuten te cachen in plaats van bij elke adresveld-wijziging een live API call uit te voeren:
# Instellingen in WooCommerce > Instellingen > Verzendmethoden > MyParcel:
- Bezorgdagen ophalen: 'Cache voor 30 minuten'
- Zaterdag/Maandag levering: 'Statische tijdsvensters gebruiken'
5. Resultaten
| Systeemprestaties | Vóór Optimalisatie | Na Uitschakeling Fragments |
|---|---|---|
| Aantal PHP-FPM aanroepen | 100.000 / dag | 12.000 / dag (-88%) |
| Gemiddelde Server CPU Load | 78% | 18% |
| TTFB op Homepage & Categorieën | 420 ms | 35 ms (100% Cache Hit) |
| Winkelwagen Functionaliteit | Ongewijzigd | 100% Werkend & Direct |
De webserver draait merkbaar soepeler, caching-lagen functioneren zoals bedoeld en de klantervaring is razendsnel.
🔗 Onderling Verbonden Technische Diagnoses & Architectuur-Mesh:
Prestatieknelpunten op webservers en e-commerceplatformen staan zelden op zichzelf. Serverrespons, database-indexering en checkout-scripts zijn direct verweven:
- Mollie & iDEAL Checkout INP Vertraging Verhelpen: Optimaliseer de interactiesnelheid tijdens de betaalkeuze op mobiele apparaten.
- PostNL Postcode-Adres Autocomplete Latency Oplossen: Voorkom invoervertragingen bij checkout-formulieren in Nederland.
- Canonical Tag Valkuilen bij Gepagineerde Filterpagina’s: Behoud het crawlbudget van Googlebot bij grootschalige productarchieven.
Directe implementatie nodig op uw productieserver?
Chirurgische herconfiguratie van servers, database-indexering of JavaScript-optimalisaties op live productiesystemen brengen downtime-risico's met zich mee. Als u de voorkeur geeft aan een risicovrije oplossing zonder uitval, voer ik deze patch direct uit op uw origin stack onder ons Result-First, Fair-Pay model.
Direct technische hulp nodig bij een actieve fout?
Stuur uw terminal-log, stack trace of server-URL op elk moment door — 7 dagen per week. Puur asynchrone tekst-triage direct met Senior Systems Auditor Damar. Geen ongevraagde telefoongesprekken.