Come Configurare le Intestazioni Cache-Control in Apache

0
223

Ogni browser dell’utente fa uso di un built-in cache per memorizzare gli oggetti scaricati, che può accelerare notevolmente ripetere le visite al tuo sito web attraverso il caricamento da disco anziché la rete. Ecco come configurare il tutto in Apache.

Come Nella Cache?

La prima volta che un utente si connette al sito, scaricare tutte le risorse statiche necessarie per il rendering della pagina, tra cui cose come il vostro logo. Quando passare a una nuova pagina, verrà caricato il logo dalla memoria piuttosto che chiedere di nuovo, velocizzando notevolmente le prestazioni e ridurre il carico sul server web nel processo.

Questa è una cache lato client, ma molti siti anche fare uso di un Content Delivery Network, o CDN. Una CDN è una rete di server che si siedono davanti al vostro server web principale, o l ‘ “origine” del server. Questa rete memorizza nella cache le pagine, aumentando la larghezza di banda massima, riducendo la latenza di accesso, riducendo notevolmente lo stress immessi sul vostro server di origine. Se vuoi saperne di più su Cdn, potete leggere la nostra guida su di loro qui.

Cache-Control è un’intestazione che è possibile configurare il server web per aggiungere a tutte le richieste in uscita, che dirà il browser e Cdn come cache il contenuto.

Alcune pagine non dovrebbe mai essere messa in cache condivise come Cdn. Così facendo, con il rischio di visualizzazione di un utente informazioni personali ad altri. Come regola generale, se la pagina sta per essere esattamente lo stesso per tutti gli utenti, come la home page, è possibile memorizzare. Se mostra riservate le informazioni dell’utente, avrai voglia di blacklist dalla cache. Risorse statiche, come CSS e le immagini, di solito possono essere memorizzati nella cache per tutti, spesso per molto più tempo.

La quantità di tempo oggetto di trascorrere nella cache è anche importante. Indicato come il Time-To-Live (TTL), l’età massima memorizzata nella cache risorse determina per quanto tempo l’oggetto rimarrà in cache prima di essere invalidato, e chiederà all’utente di richiedere un nuovo oggetto. Per le risorse statiche che non cambiano di molto, si può impostare il TTL molto elevato, di valori, di solito circa due anni. Per le cose che si potrebbe desiderare di aggiornamento, è necessario impostare i valori TTL inferiori a prevenire raffermo risorse dalla cache per troppo tempo.

È possibile utilizzare sempre la versione nomi di file per attivare una cache di ricarica. Se si rilascia una nuova versione di un foglio di stile CSS, è possibile assegnare un nome di stili-1.0.1.css, e il browser dell’utente (e qualsiasi Cdn davanti a vederlo come un nuovo file che deve essere scaricato di nuovo. Inoltre, per alcuni Cdn, è possibile emettere manuale invalidations per svuotare la cache esistente senza modificare i nomi dei file.

Come Utilizzare Cache-Control in Apache

Cache-Control ha un paio di opzioni:

  • pubblico – Possono essere memorizzati nella cache da chiunque, compresi i browser e Cdn. Utilizzare questo per la maggior parte di oggetti statici.
  • privato – Contiene dati sensibili che non possono essere memorizzati nella cache dal Cdn o reverse proxy. Il browser dell’utente può cache in locale. Utilizzare questo per la maggior parte autenticato pagine.
  • no-cache – Nonostante il nome, non disattivare la memorizzazione nella cache. Il browser può ancora cache la risposta per le prestazioni, ma deve verificare con il server di origine per gli aggiornamenti prima di utilizzarlo. Utilizzare questa opzione se si desidera che l’utente rinnovare ogni volta.
  • no-store – Disabilita la cache del tutto. Utilizzare questo per i dati sensibili che non devono essere inviati due volte.

Inoltre, è possibile aggiungere la non-trasformare direttiva, che consente di disattivare tutte le conversioni che può essere fatto per la risorsa. Per esempio, alcuni Cdn comprimere le immagini per ridurre la larghezza di banda. La presente direttiva si disabilita tale comportamento.

In Apache, devi impostare l’intestazione manualmente tramite l’Intestazione direttiva set, in questo modo:

Colpo di testa di Cache-Control “max-age=84600, pubblica”

Il max-age valore è impostato in secondi, per esempio, max-age=300 per cinque minuti di TTL, e max-age=63072000 per due anni.

Si può mettere la presente direttiva nella root della vostra configurazione da applicare a livello di sito, ma un metodo migliore è quello di applicare le impostazioni a seconda del tipo di file. Per esempio, per impostare un alto TTL per la maggior parte dei media statici, è possibile utilizzare un FilesMatch blocco:

<FilesMatch “.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$”>
Colpo di testa di Cache-Control “max-age=63072000, pubblica”
</FilesMatch>

Se si desidera inserire un percorso specifico nella cache dal Cdn, è possibile utilizzare una Directory blocco:

<Directory “/privato”>
Colpo di testa di Cache-Control “max-age=300, privato”
</Directory>

O semplicemente corrispondono a un singolo file:

<File “protected.html”>
Colpo di testa di Cache-Control “max-age=300, privato”
</File>

I blocchi con la specifica di partite avranno la precedenza le regex, ma è necessario verificare che tutto è stato impostato correttamente sul lato di ricezione. È possibile controllare questo da Chrome DevTools, in Rete > Intestazioni.

Solo se si ha accesso a .htaccess di configurazione, è ancora possibile utilizzare la directory di corrispondenza con la creazione di un nuovo .il file htaccess in ogni sottodirectory.

L’uso di Surrogati di Controllo per Modificare CDN Comportamento Direttamente

Il Surrogato di Controllo intestazione funziona esattamente come il Controllo della Cache, ma i dettagli specifici istruzioni per Cdn e reverse proxy, piuttosto che agli utenti finali. In questo modo, si può dire Cdn per fare una cosa, ma inviare direzioni diverse per il browser.

Devi impostare l’intestazione manualmente, nello stesso modo come voi Cache-Control:

Colpo di testa di Surrogati di Controllo “max-age=300, pubblica”

Sarà sicuramente desidera eseguire il test con il CDN per verificare che questo funziona Surrogato di Controllo è abbastanza nuovo, e non è universale.