Come migliorare la proporzione della cache del tuo sito web?
Questo tutorial riguarda i seguenti argomenti:
Cos’è la proporzione della cache?
Quando si tratta della velocità di caricamento del tuo sito web, uno dei fattori più critici da considerare è quante delle tue richieste vengono servite dalla cache. Le richieste memorizzate nella cache sono molto più veloci di quelle che si basano sulla potenza di elaborazione del server per essere elaborate, il che significa che più richieste vengono servite dalla cache, più velocemente carica il tuo sito web.
I server SiteGround hanno un sistema di caching integrato (NGINX Direct Delivery, servizio Cache Dinamica) e controllano sempre se il contenuto richiesto è presente nei pool di cache prima di inviarlo tramite proxy più avanti. Se il contenuto viene trovato nella cache, viene immediatamente servito al client (evitando l’elaborazione PHP, le query MySQL, ecc.). Questo è chiamato cache HIT. D’altra parte, se il contenuto non viene trovato nella cache, il server web deve recuperarlo dal server di origine e memorizzarlo nella cache per richieste future. Questo è chiamato cache MISS.
La proporzione della cache rappresenta la percentuale di richieste servite dalla cache senza la necessità di accedere al server di origine. Una proporzione di cache più elevata indica che vengono servite più richieste dalla cache, riducendo il carico sul server di origine e migliorando le prestazioni complessive del sito web.
Ad esempio, se ci sono 100 righe nel file di registro degli accessi del tuo sito web e 80 di esse contengono “HIT” e 20 di esse contengono “MISS”, la proporzione della cache sarebbe dell’80%.
Misurando la percentuale di HIT, puoi determinare l’efficacia della tua strategia di caching e se è necessario modificare le impostazioni del tuo sito web per migliorarne le prestazioni. Una proporzione di cache elevata indica che la tua strategia di memorizzazione nella cache funziona bene e che stai effettivamente sfruttando le funzionalità di velocità del sito fornite da SiteGround. Una proporzione di cache bassa, d’altra parte, suggerisce che la tua strategia di caching potrebbe non essere efficace e potrebbe essere necessario prendere in considerazione l’implementazione di altre tecniche di ottimizzazione.
Per i siti iscritti ai nostri report mensili sulle prestazioni, misuriamo la proporzione della cache e la segnaliamo al nostro cliente. La nostra raccomandazione è di mirare a un risultato superiore al 60%.
Come aumentare la proporzione della cache del tuo sito web?
1. Tieni d’occhio gli headers Cache-Control personalizzati impostati nei tuoi file .htaccess
Avere regole .htaccess per regolare gli headers di risposta è uno dei modi più comuni per controllare l’efficienza della memorizzazione nella cache. Purtroppo, abbiamo notato molte intestazioni Cache-Control generiche incorporate nei file .htaccess che non sono specifiche della posizione e di conseguenza influiscono negativamente sulla proporzione HIT della cache e sulle prestazioni
Esempio:
Header set Cache-Control "no-cache,no-store"
Regola generale #1: Assicurati che l’header set Cache-Control in .htaccess sia utilizzato solo per pagine, posizioni o file sul tuo sito web che contengono dati sensibili dei clienti e non devono essere memorizzati nella cache, non per l’intero sito. Esempio:
# add Cache-Control header to single contact.php file
<Files contact.php>
Header set Cache-Control "no-cache,no-store"
</Files>
2. Ispeziona con precisione le direttive Expires e max-age
Un altro approccio ben noto per controllare l’efficienza dei server di memorizzazione nella cache consiste nell’includere le intestazioni Expires con una data e un’ora che non siano future o un header Cache-Control con la direttiva max-age impostata su zero o un valore numerico negativo.
Esempio #1:
# Expires headers (for better cache control)
<IfModule mod_expires.c>
...
# Your document html
ExpiresByType text/html "access plus 0 seconds"
...
</IfModule>
Questa definizione nel file .htaccess significa che la cache dovrebbe scadere immediatamente per il tipo di contenuto text/html (la maggior parte delle pagine web viene servita in questo formato) e la richiesta dovrebbe essere servita dal back-end e non dalla cache.
Esempio #2:
Header set Cache-Control "max-age=0"
Avere un’intestazione Cache-Control con max-age=0 o -1 (o altro numero negativo) significa anche qui che la richiesta deve essere elaborata dal back-end e non dalla cache.
Regola generale #2: Assicurati che gli header Expires e max-age cache-control siano utilizzati solo per i tipi di contenuto e le posizioni del tuo sito web che non devono essere memorizzati nella cache.
3. Evita l’uso dell’header Set-Cookie
Un altro approccio per aggirare la memorizzazione nella cache consiste nell’avere un header Set-Cookie. Comunemente l’header Set-Cookie viene utilizzato con la variabile “PHPSESID”, un cookie di sessione utilizzato per identificare la sessione di un utente su un sito web. Tuttavia, la generazione e l’utilizzo di un cookie di sessione su pagine che non contengono informazioni sensibili potrebbe essere indicazione di un plugin o un tema non molto ben progettato. Di conseguenza, la presenza dell’header Set-Cookie evita che le risposte vengano memorizzate nella cache e quindi ogni volta viene effettuata un’esecuzione PHP.
Esempio di codice per l’avvio di una sessione PHP – che dovrebbero darti l’ID della sessione corrente:
<?php
session_start();
Quando questo è il caso noterai la seguente riga negli header di risposta HTTP del tuo sito web:
set-cookie: PHPSESSID=5eff6b1bc4f7ab78758e112be82f7b9e
Regola generale #3: Nel caso in cui il tuo sito web utilizzi l’header Set-Cookie e il “PHPSESID” più comunemente utilizzato, assicurati che venga generato solo per identificare la sessione di un utente su un sito web e non su tutte le pagine e i post.
4. Evita di utilizzare l’header Vary: User-Agent
Questa configurazione non disabilita completamente la memorizzazione nella cache come descritto negli esempi precedenti, ma riduce notevolmente la proporzione della cache. In effetti, il problema è che comunemente i visitatori del tuo sito web utilizzeranno User-Agent diversi (browser diversi, con versioni diverse), il che praticamente renderà ogni prima visita non memorizzata nella cache. È anche un caso comune che si verifica quando un plugin WP aggiunge tale intestazione. In questi casi, le risposte vengono memorizzate nella cache ma ci sono diverse voci di cache per i diversi User-Agent, rendendo la cache drasticamente meno efficace.
Ecco un esempio di header Vary nel file .htaccess:
Header set Vary User-Agent
Gli header HTTP possono essere gestite anche attraverso le applicazioni dell’account di hosting. Gli header Vary, ad esempio, potrebbero essere configurati tramite PHP nel seguente modo:
?php
header("Vary: User-Agent");
o su un sito web WordPress (dal file functions.php)
function add_vary_header ($headers)
{
$headers['Vary'] = 'User-Agent';
Return $headers;
}
add_filter('wp_headers', 'add_vary_header');
Regola generale #4: Cerca di evitare l’uso dell’header User-Agent Vary se non è assolutamente necessario o richiesto dagli sviluppatori del tema. Questo ti aiuterà a migliorare molto la proporzione della cache e le prestazioni del tuo sito.
Se desideri che i nostri tecnici di supporto indaghino se la tua attuale proporzione della cache del sito può essere migliorata, puoi inviarci un ticket tramite il Centro Assistenza > Altro > Ottimizzazione della proporzione della cache.