Firebase Hosting utilizza una potente rete CDN globale per rendere il tuo sito veloce possibile.
Tutti i contenuti statici richiesti vengono automaticamente memorizzati nella cache sulla CDN. Se reimplementi i contenuti del tuo sito, Firebase Hosting cancella automaticamente tutti i contenuti memorizzati nella cache nella CDN fino alla richiesta successiva.
Tuttavia, poiché i servizi Cloud Functions e Cloud Run generano contenuti in modo dinamico, i contenuti di un determinato URL possono variare in base a questi fattori tramite l'input dell'utente o l'identità dell'utente. Per tenere conto di ciò, le richieste che gestiti dal codice di backend non vengono memorizzati nella cache sulla CDN per impostazione predefinita.
Tuttavia, puoi configurare il comportamento di memorizzazione nella cache per i contenuti dinamici. Per Ad esempio, se una funzione genera nuovi contenuti solo periodicamente, puoi velocizzare della tua app memorizzando nella cache i contenuti generati per almeno un breve periodo di tempo.
Puoi configurare in modo simile il comportamento della memorizzazione nella cache per ridurre potenzialmente la funzione di esecuzione in quanto i contenuti vengono pubblicati dalla CDN anziché funzione attivata. Scopri di più sull'ottimizzazione dell'esecuzione delle funzioni e dei servizi nella documentazione di Cloud Functions e Cloud Run.
Fanno eccezione le richieste che restituiscono errori 404. La CDN memorizza nella cache risposta 404 del servizio a un URL inesistente per 10 minuti, in modo che le successive le richieste per quell'URL vengono gestite dalla rete CDN. Se cambi servizio in modo che ora siano presenti contenuti in corrispondenza di questo URL, la CDN continua a pubblicare eventuali 404 per 10 minuti (al massimo), quindi pubblica i contenuti di quell'URL normalmente.
Se una risposta 404 contiene già intestazioni di memorizzazione nella cache impostate Cloud Functions o Cloud Run, eseguono l'override del è di 10 minuti e determina completamente il comportamento di memorizzazione nella cache della rete CDN.
Scopri di più sul comportamento della memorizzazione nella cache nelle documentazione per sviluppatori web.
Imposta Cache-Control
Lo strumento principale che utilizzi per gestire la cache dei contenuti dinamici
Intestazione Cache-Control
. Configurando questa intestazione, puoi comunicare entrambi
nel browser e nella rete CDN per quanto tempo
possono essere memorizzati nella cache i tuoi contenuti. Nella funzione, imposta Cache-Control
nel seguente modo:
res.set('Cache-Control', 'public, max-age=300, s-maxage=600');
Nell'intestazione di esempio, le istruzioni svolgono tre operazioni:
public
: contrassegna la cache comepublic
. Ciò significa che sia il browser che i server intermedi (ovvero la CDN di Firebase Hosting) possono memorizzare nella cache dei contenuti.max-age
: indica al browser e alla CDN per quanti secondi possono memorizzare i contenuti nella cache. Alla scadenza del tempo impostato, il browser e la rete CDN devono riconvalida i contenuti con il server di origine. Nell'intestazione di esempio, consentendo al browser e alla rete CDN di memorizzare i contenuti nella cache per cinque minuti (vedis-maxage
di seguito per controlli specifici per la memorizzazione nella cache CDN).s-maxage
: sostituisce l'istruzionemax-age
solo per la memorizzazione nella cache di CDN; racconta alla rete CDN per quanti secondi può memorizzare i contenuti nella cache. Quando l'orario impostato scade, la rete CDN deve riconvalidare i contenuti con il server di origine. Nella intestazione di esempio, stiamo sostituendo l'impostazione permax-age
solo per la CDN e consentendo alla CDN di memorizzare i contenuti nella cache per dieci minuti.
Per max-age
e s-maxage
, imposta i valori sul periodo di tempo più lungo
che tu sia a tuo agio con la ricezione di contenuti obsoleti da parte degli utenti. Se una pagina cambia
a intervalli di pochi secondi, utilizza un piccolo valore di tempo. Tuttavia, altri tipi di contenuti possono
possono essere memorizzate nella cache
in sicurezza per ore, giorni o persino mesi.
Puoi scoprire di più sull'intestazione Cache-Control
nella
Rete di sviluppatori di Mozilla
e nel
documentazione per sviluppatori web.
Quando vengono pubblicati i contenuti memorizzati nella cache?
Il browser e la rete CDN memorizzano nella cache i tuoi contenuti in base a:
- Il nome host
- Il percorso
- La stringa di query
- I contenuti delle intestazioni della richiesta specificate nell'intestazione
Vary
Varia intestazioni
La
Intestazione Vary
determina quali intestazioni della richiesta devono essere utilizzate per fornire un'istanza
(se i contenuti memorizzati nella cache sono validi o se devono essere
riconvalidato con il server di origine).
Firebase Hosting imposta automaticamente un'intestazione Vary
appropriata nel tuo
per le situazioni più comuni. La maggior parte delle volte non c'è motivo di preoccuparsi.
sull'intestazione Vary
. Tuttavia, in alcuni casi d'uso avanzati, potresti avere altre intestazioni che devi modificare per la cache. In questo caso,
puoi impostare l'intestazione Vary
nella tua risposta. Ad esempio:
res.set('Vary', 'Accept-Encoding, X-My-Custom-Header');
In questo caso, il valore dell'intestazione Vary
è:
vary: X-My-Custom-Header, x-fh-requested-host, accept-encoding, cookie, authorization
Con queste impostazioni, due richieste altrimenti identiche con intestazioni X-My-Custom-Header
diverse vengono memorizzate nella cache separatamente. Tieni presente che Hosting aggiunge
Cookie
e Authorization
all'intestazione Vary
per impostazione predefinita quando viene inviata una richiesta
pensati per i contenuti dinamici. Ciò garantisce che qualsiasi autorizzazione di sessione o cookie
l'intestazione che utilizzi fa parte della chiave cache, che impedisce fughe accidentali
di contenuti.
Nota anche:
È possibile memorizzare nella cache solo le richieste
GET
eHEAD
. Le richieste HTTPS che utilizzano altri metodi non vengono mai memorizzate nella cache.Fai attenzione quando aggiungi impostazioni all'intestazione
Vary
. Più impostazioni che aggiungi, minori sono le probabilità che la CDN possa pubblicare contenuti memorizzati nella cache. Inoltre, ricorda cheVary
si basa sulle intestazioni di richiesta, non sulle intestazioni di risposta.
Utilizzo dei cookie
Quando utilizzi Firebase Hosting insieme a Cloud Functions o
Cloud Run, generalmente i cookie vengono rimossi dalle richieste in entrata. Questo
è necessario per consentire un comportamento efficiente della cache CDN.
Solo il cookie __session
con nome speciale può passare attraverso
l'esecuzione della tua app.
Se presente, il cookie __session
viene automaticamente inserito nella cache
il che significa che per due utenti con cookie diversi è impossibile
riceveranno la risposta memorizzata nella cache dell'altro. Usa il cookie __session
solo se
pubblica contenuti diversi a seconda dell'autorizzazione dell'utente.