Introduzione
Il modulo mod_expires in Apache viene utilizzato per controllare l'impostazione dell'intestazione HTTP Expires e la direttiva max-age dell'intestazione HTTP Cache-Control nelle risposte del server. Queste intestazioni determinano per quanto tempo un client (browser o proxy) memorizzerà nella cache le risorse. L'ottimizzazione di queste impostazioni può ridurre in modo significativo il carico del server e migliorare l'esperienza lato client riducendo i tempi di caricamento.
Impostazioni mod_expires ottimizzate
Ecco una sezione mod_expires ottimizzata per un server di produzione, che copre una varietà di tipi di file:
## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
# Default expiration: 1 hour after request
ExpiresDefault "now plus 1 hour"
# HTML components
ExpiresByType text/html "access plus 0 seconds"
# Data interchange
ExpiresByType application/json "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType application/rss+xml "access plus 1 hour"
ExpiresByType application/atom+xml "access plus 1 hour"
# Favicon (can be cached for a long time)
ExpiresByType image/x-icon "access plus 1 year"
# Media: images, video, audio
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/webp "access plus 1 month"
ExpiresByType video/ogg "access plus 1 month"
ExpiresByType audio/ogg "access plus 1 month"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/webm "access plus 1 month"
# CSS and JavaScript
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType application/x-javascript "access plus 1 year"
ExpiresByType text/javascript "access plus 1 year"
# Webfonts
ExpiresByType font/otf "access plus 1 month"
ExpiresByType font/ttf "access plus 1 month"
ExpiresByType font/woff "access plus 1 month"
ExpiresByType font/woff2 "access plus 1 month"
ExpiresByType application/font-woff "access plus 1 month"
ExpiresByType application/font-woff2 "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
# Other
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType image/vnd.microsoft.icon "access plus 1 year"
</IfModule>
Spiegazione delle impostazioni
- ExpiresDefault : questo è il tempo di memorizzazione nella cache predefinito per le risorse che non corrispondono ad altre regole. È impostato su 1 ora, ma puoi modificarlo in base alla frequenza con cui cambiano i contenuti.
- HTML e scambio di dati : questi tipi di contenuti solitamente cambiano frequentemente e sono destinati a scadere immediatamente (0 secondi) o dopo un breve periodo (1 ora per i feed).
- Favicon : cambiano raramente e possono essere memorizzate nella cache per un periodo più lungo (1 anno).
- File multimediali : immagini, video e audio in genere non vengono aggiornati frequentemente. La scadenza è prevista tra 1 mese, ma è possibile aumentarla se queste risorse cambiano raramente.
- CSS e JavaScript : poiché questi file potrebbero cambiare con gli aggiornamenti del sito Web, ma non con la stessa frequenza dei contenuti HTML, sono impostati per un periodo di cache più lungo (1 anno). Garantire il controllo delle versioni di questi file per evitare problemi di memorizzazione nella cache quando vengono aggiornati.
- Caratteri Web : i caratteri generalmente non cambiano una volta impostati, quindi è appropriato un periodo di memorizzazione nella cache più lungo (1 mese).
- Altri tipi : per risorse come PDF e tipi di immagini specifici, regola il tempo di memorizzazione nella cache in base alla frequenza con cui queste risorse vengono aggiornate.
Note aggiuntive
- Modifica queste impostazioni in base alla frequenza specifica di aggiornamento dei contenuti.
- Assicurati di avere una strategia di controllo delle versioni per risorse come CSS e JavaScript per evitare problemi di memorizzazione nella cache quando questi file vengono aggiornati.
- Tieni presente che la memorizzazione nella cache aggressiva potrebbe causare problemi quando il contenuto viene aggiornato sul server ma è ancora memorizzato nella cache del browser del client.
- Monitorare e adattare regolarmente queste impostazioni in base alle esigenze specifiche e al feedback dell'ambiente di produzione.