Doel: Als je vertraging ervaart bij het importeren van je WooCommerce orders, kan dit te maken hebben met cache.In dit artikel leggen we uit hoe je dit probleem troubleshoot en oplost.
Let op: De oplossingen in dit artikel vereisen enige development kennis. Indien je niet gekwalificeerd bent, adviseren we om contact op te nemen met je web developer. Het oplossen van het probleem vindt plaats in je eigen omgeving (niet in Sendcloud). Hierdoor kunnen we slechts adviseren.
Waarom is er een vertraging bij het importeren van mij order in Sendcloud?
Vertraging bij het importeren van orders kan door meerdere dingen worden veroorzaakt. In dit artikel bespreken we vertragingen met betrekking tot cache. Het ontwerp zorgt ervoor dat het niet mogelijk is om al je orders in één keer op te halen. Hierdoor maakt Sendcloud gebruik van pagination en cache.
Wat is pagination?
Pagination is een feature die orders splits in kleinere sets en de resultaten pagina voor pagina ophaalt. Sendcloud dient vervolgens slechts het gewenste paginanummer door te geven via de API request.
Wat is cache?
Cache helpt webshop systemen om productiever en efficiënter te zijn. In plaats van zware database query's en berekeningen per API-request te maken, ontvang je een response (bijvoorbeeld orders) die al zijn voorbereid en opgeslagen van eerdere API-requests. Door de cache functionaliteit, kunnen de laatste orders niet altijd worden opgehaald. Dit komt omdat de nieuwste orders wel in de database staan, maar nog niet in de cache zijn geplaatst. Zodra de cache is gewist (elke N minuten/uur), worden de nieuwste orders opgehaald door onze API-call en geïmporteerd in het Sendcloud panel.
Het lijkt misschien alsof je orders met vertraging in het Sendcloud panel worden geïmporteerd. Deze vertraging heeft mogelijk te maken met de cache. Dit is iets waar Sendcloud helaas geen controle over heeft. Het beste wat we kunnen doen is aan WooCommerce doorgeven dat we geen data uit de cache willen. Als API-servers reageren met verouderde gegevens, ziet je ook verouderde gegevens in het Sendcloud panel.
Mogelijke oorzaken:
-
Cache aan de kant van de hosting partij; deze cachet alles voor gelijkwaardige requests
-
Geïnstalleerde cache plugins
-
Ineffectieve cache strategie geïnstalleerd door webshop developers
Troubleshoot
Om te achterhalen of de vertraging bij het importeren van je orders te maken heeft met de cache, neem je de onderstaande stappen door:
- Zoek de requests die Sendcloud stuurt in je server log; deze zou er zo uit moeten zien:
GET
https://woocomm.shop.nl/wc-api/v2/orders?page=1
- Kopieer de URL
- Indien je de request logs niet kunt vinden kun je de API gebruiken (dit is voor ervaren gebruikers en developers)
- Maak een request vanuit je browser of een REST api (bijvoorbeeld: Postman, Insomnia)
- Check de response data
- Wacht totdat er nieuwe orders verschijnen of creëer een testorder
- Maak dezelfde request vanuit dezelfde browser of dezelfde Postman sessie
- Check nogmaals de response data
- Als de nieuwe batch met data hetzelfde is als de vorige en deze bevat niet de laatste (test)order, betekent dit dat er een cache probleem is
Oplossing
Oplossing 1: Cache ongeldig maken voor nieuwe orders
Wanneer er nieuwe orders worden geplaatst zou WooCommerce automatisch de cache ongeldig moeten verklaren/legen.
De volgende keer dat Sendcloud orders ophaalt, worden deze rechtstreeks uit de database gehaald in plaats van de cache.
Oplossing 2: Cache-control HTTP header
Sendcloud stuurt dan HTTP header Cache-Control mee in iedere request die er wordt gedaan om nieuwe orders op te halen. Wanneer de WooCommerce API server deze header in de request ziet, zou deze geen cache moeten gebruiken of deze in ieder geval ongeldig verklaren. Hierdoor kunnen alle nieuwe orders worden opgehaald.
Voor meer informatie kun je dit document doornemen.
Als de oplossingen in dit artikel de vertraging niet oplossen, neem dan contact op met Customer Support.
Gerelateerde artikelen: