Check out what’s new from Firebase at Google I/O 2022. Learn more

Önbellek davranışını yönet

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ği public 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ğıdaki s-maxage bakın).

  • s-maxage — Yalnızca CDN önbelleğe alma için max-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çin max-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 ve HEAD 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ıca Vary 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.