Base di conoscenze

1 000 FAQ, 500 tutorial e video esplicativi. Qui ci sono delle soluzioni!

Utilizzare gli header per ottimizzare la memorizzazione nella cache delle risorse

Questa guida spiega come ottimizzare la memorizzazione nella cache delle risorse web grazie agli header HTTP.

 

Premessa

  • Una buona strategia di cache consente di migliorare significativamente le prestazioni del tuo sito evitando di ritrasmettere inutilmente file invariati.
  • La memorizzazione nella cache web si basa su due meccanismi complementari:
    1. La durata di validità della cache (tramite l'header Expires) che indica per quanto tempo una risorsa può essere riutilizzata senza contattare il server.
    2. La validazione condizionale (tramite gli header Last-Modified/If-Modified-Since) che consente di verificare se una risorsa è cambiata prima di scaricarla nuovamente.

 

Configurazione della durata della cache con Expires

L'header Expires consente di specificare una durata durante la quale il browser può riutilizzare direttamente le risorse dalla sua cache locale. Ecco come configurarlo nel file .htaccess:

  1. Crea o apri il file .htaccess alla radice del tuo sito (di solito in /web o /sites/domain.xyz).
  2. Aggiungi la configurazione del modulo expires:

    <IfModule mod_expires.c>
  3. Definisci le durate di cache appropriate per ogni tipo di risorsa:

    ExpiresActive On
    ExpiresByType text/html "access plus 1 week"
    ExpiresByType image/jpeg "access plus 1 month"
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 month"

    Queste direttive significano che:

    • Le pagine HTML saranno memorizzate nella cache per una settimana.
    • Le immagini JPEG, i file CSS e JavaScript saranno conservati per un mese.

    Adatta queste durate in base alla frequenza di aggiornamento delle tue risorse.

  4. Chiudi la sezione di configurazione:

    </IfModule>

 

Validazione condizionale con Last-Modified

Anche quando una risorsa è scaduta nella cache, non è sempre necessario scaricarla nuovamente completamente. Il meccanismo di validazione condizionale consente al browser di verificare se la sua versione in cache è ancora aggiornata. Questo processo funziona così:

  1. Il server invia automaticamente un header Last-Modified con ogni risorsa, indicando la data dell'ultima modifica.
    • Apache gestisce questo nativamente per i file statici - nessuna configurazione aggiuntiva è necessaria.
  2. Quando il browser richiede nuovamente la risorsa, invia un header If-Modified-Since contenente la data che ha in cache:

    GET /resource HTTP/1.1
    Host: www.example.com
    If-Modified-Since: Wed, 21 Oct 2015 07:28:00 GMT
  3. Il server confronta questa data con la data reale di modifica del file:
    • Se il file non è cambiato, restituisce semplicemente un codice 304 Non Modificato, risparmiando così banda passante.
    • Se il file è stato modificato, restituisce la nuova versione con un codice 200 OK.

Questa FAQ è stata utile?