Checkout WooCommerce Lento? Perché perdi vendite (e come risolverlo lato server)
Il sintomo è classico: Hai un sito che vola in home page, le schede prodotto si aprono in un lampo, ma quando il cliente (finalmente!) clicca su “Paga”, la rotellina gira. E gira. Passano 5, 8, 10 secondi. In quel lasso di tempo, il cliente non sta aspettando: sta ripensando al suo acquisto.
Il danno economico è misurabile: il tasso medio di abbandono del carrello sfiora il 70%. Se il tuo checkout è lento, stai regalando i tuoi clienti ad Amazon, che ha fatto della velocità di acquisto (1-Click) la sua arma letale.
Se hai cercato soluzioni online, probabilmente ti hanno detto di “ottimizzare le immagini” o “attivare la cache”. Non ti dirò di ottimizzare le immagini. Quelle non c’entrano nulla con il checkout. Qui non stiamo parlando di peso della pagina, stiamo parlando di capacità di calcolo del server.

Perché la Cache qui non ti salverà (Il problema Tecnico)
Per capire il problema, dobbiamo distinguere due concetti fondamentali:
- Pagine Statiche (Cached): sono come volantini stampati. Il server le genera una volta e le serve identiche a tutti. (Home, Chi Siamo, Articoli).
- Pagine Dinamiche (Uncacheable): sono come conversazioni private. Il server deve generarle al momento, specificamente per quell’utente.
Il Checkout, il Carrello e la pagina “Il mio Account” sono Pagine Dinamiche. WooCommerce deve impedire che queste pagine vengano messe in cache (Page Cache), altrimenti un cliente potrebbe vedere i dati di spedizione di un altro utente (un disastro di privacy!). Poiché la cache è disabilitata per definizione, il ruolo del processore del server (CPU) diventa vitale. Ogni volta che qualcuno clicca “Paga”, il server deve “ragionare” da zero. Se il server è debole o mal configurato, il checkout si blocca.
I 3 Colli di Bottiglia del Checkout (Diagnosi)
Se il tuo checkout è lento, il colpevole è quasi sempre uno di questi tre.
1. Il problema “Cart Fragments” (AJAX)
Hai presente quando aggiungi un prodotto al carrello e l’icona in alto a destra si aggiorna senza ricaricare la pagina? Quello è merito di uno script chiamato WooCommerce Cart Fragments.
Cos’è: è una chiamata continua (AJAX) che WooCommerce fa al server per chiedere: “Ehi, è cambiato qualcosa nel carrello?”.
Il sintomo: spesso questo script è mal ottimizzato. Molti temi fatti male caricano questo script ovunque, anche negli articoli del blog dove non serve a nulla. È lo stesso principio per cui Elementor risulta lento se carica librerie inutilizzate su ogni pagina. Questo significa che un semplice lettore sta involontariamente rallentando il server.
Soluzione: non basta un plugin a caso. Serve un tecnico per capire dove disabilitarlo chirurgicamente (es. sulle pagine non e-commerce) alleggerendo il carico senza rompere le funzionalità del carrello.
2. Database Intasato (Transients e Sessioni)
Qui torniamo a un concetto chiave: la pulizia.
Entità: Tabella wp_options. Una gestione errata di questi dati è la causa primaria di un backend WordPress lento e poco reattivo.
Spiegazione: WooCommerce è intelligente, ma disordinato. Salva le sessioni di ogni visitatore (cosa ha nel carrello, dove si trova) nel database. Il problema nasce quando hai Transients & Session Data accumulati da anni. Se hai 10.000 sessioni di carrelli abbandonati nel DB, ogni volta che un cliente prova a pagare, la query di checkout deve “scavare nella spazzatura” per trovare i dati giusti. Un database pulito è un checkout veloce.
3. Plugin di Spedizione e Pagamento (API Esterne)
A volte il tuo sito è veloce, ma il checkout è lento perché sta aspettando una risposta da fuori. Questo è il concetto di Chiamata API Sincrona.
Esempio: Hai un plugin per il calcolo delle spedizioni in tempo reale (es. BRT, DHL) o un gateway di pagamento. Hai presente quando PayPal ci mette 5 secondi a caricare il popup? Quello blocca tutto il tuo sito se non è configurato in modo asincrono. Un errore in questa fase può mandare il sito in crash, rendendo necessario un protocollo di emergenza per siti rotti.
Quando il cliente inserisce l’indirizzo, il tuo sito “chiama” il server esterno. Se quel server ci mette 4 secondi a rispondere, il tuo checkout sarà fermo per 4 secondi. L’utente incolpa te, ma la colpa è della chiamata esterna.

