Gestisci il comportamento della cache

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 come public. 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 (vedi s-maxage di seguito per controlli specifici per la memorizzazione nella cache CDN).

  • s-maxage: sostituisce l'istruzione max-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 per max-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 e HEAD. 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 che Vary 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.