Firebase Hosting, sitenizi mümkün olduğunca hızlı hale getirmek için güçlü bir küresel CDN kullanır yapmasını sağlar.
İstenen statik içerikler, CDN'de otomatik olarak önbelleğe alınır. Şu durumda: sitenizin içeriğini yeniden dağıtırsanız Firebase Hosting, tüm sitenizi otomatik olarak temizler bir sonraki isteğe kadar CDN'de önbelleğe alınmış içerik.
Ancak Cloud Functions ve Cloud Run hizmetleri şu nedenle dinamik olarak kullanıyorsanız, belirli bir URL'nin içeriği bu tür şeylere göre değişiklik gösterebilir. kullanıcı kimliği veya kimliği olabilir. Bunu hesaba katmak için, arka uç kodu tarafından işlenenleri CDN'de varsayılan olarak önbelleğe almaz.
Bununla birlikte, dinamik içerik için önbelleğe alma davranışını yapılandırabilirsiniz. Örneğin, Örneğin, bir işlev yalnızca periyodik olarak yeni içerik oluşturuyorsa bu işlevin hızını uygulamanızı, oluşturulan içeriği en az kısa bir süre için önbelleğe alma.
Benzer şekilde, işlevleri azaltmak için önbelleğe alma davranışını yerine CDN'den yayınlandığı için yürütme maliyetleri tetiklenmiştir. İşlev yürütmeyi ve hizmetleri optimize etme hakkında daha fazla bilgi edinin Cloud Functions ve Cloud Run belgelerinden faydalanabilirsiniz.
404 hataları döndüren istekler istisnadır. CDN, verilerinizi hizmetin mevcut olmayan bir URL'ye 404 yanıtının 10 dakika boyunca güncellenmesini; bu URL'ye yönelik istekler CDN'den sunulur. Hizmetinizi değiştirirseniz Böylece içerik artık bu URL'de bulunuyorsa CDN, önbelleğe alınan tüm içerikleri 404 kodunu 10 dakika boyunca (en fazla) 404 hatasıyla sonuçlandırır ve ardından, içeriği bu URL'den normal bir şekilde sunar.
Bir 404 yanıtı zaten yöneticiniz tarafından ayarlanan önbelleğe alma üstbilgileri içeriyorsa Cloud Functions veya Cloud Run hizmetinde, 10 dakika olduğunu ve tarayıcının önbelleğe alma davranışını tam olarak CDN'dir.
Google'ın web geliştiricisi belgelerini inceleyin.
Önbellek Denetimini Ayarla
Dinamik içerik önbelleğini yönetmek için kullandığınız ana araç
Cache-Control
üstbilgisi. Bu üstbilgiyi yapılandırarak her ikisine de
önbelleğe alınabileceği süreyi CDN'ye göre
değiştirmeniz gerekir. Fonksiyonunuzda,
Cache-Control
öğesini şu şekilde ayarladınız:
res.set('Cache-Control', 'public, max-age=300, s-maxage=600');
Bu örnek üstbilgide, yönergeler üç şey yapar:
public
: Önbelleğipublic
olarak işaretler. Bu, hem tarayıcının hem de ara sunucular (Firebase Hosting için CDN) önbelleğe alabilir daha iyi olur.max-age
— Tarayıcıya ve CDN'ye kaç saniye önbelleğe alabileceğini bildirir daha iyi olur. Belirlenen süre dolduğunda tarayıcı ve CDN içeriği kaynak sunucuyla tekrar doğrular. Örnek başlıkta tarayıcının ve CDN'nin içeriği beş dakika boyunca önbelleğe almasına izin vermek (bkz. CDN önbelleğe almayla ilgili belirli kontroller için aşağıdas-maxage
bulabilirsiniz).s-maxage
: Yalnızca CDN önbelleğe alma içinmax-age
yönergesini geçersiz kılar; anlatır CDN'nin içeriği önbelleğe alabileceği saniyeyi belirtir. Ayarlanan zaman süresi dolarsa CDN, içeriği kaynak sunucuyla yeniden doğrulamalıdır. örnek başlığında, 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ını sağlar.
max-age
ve s-maxage
için değerlerini en uzun süreye ayarlayın
kullanıcıların eski içerik almasından rahatsız olmayacaksınız. Bir sayfa değişirse
birkaç saniyede bir, küçük bir zaman değeri kullanın. Ancak diğer içerik türleri
saatler, günler, hatta aylar boyunca güvenli bir şekilde önbelleğe alınabilir.
Cache-Control
başlığı hakkında daha fazla bilgiyi şurada bulabilirsiniz:
Mozilla Geliştirici Ağı
ve Google'ın
web geliştiricisi belgelerini inceleyin.
Ö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 makine adı
- Yol
- Sorgu dizesi
Vary
başlığında belirtilen istek başlıklarının içeriği
Üstbilgileri değiştir
İlgili içeriği oluşturmak için kullanılan
Vary
üst bilgisi
uygun bir istek sağlamak için hangi istek başlıklarının kullanılması gerektiğini belirler
yanıtı (önbelleğe alınmış içeriğin geçerli olup olmadığı veya içeriğin
kaynak sunucuyla tekrar doğrulanmıştır).
Firebase Hosting, sitenizde uygun Vary
üstbilgisini otomatik olarak ayarlar.
yaygın durumlar için yanıt alabilirsiniz. Çoğu zaman endişelenmenize gerek yoktur
Vary
üstbilgisi hakkında. Ancak bazı gelişmiş kullanım örneklerinde
gereken diğer üstbilgileri kontrol etmeniz gerekir. Böyle bir durumda,
yanıtınızda Vary
başlığını ayarlayabilirsiniz. Örneğin:
res.set('Vary', 'Accept-Encoding, X-My-Custom-Header');
Bu durumda, Vary
üstbilgisinin değeri şu şekildedir:
vary: X-My-Custom-Header, x-fh-requested-host, accept-encoding, cookie, authorization
Bu ayarlarla, aksi takdirde farklı olan iki özdeş istek
X-My-Custom-Header
üstbilgileri ayrı olarak önbelleğe alınır. Hosting şunu ekler:
Bir istek olduğunda varsayılan olarak Vary
başlığına Cookie
ve Authorization
eklenir
dinamik içerik için tasarlandı. Bu şekilde, herhangi bir oturumun veya çerez yetkilendirmesinin
başlık, önbellek anahtarının bir parçası olup yanlışlıkla yapılan sızıntıları önler
yardımcı olur.
Ayrıca şunlara dikkat edin:
Yalnızca
GET
veHEAD
istekleri önbelleğe alınabilir. Diğer kullanıcı verilerini kullanan HTTPS istekleri yöntemler hiçbir zaman önbelleğe alınmaz.Vary
üstbilgisine ayar eklerken dikkatli olun. Diğer ayarlar eklerseniz CDN'nin önbelleğe alınmış içeriği sunma olasılığı o kadar azalır. AyrıcaVary
değerinin yanıt yerine istek başlıklarına dayalı olduğunu unutmayın. başlıklar.
Çerezleri kullanma
Firebase Hosting öğesini Cloud Functions veya
Cloud Run, çerezler genellikle gelen isteklerden çıkarılır. Bu
CDN önbellek davranışının verimli olması için gereklidir.
Yalnızca özel olarak adlandırılmış __session
çerezinin yalnızca
en verimli şekilde
belirleyebilirsiniz.
Mevcut olduğunda __session
çerezi otomatik olarak önbelleğin bir parçası haline getirilir
diğer bir deyişle, farklı çerezlere sahip iki kullanıcının
diğerinin önbelleğe alınmış yanıtını alabilir. __session
çerezini yalnızca
Uygulama, kullanıcı yetkilendirmesine bağlı olarak farklı içerik sunuyor.