Firebase Hosting, sitenizi olabildiğince hızlı hale getirmek için güçlü bir küresel CDN kullanır.
İstenen herhangi bir statik içerik otomatik olarak CDN'de önbelleğe alınır . Sitenizin içeriğini yeniden dağıtırsanız, Firebase Hosting, bir sonraki isteğe kadar CDN'de önbelleğe alınmış tüm statik içeriğinizi otomatik olarak temizler.
Ancak Cloud Functions ve Cloud Run 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ç kodu tarafından işlenen istekler varsayılan olarak CDN'de önbelleğe alınmaz .
Bununla birlikte, dinamik içerik için önbelleğe alma davranışını yapılandırabilirsiniz . Örneğin, bir işlev yalnızca periyodik olarak yeni içerik üretiyorsa, 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ğundan, işlev yürütme maliyetlerini de potansiyel olarak azaltabilirsiniz. Cloud Functions ve Cloud Run belgelerinde işlev yürütmeyi ve hizmetleri optimize etme hakkında daha fazla bilgi edinin.
Google'ın web geliştirici belgelerinde önbelleğe alma davranışı hakkında daha fazla bilgi edinin.
Önbellek Kontrolünü Ayarla
Dinamik içerik için önbelleği yönetmek için kullandığınız ana araç, Cache-Control
başlığıdır. Bu başlığı yapılandırarak, içeriğinizin ne kadar süreyle önbelleğe alınabileceğini hem tarayıcıya hem de CDN'ye bildirebilirsiniz. İşlevinizde, Cache-Control
şu şekilde ayarlarsınız:
res.set('Cache-Control', 'public, max-age=300, s-maxage=600');
Bu örnek başlıkta, direktifler üç şey yapar:
public
— Önbelleğipublic
olarak 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 önbelleğe alabileceklerini söyler. Ayarlanan süre sona erdiğinde, tarayıcı ve CDN, içeriği kaynak sunucuyla yeniden doğrulamalıdır. Örnek başlıkta, tarayıcının ve CDN'nin içeriği beş dakika boyunca önbelleğe almasına izin veriyoruz (CDN önbelleğe almaya yönelik belirli kontroller için aşağıdakis-maxage
bakın).s-maxage
— Yalnızca CDN önbelleğe alma içinmax-age
yönergesini geçersiz kılar; CDN'ye içeriği kaç saniye önbelleğe alabileceğini söyler. Ayarlanan süre sona erdiğinde, CDN, içeriği kaynak sunucuyla yeniden doğrulamalıdır. Örnek başlıkta, yalnızca CDN içinmax-age
ayarı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
için, değerlerini, kullanıcıların eski içeriği alması konusunda rahat edeceğiniz en uzun süreye ayarlayın. Bir sayfa birkaç saniyede bir değişiyorsa, küçük bir zaman değeri kullanın. Ancak, diğer içerik türleri saatlerce, günlerce ve hatta aylarca güvenle önbelleğe alınabilir.
Mozilla Developer Network'te ve Google'ın web geliştirici belgelerinde Cache-Control
başlığı hakkında daha fazla bilgi edinebilirsiniz.
Önbelleğe alınmış içerik ne zaman sunulur?
Tarayıcı ve CDN, içeriğinizi aşağıdakilere dayalı olarak önbelleğe alır:
- ana bilgisayar adı
- Yol
- sorgu dizesi
-
Vary
başlığında belirtilen istek başlıklarının içeriği
Başlıkları değiştir
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).
Firebase Hosting, genel durumlar için yanıtınızda otomatik olarak uygun bir Vary
başlığı ayarlar. Çoğu zaman, Vary
başlığı için endişelenmenize gerek yoktur. Ancak, bazı gelişmiş kullanım durumlarında, önbelleği etkilemek için ihtiyaç duyduğunuz başka başlıklara sahip olabilirsiniz. Bu durumda, cevabınıza Vary
başlığını ayarlayabilirsiniz. Örneğin:
res.set('Vary', 'Accept-Encoding, X-My-Custom-Header');
Bu durumda, Vary
başlığının değeri:
vary: X-My-Custom-Header, x-fh-requested-host, accept-encoding, cookie, authorization
Bu ayarlarla, farklı X-My-Custom-Header
başlıklarına sahip aksi takdirde aynı olan iki istek ayrı ayrı önbelleğe alınır. Dinamik içerik için bir istek yapıldığında, Hosting'in Vary
başlığına varsayılan olarak Cookie
ve Authorization
eklediğini unutmayın. Bu, kullandığınız herhangi bir oturum veya tanımlama bilgisi yetkilendirme başlığının önbellek anahtarının bir parçası olmasını sağlayarak yanlışlıkla içerik sızmasını önler.
Ayrıca not edin:
Yalnızca
GET
veHEAD
istekleri önbelleğe alınabilir. Diğer yöntemleri kullanan HTTPS istekleri hiçbir zaman önbelleğe alınmaz.Vary
başlığına ayarlar eklerken dikkatli olun. Ne kadar çok ayar eklerseniz, CDN'nin önbelleğe alınmış içerik sunma olasılığı o kadar azalır. AyrıcaVary
yanıt üstbilgilerine değil, istek üstbilgilerine dayandığını unutmayın.
Ç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.
Mevcut olduğunda, __session
tanımlama bilgisi otomatik olarak önbellek anahtarının bir parçası haline getirilir; bu, farklı tanımlama bilgilerine sahip iki kullanıcının diğerinin önbelleğe alınmış yanıtını almasının imkansız olduğu anlamına gelir. __session
çerezini yalnızca, uygulamanız kullanıcı yetkilendirmesine bağlı olarak farklı içerik sunuyorsa kullanın.