Obbietivo: Se verifichi un ritardo nell'importazione degli ordini di WooCommerce in Sendcloud, il problema potrebbe essere legato alla cache. In questo articolo ti spieghiamo come risolvere questo problema.
Nota: le soluzioni proposte in questo articolo richiedono alcune conoscenze di sviluppo. Nel caso in cui non abbiate le competenze necessarie, consigliamo di contattare il proprio sviluppatore web. La correzione di questo problema deve avvenire nel proprio ambiente (non in Sendcloud), pertanto possiamo solo fornire una raccomandazione su come risolvere il problema.
Perché c'è un ritardo nell'importazione dei miei ordini in Sendcloud?
I ritardi nell'importazione degli ordini possono essere causati da diversi motivi, ma in questo articolo parleremo dei ritardi degli ordini legati alla cache. Per progettazione, è impossibile recuperare tutti gli ordini in una volta sola. Per questo motivo, Sendcloud utilizza la paginazione e la cache.
Che cos'è la paginazione?
La paginazione è una funzione che divide tutti gli ordini in gruppi più piccoli e recupera i risultati pagina per pagina. Sendcloud deve solo specificare il numero di pagina richiesto nella nostra richiesta API.
Che cos'è la cache?
La cache aiuta i sistemi di negozio a essere più produttivi ed efficienti. Invece di effettuare pesanti interrogazioni al database e calcoli per ogni richiesta API, si ricevono risposte (ad esempio, ordini) già preparate e memorizzate da precedenti richieste API. A causa della funzionalità di cache, non è sempre possibile recuperare gli ordini più recenti. Questo perché gli ordini più recenti sono presenti nel database, ma non sono ancora stati memorizzati nella cache. Una volta cancellata la cache (ogni N minuti/ore), gli ordini più recenti saranno recuperati dalla nostra chiamata API e importati nel pannello Sendcloud.
Potrebbe sembrare che gli ordini vengano importati con ritardo nel pannello Sendcloud. Questo ritardo è legato ai dati memorizzati nella cache. Purtroppo, la cache è qualcosa che Sendcloud non può controllare. Il meglio che possiamo fare è indicare a WooCommerce che non vogliamo affatto i dati nella cache. Se i server API rispondono con dati non aggiornati, si vedranno dati non aggiornati anche nel pannello di Sendcloud.
Possibili cause principali:
-
Cache sul lato del provider di hosting, che mette in cache tutto per richieste simili
-
Plugin di cache installati
-
Strategia di cache inefficace installata dagli sviluppatori del webshop
Risoluzione dei problemi
Per sapere se i ritardi sono dovuti a un problema di cache, eseguire i passaggi seguenti:
- Trovare le richieste inviate da Sendcloud nei log del server; dovrebbero essere simili a queste:
GET
https://woocomm.shop.nl/wc-api/v2/orders?page=1
- Copia l'URL
- Se non è possibile trovare i log delle richieste, utilizzare l'API (per gli utenti esperti o gli sviluppatori)
- Effettuare una richiesta dal browser o da un client REST (ad esempio. Postman, Insomnia ecc.)
- Controllare i dati di risposta
- Attendere la comparsa di nuovi ordini o creare un ordine di prova.
- Effettuare la stessa richiesta dallo stesso browser o dalla stessa sessione di Postman
- Controllare nuovamente i dati di risposta
- Se il nuovo lotto di dati è uguale al precedente e non include l'ordine più recente (o di prova), significa che c'è un problema di cache.
Soluzioni
Prima soluzione: Invalidare la cache per i nuovi ordini
Quando vengono effettuati nuovi ordini, Woocommerce dovrebbe invalidare/cancellare automaticamente la cache.
La prossima volta che Sendcloud cercherà di recuperare gli ordini, li recupererà direttamente dal database invece che dalla cache.
Seconda soluzione: Cache-control HTTP header
Sendcloud invierà l'intestazione HTTP Cache-Control in ogni richiesta che facciamo per recuperare nuovi ordini. Quando il server API di Woocommerce vede questa intestazione nella nostra richiesta, non dovrebbe utilizzare la cache o almeno invalidarla, e quindi saremo in grado di recuperare tutti gli ultimi ordini.
Per ulteriori informazioni su come farlo, leggere questa documentazione.
Se le soluzioni proposte in questo articolo non risolvono il problema, ti preghiamo di contattare l'Assistenza clienti.
Articoli correlati: