Google si impegna a promuovere l'equità razziale per le comunità nere. Vedi come.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Gestire 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 CDN . Se ridistribuisci il contenuto del tuo sito, Firebase Hosting cancella automaticamente tutto il contenuto statico memorizzato nella cache attraverso la rete CDN fino alla richiesta successiva.

Tuttavia, poiché le funzioni Cloud e i servizi Cloud Run generano contenuto in modo dinamico, il contenuto di un determinato URL può variare in base a elementi quali l'input dell'utente o l'identità dell'utente. Per tener conto di ciò, le richieste gestite dal codice backend non memorizzano nella cache la rete CDN per impostazione predefinita.

È possibile, tuttavia, configurare il comportamento della memorizzazione nella cache per il contenuto dinamico . Ad esempio, se una funzione genera nuovi contenuti solo periodicamente, è possibile velocizzare l'app memorizzando nella cache il contenuto generato per almeno un breve periodo di tempo.

È inoltre possibile ridurre potenzialmente i costi di esecuzione della funzione perché il contenuto viene offerto dalla rete CDN anziché tramite una funzione attivata. Maggiori informazioni sull'ottimizzazione dell'esecuzione delle funzioni e dei servizi nella documentazione Funzioni cloud e Esecuzione cloud .

Ulteriori informazioni sul comportamento della memorizzazione nella cache nella documentazione per gli sviluppatori Web di Google.

Imposta controllo cache

Lo strumento principale utilizzato per gestire la cache per il contenuto dinamico è l'intestazione Cache-Control . Configurando questa intestazione, è possibile comunicare sia al browser che al CDN per quanto tempo è possibile memorizzare nella cache i contenuti. 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 il CDN per Firebase Hosting) possono memorizzare nella cache il contenuto.

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

  • s-maxage - Sostituisce la direttiva max-age per la memorizzazione nella cache CDN; indica al CDN quanti secondi può memorizzare nella cache il contenuto. Allo scadere del tempo impostato, la rete CDN deve riconvalidare il contenuto con il server di origine. Nell'intestazione di esempio, sostituiamo l'impostazione di max-age per la CDN e consentiamo 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 a tuo agio con gli utenti che ricevono contenuti non aggiornati. Se una pagina cambia ogni pochi secondi, utilizzare un valore di tempo ridotto. Tuttavia, altri tipi di contenuti possono essere memorizzati in cache in modo sicuro per ore, giorni o persino mesi.

Puoi saperne di più sull'intestazione Cache-Control sulla rete di sviluppatori Mozilla e nella documentazione per gli 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 specificato nell'intestazione Vary

Varia le intestazioni

L' intestazione Vary determina quali intestazioni di 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 assicurarsi che qualsiasi cookie di sessione o intestazione di autorizzazione che si sta utilizzando faccia parte della chiave della cache, il che impedisce perdite accidentali di contenuto.

In alcuni casi d'uso avanzati, potresti avere altre intestazioni di cui hai bisogno 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 diverse intestazioni X-My-Custom-Header vengono memorizzate nella cache separatamente.

Utilizzando i 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 di __session appositamente denominato può passare all'esecuzione della tua app.

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