Risolvere il Bug del Carrello Vuoto in Presenza di Page Cache su WooCommerce

Gestire un e-commerce richiede prestazioni elevate e tempi di caricamento ridotti. Tuttavia, una configurazione aggressiva dei sistemi di memorizzazione può creare gravi disservizi.

Uno dei problemi più critici riguarda gli utenti che aggiungono prodotti senza vederli comparire a carrello. Questo fenomeno di carrello vuoto in presenza di page cache danneggia direttamente il tasso di conversione.

In questa guida analizziamo i motivi tecnici del conflitto. Vedremo come gestire i cookie di sessione e sincronizzare l’add-to-cart asincrono.

Perché si verifica il conflitto tra cache e carrello WooCommerce

Il ruolo fondamentale dei cookie di sessione

WooCommerce riconosce il carrello di un visitatore anonimo tramite cookie specifici. Il cookie principale è woocommerce_items_in_cart.

Quando questo cookie ha valore maggiore di zero, il server sa che il carrello contiene articoli. Viene inoltre generato il cookie di sessione wp_woocommerce_session_* per tracciare i dettagli.

I plugin di cache mal configurati ignorano questi cookie. Restituiscono all’utente una copia statica generata per gli utenti vuoti.

Come la Page Cache ignora le sessioni dinamiche

I sistemi di page cache salvano l’HTML pre-renderizzato della pagina. Questo riduce drasticamente l’elaborazione del server web.

Se il server invia HTML statico senza verificare i cookie, il carrello sembra azzerato. I dati sono presenti sul database ma non compaiono a video.

L’utente aggiorna la pagina ma continua a vedere il carrello vuoto. Si crea così un’esperienza frustrante che porta all’abbandono immediato.

Diagnosi del carrello vuoto in presenza di page cache

Riconoscere i sintomi tramite la console sviluppatore

Per identificare l’anomalia apri la console sviluppatore di Chrome o Firefox. Vai alla scheda Rete (Network) ed esamina le intestazioni HTTP.

Cerca l’header di risposta x-cache, cf-cache-status oppure x-litespeed-cache. Se il valore restituisce HIT su una pagina dinamica, la cache sta intercettando la richiesta.

Ispeziona poi la scheda Applicazione (Application) e verifica i cookie. Se woocommerce_items_in_cart esiste ma il markup mostra zero elementi, la pagina è statica.

Identificare i conflitti causati dai sistemi CDN

Molti store utilizzano Cloudflare o altre CDN per distribuire contenuti. Alcune regole mal impostate memorizzano l’HTML globale senza eccezioni.

Una regola come ‘Cache Everything’ applicata a tutto il sito genera disastri. Senza la corretta gestione del bypass sui cookie, si verifica l’errore sistematico del carrello vuoto in presenza di page cache.

La CDN deve sempre verificare la presenza di sessioni carrello attive. In caso positivo, la richiesta deve raggiungere il server di origine.

Trucco pratico: Non impostare mai la cache globale sui percorsi dinamici. I cookie di WooCommerce devono bypassare istantaneamente qualsiasi livello di CDN o Varnish.

Gestione dell’Add-to-Cart asincrono e frammenti AJAX

Il comportamento nativo dei Cart Fragments

WooCommerce include una funzionalità nativa basata su script AJAX. Parliamo di wc-cart-fragments, responsabile dell’aggiornamento dell’icona del carrello nell’header.

Questo meccanismo invia una chiamata HTTP a /?wc-ajax=get_refreshed_fragments. La chiamata restituisce i frammenti HTML aggiornati in formato JSON.

Se disattivi questa funzione per velocizzare il sito, devi adottare una logica alternativa. Puoi approfondire le tecniche per disabilitare i cart fragments in WooCommerce senza compromettere l’esperienza utente.

Gestire eventi JavaScript personalizzati