Come risolvere davvero (Soluzioni Dev)
Dimentica i plugin di ottimizzazione generici. Qui serve intervenire sull’infrastruttura.
Object Cache (Redis) è l’unica cache che serve
Abbiamo detto che la “Page Cache” non funziona sul checkout. Ma c’è un’altra cache che ti salva la vita: la Object Cache (Redis). Mentre la Page Cache salva l’HTML (la foto della pagina), Redis memorizza i risultati delle interrogazioni al database. Invece di chiedere al database 50 volte “Quanto costa questo prodotto e quante tasse si applicano?”, WooCommerce lo chiede a Redis, che risponde in millisecondi dalla RAM. Per un e-commerce, Redis è obbligatorio.
Aumentare i PHP Workers (Non solo la RAM)
Spesso l’hosting ti dice “Aumenta la RAM”. Ma la RAM non basta se mancano i “braccianti”. Spiegazione per “non tecnici”: I PHP Workers sono come le corsie aperte al supermercato. Ogni processo di checkout occupa un Worker (una cassiera). Se il tuo hosting low cost ti dà solo 2 PHP Workers e arrivano 3 clienti contemporaneamente a pagare, il terzo deve aspettare che uno dei primi due finisca. Per un e-commerce che vuole vendere, servono risorse dedicate e un numero adeguato di PHP Workers per gestire i picchi di traffico. Senza risorse adeguate, il sito potrebbe persino mostrare avvisi di sicurezza o essere segnalato come sito ingannevole a causa di timeout continui.
Pulizia dei Dati Orfani
Non lasciare che il database diventi una discarica. È fondamentale programmare (via cron job o plugin di manutenzione) la pulizia automatica delle sessioni scadute e dei transient di WooCommerce.

Come analizzare il colpevole
Non andare a tentativi. Usa i dati. Cito di nuovo Query Monitor (di cui abbiamo parlato nell’articolo sul Backend lento). Aprendo questo strumento nella pagina di checkout, potrai vedere:
- Query Lente: Se una query al database impiega più di 0.5 secondi, il DB è il problema.
- Chiamate HTTP: Puoi vedere se il plugin di PayPal o del Corriere sta bloccando il caricamento con chiamate esterne lente.

Conclusione: Non mettere il lucchetto alla cassa
Avere un checkout lento è come avere un negozio bellissimo, commessi gentili, prodotti fantastici, e poi mettere un lucchetto arrugginito alla cassa quando il cliente tira fuori il portafoglio. È un sabotaggio del tuo stesso lavoro. Spesso l’imprenditore non agisce perché teme i prezzi della consulenza SEO, senza capire che il costo del ‘non fare’ è infinitamente superiore. Se il tuo e-commerce soffre di questi rallentamenti, non ti serve un nuovo tema. Ti serve un’analisi dei PHP Workers e della salute del Database.
Non lasciare che un timeout server decida il destino del tuo fatturato. Se vuoi trasformare il tuo carrello in una macchina da conversioni, prenota una Call di Sblocco: analizzeremo i tuoi PHP Workers e la salute del tuo database in tempo reale.

4 Commenti