GNU/Linux >> Linux Esercitazione >  >> Linux

Come memorizzare nella cache i file statici su nginx

Questo tutorial spiega come configurare nginx per impostare l'intestazione HTTP Expires e la direttiva max-age dell'intestazione HTTP Cache-Control di file statici (come immagini, file CSS e Javascript) su una data futura in modo che questi file sarà memorizzato nella cache dai browser dei tuoi visitatori. Ciò consente di risparmiare larghezza di banda e rendere il tuo sito web più veloce (se un utente visita il tuo sito per la seconda volta, i file statici verranno recuperati dalla cache del browser).

1 Nota preliminare

Suppongo che tu abbia una configurazione nginx funzionante, ad es. come mostrato in questo tutorial: Installazione di Nginx con PHP 7 e MySQL 5.7 (LEMP) su Ubuntu 16.04 LTS

2 Configurazione di nginx

L'intestazione HTTP Expires può essere impostata con l'aiuto della direttiva require che può essere inserita all'interno di http {}, server {}, posizione {} o un'istruzione if all'interno di un blocco posizione {}. Di solito lo utilizzerai in un blocco di posizione per i tuoi file statici, ad es. come segue:

location ~*  \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 365d;
}

Nell'esempio precedente, tutti i file .jpg, .jpeg, .png, .gif, .ico, .css e .js ottengono un'intestazione Expires con una data di 365 giorni nel futuro dall'ora di accesso del browser. Pertanto, dovresti assicurarti che il blocco posizione {} contenga solo file statici che possono essere memorizzati nella cache dai browser.

Ricarica nginx dopo le modifiche:

/etc/init.d/nginx reload

È possibile utilizzare le seguenti impostazioni dell'ora con la direttiva di scadenza:

  • off fa in modo che le intestazioni Expires e Cache-Control non vengano modificate.
  • epoch imposta l'intestazione Expires al 1 gennaio 1970 00:00:01 GMT.
  • max imposta l'intestazione Expires al 31 dicembre 2037 23:59:59 GMT e l'età massima di Cache-Control a 10 anni.
  • Un tempo senza prefisso @ indica un tempo di scadenza relativo al tempo di accesso al browser. È possibile specificare un tempo negativo, che imposta l'intestazione Cache-Control su no-cache. Esempio:scade 10d; o scade 14w3d;
  • Un'ora con un prefisso @ specifica una scadenza assoluta dell'ora del giorno, scritta nella forma Hh o Hh:Mm, dove H è compreso tra 0 e 24 e M è compreso tra 0 e 59. Esempio:scade @ 15:34;

Puoi utilizzare le seguenti unità di tempo:

  • ms:millisecondi
  • s:secondi
  • m:minuti
  • h:ore
  • d:giorni
  • w:settimane
  • M:mesi (30 giorni)
  • y:anni (365 giorni)

Esempi:1h30m per un'ora e trenta minuti, 1y6M per un anno e sei mesi.

Si noti inoltre che se si utilizza un'intestazione Expires molto futura, è necessario modificare il nome del file del componente ogni volta che il componente cambia. Pertanto è una buona idea eseguire la versione dei file. Ad esempio, se si dispone di un file javascript.js e si desidera modificarlo, è necessario aggiungere un numero di versione al nome del file modificato (ad esempio javascript-1.1.js) in modo che i browser debbano scaricarlo. Se non modifichi il nome del file, i browser caricheranno il (vecchio) file dalla loro cache.

Invece di basare l'intestazione Expires sul tempo di accesso del browser (ad es. scade 10d;), puoi anche basarla sulla data di modifica di un file (tieni presente che funziona solo per i file reali che sono archiviati sul disco rigido! ) utilizzando la parola chiave modificata che precede l'ora:

expires modified 10d;

3 Test

Per verificare se la tua configurazione funziona, puoi utilizzare la funzione Analisi di rete degli Strumenti per sviluppatori nel browser Firefox e accedere a un file statico tramite Firefox (ad es. un'immagine). Nell'output dell'intestazione, dovresti ora vedere un'intestazione Expires e un'intestazione Cache-Control con una direttiva max-age (max-age contiene un valore in secondi, ad esempio 31536000 è un anno nel futuro):

  • nginx HttpHeadersModule:http://wiki.nginx.org/HttpHeadersModule

Informazioni sull'autore

Falko Timme è il proprietario di Timme Hosting (hosting web nginx ultra veloce). È il principale manutentore di HowtoForge (dal 2005) e uno dei principali sviluppatori di ISPConfig (dal 2000). Ha anche contribuito al libro di O'Reilly "Linux System Administration".


Linux
  1. Come utilizzare Nginx per reindirizzare

  2. nginx - 413 Entità richiesta troppo grande

  3. Come disabilitare ETag in NGINX

  4. Come abilitare HTTP2 in NGINX

  5. Come eliminare milioni di file senza disturbare il server

Come configurare la cache Nginx su un server LAMP

Come configurare la cache Nginx sul server LEMP

Come installare Nginx su CentOS 7?

Come installare NGINX su Ubuntu 18.04

Come trovare file in Debian

Come ripulire i file non necessari