Cloud CDN, App Hosting'nın web uygulamanız için verdiği desteğin önemli bir parçasıdır. Arka uçunuza yapılan her istek önce Cloud CDN'den geçer. CDN'de önbelleğe alınmış içerikler, web uygulamanızın sunucu kodunu çalıştıran Cloud Run hizmetine gitmeden doğrudan kullanıcıya sunulur. CDN'lerin genel avantajları hakkında daha fazla bilgiyi web.dev adresinde bulabilirsiniz.
Temel Cloud CDN yapılandırması App Hosting tarafından ayarlanır ve değiştirilemez. Ancak önbelleğe almayı optimize etmek için yapabileceğiniz çeşitli işlemler vardır. Bu işlemlerle sayfa yükleme hızlarını artırabilir, faturalandırılan önbelleğe alınmamış içeriği azaltabilir ve Cloud Run'a yönelik trafiği en aza indirebilirsiniz.
Önbelleğe alınabilir içerik
Aşağıdaki koşulların TÜMÜ doğruysa Cloud CDN yanıtları önbellekte depolar:
- İstek bir GET isteğidir. 
- Yanıtın durum kodu - 200,- 203,- 204,- 206,- 300,- 301,- 302,- 307,- 308,- 404,- 405,- 410,- 421,- 451veya- 501.
- Yanıt, - max-ageveya- s-maxageyönergesi içeren bir- Cache-Controlüstbilgisine ya da gelecekteki bir zaman damgası içeren bir- Expiresüstbilgisine sahip.
- Yanıt, - Agebaşlığına veya açık bir- publicyönergesi içeren- Cache-Controlbaşlığına sahip.
- Yanıtın boyutu 10 MiB'ten küçük veya bu boyuta eşit olmalıdır. 
Ayrıca aşağıdakilerden HİÇBİRİ doğru olmamalıdır:
- Yanıtın - Set-Cookiebaşlığı var
- Yanıt, - Accept,- Accept-Encoding,- Access-Control-Request-Headers,- Access-Control-Request-Method,- Origin,- Sec-Fetch-Dest,- Sec-Fetch-Mode,- Sec-Fetch-Site,- X-Goog-Allowed-Resources,- X-Origin,- RSC,- Next-Router-State-Tree,- Next-Router-Prefetchveya- Next-Router-Segment-Prefetchdışında bir değere sahip- Varybaşlığı içeriyor.
- Yanıtta - no-storeveya- privateyönergesini içeren bir- Cache-Controlüstbilgisi var.
- İstek, - no-storeyönergesi içeren bir- Cache-Controlbaşlığına sahip.
- Yanıt açık bir önbellek kontrol yönergesi içermediği sürece istekte - Authorizationüstbilgisi bulunur.
Önbellek kontrolü yönergeleriyle davranışı özelleştirme
Next.js
Next.js, bir dizi faktöre bağlı olarak önbellek kontrolü yönergelerini örtülü olarak ayarlar. Ancak, next.config.js dosyanızda üstbilgiyi manuel olarak ayarlayarak bu ayarları geçersiz kılabilirsiniz. Örneğin, bir sayfanın Cloud CDN'de önbelleğe alınmadığından emin olmak için:
  /** @type {import('next').NextConfig} */
  const nextConfig = {
      headers: async () => [{
          source: "/YOUR_PRIVATE_PAGE",
          headers: [{
              key: "Cache-Control",
              value: "private"
          }],
      }],
  };
