Categorie
Tips Web development WordPress

Cache SiteGround: come disabilitarla per specifici indirizzi

La cache di SiteGround è sicuramente uno dei motivi che ha decretato il successo di questo hosting service provider.

Questo meccanismo infatti permette di velocizzare in maniera rilevante la risposta da parte del server ad una richiesta eseguita dall’utente.

In questo articolo analizzerò il funzionamento del meccanismo di caching di SiteGround.

Inoltre, ti mostrerò due metodi per disabilitare questo meccanismo in maniera selettiva, in base all’indirizzo della pagina richiesta.

Cache SiteGround: il funzionamento

Il funzionamento della cache di SiteGround è schematizzato nell’immagine sottostante.

siteground cache

Dal nodo Web Server in poi il funzionamento è analogo a qualunque installazione WordPress standard.

SiteGround Dynamic Caching è un sistema di caching basato su nginx che permette di salvare e servire contenuti molto più velocemente di quanto farebbe WordPress.

I casi in cui la cache viene ignorata

Il sistema di caching può venir ignorato in funzione di tre fattori:

  1. Cookies
  2. URL richiesto
  3. Headers HTTP

Nel seguito ogni fattore verrà analizzato nel dettaglio.

Cookies

Se almeno uno dei seguenti cookies è presente, la richiesta non viene servita dalla cache di SiteGround.

  • wordpress_logged_in_
  • yith_wcwl_products
  • wp-postpass_
  • edd_items_in_cart=1
  • it_exchange_session_
  • wp_woocommerce_session
  • woocommerce_cart_hash
  • woocommerce_items_in_cart=1
  • Drupal.visitor.name
  • drupalSGCacheBypass=1
  • jSGCacheBypass=1
  • wpSGCacheBypass=1

URL richiesto

Se l’URL richiesto ha un match parziale o totale con uno dei seguenti indirizzi, tale richiesta non verrà servita dalla cache di SiteGround.

  • wp-login
  • preview=true
  • cart
  • my-account
  • checkout
  • addons
  • add-to-cart
  • wp-cron.php
  • xmlrpc.php
  • contact
  • task=registration
  • task=register
  • view=registration|administrator|remind|login
  • admin/content/backup_migrate/export
  • status.php
  • update.php
  • install.php
  • user
  • info
  • flag
  • ajax
  • aha

Headers HTTP

Impostando uno dei seguenti headers nella risposta della propria applicazione, si comunica a SiteGround Dynamic Caching come operare la cache contestualmente alla richiesta contenente gli headers.

  • cache-control: no-cache – impostando questo header la richiesta non verrà salvata mai nella cache
  • cache-control: max-age – impostando questo header la richiesta verrà salvata nella cache per X secondi

Ad esempio, se si volesse fare in modo che una richiesta servita da PHP venisse salvata in cache per un’ora, si potrebbe utilizzare il seguente codice:

<?php header("Cache-Control: max-age=3600"); ?>

Disabilitare la cache con SiteGround Optimizer

SiteGround ha sviluppato il plugin SiteGround Optimizer, me gestire in maniera facilitata la gestione della cache.

siteground optimizer

Questo plugin permette, tra le altre cose, di impostare dei URL per i quali la cache venga ignorata.

Utilizzando il carattere ‘*’, è possibile escludere intere sezioni di un sito.

Ad esempio, impostando l’esclusione per l’indirizzo

/category/*

si escluderebbero dalle cache le pagine disponibili ai seguenti indirizzi

/category/un-indirizzo
/category/2021/07/19/qualcosa

Disabilitare la cache con .htaccess

E’ possibile escludere una o più pagine del sito dalla cache anche utilizzando il file .htaccess disponibile nella root del sito.

Inserendo il seguente codice

<If "%{THE_REQUEST} =~ m#/category/.*#">
  <IfModule mod_headers.c>
        Header set Cache-Control "private"
  </IfModule>
</If>

si escludono tutte le pagine che hanno un indirizzo che iniziano con /category/.

Dopo aver salvato le modifiche al file .htaccess, devi rimuovere la cache dinamica, seguendo il percorso Site Tools -> Speed -> Caching -> Dynamic Cache -> Flush Cache.

Conclusioni

In questo articolo hai visto è strutturato il sistema di caching di SiteGround.

Inoltre, hai appreso diversi modi per escludere dal sistema di caching uno o più indirizzi di un sito ospitato su SiteGround.

Le informazioni contenute in questo articolo provengono dalla guida di SiteGround per la configurazione della cache.