Molti temi moderni utilizzano carrelli laterali o popup ad apertura asincrona. Questi sistemi intercettano l’evento added_to_cart sul selettore del body.

Se il server invia una risposta statica, lo script JavaScript fallisce. Il carrello mini non si apre o mostra dati non aggiornati.

Assicurati che ogni chiamata AJAX verso wc-ajax=* non sia memorizzata in cache. Le risposte JSON devono includere l’header Cache-Control: no-cache, must-revalidate.

Guida passo-passo per risolvere il bug della cache

Step 1: Escludere le pagine canoniche di WooCommerce

Il primo passo consiste nell’escludere le pagine transazionali dalla cache statica. Nessun sistema deve memorizzare queste aree sensibili:

  • Pagina Carrello (/carrello/ o /cart/)
  • Pagina Cassa / Checkout (/cassa/ o /checkout/)
  • Area Account personale (/mio-account/ o /my-account/)
  • Endpoint per il reset della password

Nei plugin come WP Rocket, LiteSpeed Cache o W3 Total Cache inserisci questi percorsi nelle impostazioni avanzate di esclusione.

Step 2: Configurare le regole di cache bypass sui cookie

La configurazione più robusta agisce sui cookie generati dal plugin e-commerce. Configura il tuo server Nginx, LiteSpeed o Varnish con criteri restrittivi.

Imposta il bypass automatico per qualsiasi richiesta che contenga:

  • woocommerce_items_in_cart
  • wp_woocommerce_session_
  • woocommerce_cart_hash

In questo modo un visitatore naviga sulle pagine statiche ultra-veloci. Non appena inserisce un prodotto, il server passa all’elaborazione dinamica.

Step 3: Testare l’aggiunta al carrello in sessione anonima

Apri una nuova finestra di navigazione in incognito. Visita una pagina prodotto ed esegui un test reale.

Aggiungi l’articolo al carrello e naviga verso la home page. Verifica che il contatore del carrello mantenga il valore corretto.

Questo passaggio permette di riprodurre il carrello vuoto in presenza di page cache in ambiente pulito. Se il carrello si svuota cambiando pagina, le regole sui cookie non stanno funzionando.

Ottimizzazioni per Nginx, LiteSpeed e Cloudflare

Regola di bypass su server web Nginx

Se utilizzi Nginx come reverse proxy o web server principale, controlla il file nginx.conf. Aggiungi le condizioni per il controllo dei cookie:

if ($http_cookie ~* "wp_woocommerce_session_|woocommerce_items_in_cart") { set $skip_cache 1; }

Questo frammento di codice imposta la variabile di skip. La cache FastCGI o proxy ignorerà completamente la memoria statica.

Configurazione per Cloudflare Page Rules o Cache Rules

Sui piani Cloudflare Business ed Enterprise puoi usare la funzione ‘Bypass Cache on Cookie’. Nei piani gratuiti o Pro crea una ‘Cache Rule’ mirata.

Applica la memorizzazione solo ai file statici (immagini, CSS, JS). Evita categoricamente la cache delle richieste HTML complete a meno che tu non gestisca i worker.

Domande Frequenti (FAQ)

Perché il carrello si svuota quando cambio pagina?

Il carrello si svuota quando la pagina successiva viene servita dalla cache statica generata per gli utenti anonimi. I tuoi cookie esistono, ma il server ignora il loro stato e non carica la sessione corretta.

Posso usare Cloudflare con WooCommerce senza rompere il carrello?

Sì, puoi usare Cloudflare senza problemi. È fondamentale limitare la cache ai soli asset statici oppure configurare un Cloudflare Worker per gestire il bypass sui cookie di WooCommerce.

Come verificare la corretta risoluzione del carrello vuoto in presenza di page cache?

Usa la navigazione anonima e aggiungi un articolo. Ispeziona gli header HTTP navigando tra le categorie. Se trovi BYPASS o MISS quando il carrello contiene articoli, il problema è risolto.

Articoli simili