Sito visualizza contenuti del passato (cache stale)

Quando il sito mostra versioni vecchie

Una situazione frustrante: hai pubblicato un'articolo, modificato un prezzo, cambiato un'immagine, ma gli utenti continuano a vedere la versione precedente. La causa è quasi sempre cache stale in uno o più layer della catena di delivery del sito. Identificare quale layer cachea richiede una diagnosi sistematica.

Layer di cache tipici

Una richiesta web moderna passa attraverso: cache del browser, cache del DNS, cache CDN (Cloudflare), cache reverse proxy (Varnish, Nginx), cache opcode PHP (OPcache), cache applicativa (Redis, Memcached), cache plugin (W3 Total Cache, WP Rocket). Ognuno può servire una versione vecchia.

Test in incognito

Apri il sito in finestra incognita o "modalità privata". Se vedi il contenuto aggiornato, la cache è nel browser (cookie, localStorage, ServiceWorker). Chiedi all'utente di fare Ctrl+Shift+R per hard refresh. Se anche in incognito vedi la versione vecchia, la cache è lato server o CDN.

Purge Cloudflare

Cloudflare è spesso il principale colpevole. Cache è impostata per ore o giorni in base ai header del tuo server. Esegui purge: Caching > Configuration > Purge Everything (purge totale) o Purge by URL (selettivo). In emergenza usa "Development Mode" per 3 ore di bypass cache totale.

Cache del CMS

WordPress con plugin di caching: WP Rocket > Pulizia Cache, W3 Total Cache > Performance > Purge All. Configura purge automatica su salvataggio di articoli (già di default in molti plugin). Per WooCommerce, considera caching escluso su pagine carrello/checkout per evitare problemi con prezzi/stock.

OPcache di PHP

PHP OPcache mantiene in memoria il bytecode dei file PHP. Dopo modifiche al codice, OPcache può servire ancora la versione vecchia. Imposta opcache.revalidate_freq=2 in php.ini (controllo ogni 2 secondi) o restart PHP-FPM: systemctl reload php8.2-fpm.

Cache lato browser

Headers come Cache-Control: max-age=31536000 dicono al browser di tenere in cache il file per un'anno. Per asset statici (CSS, JS) è ottimo per performance, ma se modifichi un file gli utenti vedono ancora la versione vecchia. Soluzione: cache busting con query string versionata (style.css?v=1.2.3) o hash nel filename.

Cache DNS locale

Più raro: se hai cambiato IP server, il DNS locale dell'utente può ancora puntare al vecchio. ipconfig /flushdns su Windows, sudo dscacheutil -flushcache su macOS. La propagazione è più veloce se in passato hai mantenuto TTL basso (300 secondi).

Cron per purge automatico

Per siti dinamici (e-commerce con prezzi che cambiano, news), configura cron che purga cache regolarmente. Esempio per Cloudflare API: curl -X POST https://api.cloudflare.com/client/v4/zones/ZONE_ID/purge_cache -H "Authorization: Bearer TOKEN" -d '{"purge_everything":true}'. Combina con webhook su salvataggio articolo per purge immediato.

Hai bisogno di aiuto?

Se il tuo sito ha problemi di accesso, il team di G Tech Group può aiutarti. Contattaci tramite il modulo di contatto.

Hai trovato utile quest'articolo?