Kennis
Een Breakdance WooCommerce-shop cachen: wat wel en wat niet
Je kunt een Breakdance WooCommerce-shop prima cachen, zolang de winkelwagen, afrekenen en mijn-account buiten de cache blijven en de cache leeg gaat bij voorraad- en prijswijzigingen. De rest van de shop, zoals productpagina's en categorieën, haalt er veel voordeel uit. Breakdance zelf verandert daar niets aan: het blijft WooCommerce dat bepaalt wat persoonlijk is. Hieronder staan de punten waar het misgaat.
In het kort
- Houd winkelwagen, afrekenen, mijn-account en add-to-cart-URL's altijd buiten de paginacache.
- Cart fragments (wc-ajax=get_refreshed_fragments) zijn een aparte verzoekreeks. Je kunt ze op pagina's zonder winkelwagenelement uitzetten.
- Een wijziging in voorraad of prijs moet de productpagina, categorieën en shop wissen.
- Filter-URL's met parameters kun je beter alleen cachen als de filterplugin zegt dat het veilig is.
- Met meerdere valuta's of geolocatie heb je een cookie-uitsluiting nodig, anders ziet iedereen dezelfde prijs.
Welke pagina's mogen niet in de cache?
WooCommerce markeert zijn eigen winkelwagen-, afreken- en accountpagina's met DONOTCACHEPAGE, en Spark Speed respecteert dat, ook bij hernoemde of vertaalde slugs. Daarnaast staat er een lijst met URL-delen die nooit worden opgeslagen, zoals cart, checkout, my-account, wc-api en add-to-cart. Bij de Woo-voorinstelling komen daar Nederlandse varianten bij: winkelmand, afrekenen, mijn-account en order-received. Let op dat zo'n lijst op een deel van de URL werkt: een pagina met cart in de slug blijft ook buiten de cache.
Wat zijn cart fragments en moet je ze uitzetten?
Cart fragments zijn het AJAX-verzoek dat WooCommerce op elke pagina doet om het winkelwagentje in de header te verversen. Op een Breakdance-site met een minicart in de header is dat verzoek nuttig, op pagina's zonder winkelwagenelement is het verspilling. Spark Speed heeft een optionele stand 'geoptimaliseerd' die het script wc-cart-fragments overal weghaalt behalve op winkelwagen, afrekenen, account, productpagina's, shop en productcategorieën. De stand staat standaard uit. Het antwoord van dat verzoek zelf wordt niet gecachet.
Mag een klant met een gevulde winkelwagen de cache zien?
Standaard krijgt een bezoeker met artikelen in de winkelwagen elke keer een verse pagina. Dat is veilig maar niet snel. Spark Speed kan dit versnellen (woo_cart_cache), maar alleen als je het inschakelt na een controle op jouw site: het voegt een echt product toe aan een winkelwagen, rendert de pagina's anoniem en met winkelwagen en vergelijkt ze. Pas bij een gelijk resultaat, of een door jou goedgekeurd verschil, gaat het aan. Elke week draait de controle opnieuw. Een pagina die een winkelwagenmelding bevat, wordt nooit in de gedeelde cache opgeslagen.
Wanneer moet de cache leeg bij voorraad en prijs?
Een uitverkocht product dat in de cache nog beschikbaar lijkt, geeft teleurgestelde klanten. Spark Speed luistert naar de WooCommerce-voorraadhooks, ook voor wijzigingen via REST, import of geplande acties. Een wijziging in het aantal telt alleen als de shop dat aantal toont. Alle producten in één verzoek worden samen verwerkt, en varianten verwijzen naar het hoofdproduct. Dan gaat het product, de bijbehorende categorieën, het archief, de blogpagina en de homepage weg uit de cache.
Hoe zit het met filters en meerdere valuta's?
WooCommerce-filters (filter_, orderby, min_price) worden standaard niet gecachet, dus die pagina's renderen telkens. Een filterplugin kan zelf aangeven dat een URL veilig is. Dat is een afweging: veilig, maar minder snel. Gebruik je een valutaplugin of geolocatie, dan ontbreekt een aparte cachevariant per valuta. Voeg dan het valutacookie toe aan de uitgesloten cookies, wat betekent dat die bezoekers niet uit de cache bediend worden.
Zet na het inrichten een testproduct in je winkelwagen en klik door naar een productpagina. Zie je jouw artikel niet of een melding van iemand anders, dan staat de uitsluiting niet goed.
Spark Speed houdt winkelwagen en afrekenen buiten de cache en leegt productpagina's bij voorraadwijzigingen.
Veelgestelde vragen
Nee. De winkelwagen, afrekenen en mijn-account zijn per klant verschillend en horen niet in een gedeelde cache.
Omdat zij standaard een verse pagina krijgen. Dat is bewust veilig. De optie voor winkelwagencache is een keuze na controle.
Nee, dat gaat automatisch bij Spark Speed. Een wijziging via REST of import wordt ook opgepakt.