Google is committed to advancing racial equity for Black communities. See how.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Gestisci il comportamento della cache

Firebase Hosting utilizza un potente CDN globale per rendere il tuo sito il più veloce possibile.

Qualsiasi contenuto statico richiesto viene automaticamente memorizzato nella cache della rete CDN . Se ridistribuisci il contenuto del tuo sito, Firebase Hosting cancella automaticamente tutto il contenuto statico memorizzato nella cache attraverso la CDN fino alla richiesta successiva.

Tuttavia, poiché Cloud Functions e i servizi Cloud Run generano il contenuto in modo dinamico, il contenuto per un determinato URL può variare in base a fattori quali l'input dell'utente o l'identità dell'utente. Per tenere conto di ciò, le richieste gestite dal codice di back-end non vengono memorizzate nella cache sulla CDN per impostazione predefinita.

Tuttavia, puoi configurare il comportamento di memorizzazione nella cache per il contenuto dinamico . Ad esempio, se una funzione genera nuovo contenuto solo periodicamente, puoi velocizzare la tua app memorizzando nella cache il contenuto generato per almeno un breve periodo di tempo.

È anche possibile ridurre potenzialmente i costi di esecuzione della funzione perché il contenuto viene servito dalla CDN anziché tramite una funzione attivata. Ulteriori informazioni sull'ottimizzazione dell'esecuzione delle funzioni e dei servizi nella documentazione di Cloud Functions e Cloud Run .

Ulteriori informazioni sul comportamento di memorizzazione nella cache nella documentazione per sviluppatori web di Google.

Imposta il controllo della cache

Lo strumento principale che utilizzi per gestire la cache per il contenuto dinamico è l'intestazione Cache-Control . Configurando questa intestazione, puoi comunicare sia al browser che alla CDN per quanto tempo i tuoi contenuti possono essere memorizzati nella cache. Nella tua funzione, imposti Cache-Control modo:

res.set('Cache-Control', 'public, max-age=300, s-maxage=600');

In questo esempio di intestazione, le direttive fanno tre cose:

  • public : contrassegna la cache come public . Ciò significa che sia il browser che i server intermedi (ovvero la CDN per Firebase Hosting) possono memorizzare nella cache il contenuto.

  • max-age : indica al browser e alla rete CDN per quanti secondi possono memorizzare il contenuto nella cache. Allo scadere del tempo impostato, il browser e il CDN devono riconvalidare il contenuto con il server di origine. Nell'intestazione di esempio, stiamo consentendo al browser e alla rete CDN di memorizzare nella cache il contenuto per cinque minuti (vedere s-maxage seguito per i controlli specifici per la memorizzazione nella cache CDN).

  • s-maxage - Ignora la direttiva max-age per il caching CDN; dice alla CDN per quanti secondi può memorizzare nella cache il contenuto. Allo scadere del tempo impostato, il CDN deve riconvalidare il contenuto con il server di origine. Nell'intestazione di esempio, stiamo sovrascrivendo l'impostazione per max-age per la CDN e consentendo alla CDN di memorizzare nella cache il contenuto per dieci minuti.

Per max-age e s-maxage , imposta i loro valori sul periodo di tempo più lungo in cui ti senti a tuo agio con gli utenti che ricevono contenuti obsoleti. Se una pagina cambia ogni pochi secondi, usa un piccolo valore temporale. Tuttavia, altri tipi di contenuto possono essere memorizzati nella cache in modo sicuro per ore, giorni o persino mesi.

Puoi saperne di più sull'intestazione Cache-Control su Mozilla Developer Network e nella documentazione per sviluppatori web di Google.

Quando viene offerto il contenuto memorizzato nella cache?

Il browser e la CDN memorizzano nella cache i tuoi contenuti in base a:

  • Il nome host
  • Il sentiero
  • La stringa di query
  • Il contenuto delle intestazioni della richiesta specificate nell'intestazione Vary

Varia le intestazioni

L' intestazione Vary determina quali intestazioni della richiesta devono essere utilizzate per fornire una risposta appropriata (se il contenuto memorizzato nella cache è valido o se il contenuto deve essere riconvalidato con il server di origine).

Il più delle volte, non devi preoccuparti dell'intestazione Vary . Firebase Hosting imposta automaticamente un'intestazione Vary appropriata sulla tua risposta per situazioni comuni. Ciò include la verifica che qualsiasi cookie di sessione o intestazione di autorizzazione che stai utilizzando faccia parte della chiave della cache, il che previene perdite accidentali di contenuto.

In alcuni casi d'uso avanzati, potresti avere altre intestazioni necessarie per influenzare la cache. In questo caso, puoi semplicemente impostare l'intestazione Vary sulla tua risposta:

res.set('Vary', 'Accept-Encoding, X-My-Custom-Header');

Con queste impostazioni, due richieste altrimenti identiche con intestazioni X-My-Custom-Header vengono memorizzate nella cache separatamente.

Utilizzo dei cookie

Quando si utilizza Firebase Hosting insieme a Cloud Functions o Cloud Run, i cookie vengono generalmente rimossi dalle richieste in arrivo. Ciò è necessario per consentire un comportamento efficiente della cache CDN. Solo il cookie __session nome __session può passare all'esecuzione della tua app.

Quando è presente, il cookie __session viene automaticamente __session nella chiave della cache, il che significa che è impossibile per due utenti con cookie diversi ricevere la risposta dell'altro nella cache. Utilizza il cookie __session se la tua app offre contenuti diversi a seconda dell'autorizzazione dell'utente.