Angular
Angular SSR, kutudan çıkarıldığında açıkça belirtilmiş cache-control yönergeleri ayarlamaz. Sunucu rotalarınızda cache-control üstbilgilerini belirterek kendi üstbilgilerinizi ekleyebilirsiniz. Örneğin, Cloud CDN'nin tüm sayfaları bir saat boyunca önbelleğe almasına izin vermek için:
import { RenderMode, ServerRoute } from '@angular/ssr';
export const serverRoutes: ServerRoute[] = [
  {
    path: '**',
    renderMode: RenderMode.Prerender,
    headers: {
      'Cache-Control': 'public, max-age=3600',
    }
  }
];
Veya belirli bir sayfanın önbelleğe alınmamasını sağlamak için:
import { RenderMode, ServerRoute } from '@angular/ssr';
export const serverRoutes: ServerRoute[] = [
  // ... other routes
  {
    path: 'YOUR_PRIVATE_PAGE',
    renderMode: RenderMode.Server,
    headers: {
      'Cache-Control': 'private',
    }
  }
];
Uyum sağlanan yönergeler
Firebase'in App Hosting Cloud CDN örneği aşağıdaki önbellek kontrolü yönergelerine uyar:
| Yönerge | İstek | Yanıt | 
|---|---|---|
| no-store | İsteklerde mevcut olduğunda yanıt önbelleğe alınmaz. | no-storeiçeren yanıtlar önbelleğe alınmaz. | 
| no-cache | İstemcilerin, kaynağa yeniden doğrulama başlatmasını veya bunu zorlamasını önlemek için no-cacheistek yönergesi yoksayılır. | no-cacheiçeren bir yanıt önbelleğe alınır ancak sunulmadan önce kaynakla yeniden doğrulanması gerekir. | 
| public | Yok | Bu yönerge, önbelleğe alınabilirlik için gerekli değildir ancak proxy'ler tarafından önbelleğe alınması gereken içerikler için bu yönergeyi eklemek en iyi uygulamadır. | 
| private | Yok | privateyönergesi içeren bir yanıt, başka bir şekilde önbelleğe alınabilir olarak kabul edilse bile Cloud CDN tarafından önbelleğe alınmaz. İstemciler (ör. tarayıcılar) sonucu önbelleğe almaya devam edebilir. Yanıtların önbelleğe alınmasını engellemek içinno-storekullanın. | 
| max-age=SECONDS | max-ageisteği yönergesi yoksayılır. Önbelleğe alınmış bir yanıt, bu üstbilgi istekte yer almamış gibi döndürülür. | max-ageyönergesini içeren bir yanıt, tanımlanan SECONDS süresine kadar önbelleğe alınır. | 
| s-maxage=SECONDS | Yok | s-maxageyönergesini içeren bir yanıt, tanımlanan SECONDS süresine kadar önbelleğe alınır. Hemmax-agehem des-maxagevarsa Cloud CDN tarafındans‑maxagekullanılır. Bu yönergeye sahip yanıtlar eski olarak sunulmaz.s-max-age(iki kısa çizgi), önbelleğe alma amacıyla geçerli değil. | 
| max-stale=SECONDS | max-staleistek yönergesi, istemcinin kabul etmeye istekli olduğu maksimum eski (saniye cinsinden) verileri belirler. Cloud CDN bunu dikkate alır ve yalnızca yanıtın eskime süresimax-staleyönergesinden kısaysa eski bir önbelleğe alınmış yanıt döndürür. Aksi takdirde, isteği sunmadan önce yeniden doğrular. | Yok | 
| stale-while-revalidate=SECONDS | Yok | Yeniden doğrulama eşzamansız olarak gerçekleşirken stale-while-revalidateiçeren bir yanıt, istemciye en fazla SECONDS boyunca sunulur. | 
| must-revalidate | Yok | must-revalidateiçeren bir yanıt, süresi dolduktan sonra kaynak sunucuyla yeniden doğrulanır. Bu yönergeye sahip yanıtlar eski olarak sunulmaz. | 
| proxy-revalidate | proxy-revalidateiçeren bir yanıt, süresi dolduktan sonra kaynak sunucuyla yeniden doğrulanır. Bu yönergeye sahip yanıtlar eski olarak sunulmaz. | |
| no-transform | Yok | Cloud CDN tarafından herhangi bir dönüşüm uygulanmaz. | 
Önbelleğe alınmış ve alınmamış trafiği ölçme
App Hosting konsolunun Kullanım sekmesindeki "Cloud CDN - Giden Bant Genişliği" grafiğinde, sunulan önbelleğe alınmış ve alınmamış baytlar gösterilir ve her dağıtım için bir işaret bulunur. Bu grafiği, önbellek optimizasyonu çalışmalarınızın etkinliğini ölçmek için kullanabilirsiniz.
Rota tabanlı izleme ile web uygulamanızdaki belirli rotaların önbellek isabet oranını da görüntüleyebilirsiniz.