Firebase Hosting, sitenizi mümkün olduğunca hızlı hale getirmek için güçlü bir global CDN kullanır.
İstenen statik içerik CDN'de otomatik olarak önbelleğe alınır . Sitenizin içeriğini yeniden dağıtırsanız, Firebase Hosting bir sonraki isteğe kadar CDN'deki önbelleğe alınmış tüm statik içeriğinizi otomatik olarak temizler.
Ancak, Bulut İşlevleri ve Bulut Çalıştırması hizmetleri dinamik olarak içerik oluşturduğundan, belirli bir URL'nin içeriği kullanıcı girişi veya kullanıcının kimliği gibi şeylere göre değişebilir. Bunu hesaba katmak için, arka uç koduyla işlenen istekler varsayılan olarak CDN'de önbelleğe alınmaz .
Bununla birlikte, dinamik içerik için önbellek davranışını yapılandırabilirsiniz . Örneğin, bir işlev yalnızca düzenli aralıklarla yeni içerik oluşturuyorsa, oluşturulan içeriği en az kısa bir süre için önbelleğe alarak uygulamanızı hızlandırabilirsiniz.
İçerik tetiklenen bir işlev yerine CDN'den sunulduğu için işlev yürütme maliyetlerini de azaltabilirsiniz. Bulut İşlevleri ve Bulut Çalışması belgelerinde işlev yürütme ve hizmetlerini en iyi duruma getirme hakkında daha fazla bilgi edinin.
Google'ın web geliştiricisi dokümanlarında önbellekleme davranışı hakkında daha fazla bilgi edinin.
Önbellek Denetimini Ayarla
Dinamik içerik için önbelleği yönetmek için kullandığınız ana araç
Cache-Control üst bilgisidir. Bu üstbilgiyi yapılandırarak, içeriğinizin ne kadar süreyle önbelleğe alınabileceğini hem tarayıcıya hem de CDN'ye iletebilirsiniz. İşlevinizde
Cache-Control şu şekilde ayarladınız:
res.set('Cache-Control', 'public, max-age=300, s-maxage=600');
Bu örnek başlığında, yönergeler üç şey yapar:
public- Önbelleği
publicolarak işaretler. Bu, hem tarayıcının hem de ara sunucuların (Firebase Hosting için CDN anlamına gelir) içeriği önbelleğe alabileceği anlamına gelir.
max-age- Tarayıcıya ve CDN'ye içeriği kaç saniye önbellekleyebileceklerini bildirir. Ayarlanan süre sona erdiğinde, tarayıcı ve CDN'nin içeriği başlangıç sunucusuyla yeniden doğrulaması gerekir. Örnek başlığında, tarayıcının ve
s-maxageiçeriği beş dakika boyunca önbelleğe
s-maxage(CDN önbelleğe
s-maxageilgili belirli kontroller için aşağıdaki
s-maxagebakın).
s-maxage- Yalnızca CDN önbelleğe alma için
max-ageyönergesini geçersiz kılar; CDN'ye içeriği kaç saniye önbelleğe alabileceğini bildirir. Ayarlanan süre sona erdiğinde, CDN içeriği başlangıç sunucusuyla yeniden doğrulamalıdır. Örnek üstbilgisinde, yalnızca CDN için
max-ageayarını geçersiz kılıyoruz ve CDN'nin içeriği on dakika boyunca önbelleğe almasına izin veriyoruz.
max-age ve
s-maxage , değerlerini eski içerik alan kullanıcılarla rahat edeceğiniz en uzun süreye ayarlayın. Bir sayfa birkaç saniyede bir değişirse, küçük bir zaman değeri kullanın. Ancak, diğer içerik türleri saatler, günler ve hatta aylar boyunca güvenli bir şekilde önbelleğe alınabilir.
Önbelleğe alınan içerik ne zaman sunulur?
Tarayıcı ve CDN içeriğinizi aşağıdakilere göre önbelleğe alır:
- Ana bilgisayar adı
- Yol
- Sorgu dizesi
-
Varyüstbilgisinde belirtilen istek başlıklarının içeriği
Başlıkları değiştirir
Vary başlığı , uygun bir yanıt sağlamak için hangi istek başlıklarının kullanılması gerektiğini belirler (önbelleğe alınan içeriğin geçerli olup olmadığı veya içeriğin kaynak sunucu ile yeniden doğrulanması gerekip gerekmediği).
Çoğu zaman,
Vary başlığı hakkında endişelenmenize gerek yoktur. Firebase Hosting, yaygın durumlar için yanıtınıza otomatik olarak uygun bir
Vary başlığı ayarlar. Buna, kullandığınız herhangi bir oturum çerezi veya yetkilendirme başlığının önbellek anahtarının bir parçası haline getirildiğinden emin olunması, içeriğin yanlışlıkla sızmasını önler.
Bazı gelişmiş kullanım durumlarında, önbelleği etkilemek için ihtiyacınız olan başka başlıklarınız olabilir. Bu durumda,
Vary üstbilgisini yanıtınıza ayarlayabilirsiniz:
res.set('Vary', 'Accept-Encoding, X-My-Custom-Header');
Bu ayarlarla, farklı
X-My-Custom-Header başlıklarına sahip iki özdeş istek ayrı olarak önbelleğe alınır.
Çerezleri kullanma
Firebase Hosting'i Cloud Functions veya Cloud Run ile birlikte kullanırken, çerezler genellikle gelen isteklerden çıkarılır. Bu, verimli CDN önbellek davranışına izin vermek için gereklidir. Yalnızca özel olarak adlandırılan
__session çerezinin uygulamanızın yürütülmesine geçmesine izin verilir.
Varsa,
__session çerezi otomatik olarak önbellek anahtarının bir parçası haline getirilir, yani farklı çerezlere sahip iki kullanıcının diğerinin önbelleğe alınmış yanıtını alması imkansızdır.
__session çerezini yalnızca uygulamanız kullanıcı yetkisine bağlı olarak farklı içerik
__session kullanın.