Configurazione del caching e della compressione dei file statici in Nginx
Come velocizzare il tuo sito web e ridurre il carico del server.
Una corretta configurazione del caching e della compressione per i file statici (immagini, CSS, JavaScript, font, ecc.) è uno dei metodi più efficaci per migliorare la velocità di caricamento del sito, ridurre la larghezza di banda consumata e alleggerire il carico complessivo sul server.
In questa guida tratteremo due funzionalità fondamentali di Nginx:
- La direttiva
expiresper il controllo della cache del browser - La compressione GZIP per i file di testo
1. Configurare la cache del browser con expires
La direttiva expires indica al browser per quanto tempo può conservare un file nella cache locale prima di interrogare nuovamente il server.
Apri il file di configurazione Nginx del tuo sito (di solito in /etc/nginx/conf.d/vhost.conf o simile) e aggiungi il seguente blocco location per i file statici:
location ~* \.(jpg|jpeg|png|gif|svg|webp|ico|css|js|woff|woff2|ttf|eot|mp4|webm|ogg|mp3|pdf|zip)$ {
expires 30d; # Cache per 30 giorni
add_header Cache-Control "public";
access_log off; # Disabilita il logging per i file statici per risparmiare risorse
}
Valori expires consigliati:
- Immagini, font e icone:
30do1y - CSS e JavaScript:
7d—30d(usa periodi più brevi per i file aggiornati di frequente) - File modificati raramente:
1y
2. Abilitare la compressione GZIP
La compressione GZIP può ridurre drasticamente le dimensioni dei file di testo (HTML, CSS, JS, SVG, ecc.), migliorando la velocità di caricamento delle pagine.
Aggiungi la configurazione seguente all'interno del tuo blocco server {}:
server {
...
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6; # Livello di compressione (1–9)
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_min_length 256;
gzip_types
text/plain
text/css
text/xml
text/javascript
application/javascript
application/json
application/xml
application/rss+xml
image/svg+xml;
}
I nostri prodotti e servizi
3. Applicare le impostazioni a tutti i siti (template)
Per applicare automaticamente queste ottimizzazioni a tutti i virtual host, crea un file template:
sudo nano /usr/local/ispmgr/etc/server.templ
Aggiungici il seguente contenuto:
location ~* \.(jpg|jpeg|png|gif|svg|webp|ico|css|js|woff|woff2|ttf|eot)$ {
expires 30d;
add_header Cache-Control "public";
access_log off;
}
Dopo aver salvato, riavvia Nginx:
sudo systemctl restart nginx
Consigli utili
- Testa sempre la configurazione dopo ogni modifica:
sudo nginx -t - Combina
expirescon l'headerCache-Control: publicper ottenere le prestazioni migliori. - Evita di impostare periodi di cache molto lunghi (ad esempio, oltre un anno) su file aggiornati di frequente come CSS o JavaScript — altrimenti gli utenti potrebbero visualizzare versioni obsolete per molto tempo.
- Su VPS o server dedicati puoi spingere ulteriormente l'ottimizzazione con FastCGI cache, proxy_cache o regole avanzate di cache del browser.
Aiuto
Hai domande o ti serve una mano? Scrivici tramite il sistema di ticket — siamo sempre qui per aiutarti!