Cloud CDN to kluczowy element App Hostingwsparcia dla Twojej aplikacji internetowej. Każde żądanie do backendu przechodzi najpierw przez Cloud CDN. Treści, które są już buforowane w CDN, są natychmiast przesyłane z powrotem do użytkownika, co pozwala uniknąć podróży do usługi Cloud Run, która uruchamia kod serwera aplikacji internetowej. Więcej informacji o ogólnych zaletach sieci CDN znajdziesz w witrynie web.dev.
Podstawowa konfiguracja Cloud CDN jest ustawiana przez App Hosting i nie można jej modyfikować. Istnieje jednak wiele sposobów na optymalizację zapisywania w pamięci podręcznej, aby zwiększyć szybkość wczytywania stron, zmniejszyć ilość treści niepochodzących z pamięci podręcznej, za które naliczane są opłaty, i zminimalizować ruch w Cloud Run.
Treści, które można przechowywać w pamięci podręcznej
Cloud CDN przechowuje odpowiedzi w pamięci podręcznej, jeśli WSZYSTKIE z tych warunków są spełnione:
- Żądanie to GET 
- Odpowiedź ma kod stanu - 200,- 203,- 204,- 206,- 300,- 301,- 302,- 307,- 308,- 404,- 405,- 410,- 421,- 451lub- 501.
- Odpowiedź zawiera nagłówek - Cache-Controlz dyrektywą- max-agelub- s-maxagealbo nagłówek- Expiresze znacznikiem czasu w przyszłości.
- Odpowiedź zawiera nagłówek - Agelub nagłówek- Cache-Controlz wyraźną dyrektywą- public.
- Rozmiar odpowiedzi nie przekracza 10 MiB. 
i ŻADNE z tych stwierdzeń nie jest prawdziwe:
- Odpowiedź zawiera nagłówek - Set-Cookie
- Odpowiedź zawiera nagłówek - Varyo wartości innej niż- 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-Prefetchlub- Next-Router-Segment-Prefetch.
- Odpowiedź zawiera nagłówek - Cache-Controlz dyrektywą- no-storelub- private.
- Żądanie zawiera nagłówek - Cache-Controlz dyrektywą- no-store.
- Żądanie ma nagłówek - Authorization, chyba że odpowiedź zawiera wyraźną dyrektywę kontroli pamięci podręcznej.
Dostosowywanie działania za pomocą dyrektyw sterowania pamięcią podręczną
Next.js
Next.js ustawia dyrektywy cache-control niejawnie na podstawie wielu czynników. Możesz jednak zastąpić te wartości, ręcznie ustawiając nagłówek w pliku next.config.js. Aby na przykład mieć pewność, że strona nie jest buforowana w Cloud CDN:
  /** @type {import('next').NextConfig} */
  const nextConfig = {
      headers: async () => [{
          source: "/YOUR_PRIVATE_PAGE",
          headers: [{
              key: "Cache-Control",
              value: "private"
          }],
      }],
  };
Angular
Angular SSR nie ustawia domyślnie jawnych dyrektyw cache-control. Możesz dodać własne, określając nagłówki cache-control w trasach serwera. Aby na przykład zezwolić Cloud CDN na zapisywanie w pamięci podręcznej wszystkich stron przez godzinę:
import { RenderMode, ServerRoute } from '@angular/ssr';
export const serverRoutes: ServerRoute[] = [
  {
    path: '**',
    renderMode: RenderMode.Prerender,
    headers: {
      'Cache-Control': 'public, max-age=3600',
    }
  }
];
Aby mieć pewność, że określona strona nie będzie przechowywana w pamięci podręcznej:
import { RenderMode, ServerRoute } from '@angular/ssr';
export const serverRoutes: ServerRoute[] = [
  // ... other routes
  {
    path: 'YOUR_PRIVATE_PAGE',
    renderMode: RenderMode.Server,
    headers: {
      'Cache-Control': 'private',
    }
  }
];
Obowiązujące dyrektywy
Instancja Cloud CDN w Firebase App Hostingprzestrzega tych dyrektyw sterowania pamięcią podręczną:
| Dyrektywa | Żądanie | Odpowiedź | 
|---|---|---|
| no-store | Jeśli ten parametr występuje w żądaniu, odpowiedź nie będzie przechowywana w pamięci podręcznej. | Odpowiedź z wartością no-storenie jest zapisywana w pamięci podręcznej. | 
| no-cache | Dyrektywa żądania no-cachejest ignorowana, aby zapobiec potencjalnemu inicjowaniu lub wymuszaniu ponownej weryfikacji przez klienty. | Odpowiedź z no-cachejest zapisywana w pamięci podręcznej, ale przed wyświetleniem musi zostać ponownie zweryfikowana w serwerze źródłowym. | 
| public | Nie dotyczy | Ta dyrektywa nie jest wymagana w przypadku możliwości buforowania, ale zalecamy jej dodanie w przypadku treści, które powinny być buforowane przez serwery proxy. | 
| private | Nie dotyczy | Odpowiedź z dyrektywą privatenie jest przechowywana w pamięci podręcznej Cloud CDN, nawet jeśli w innym przypadku byłaby uznawana za odpowiedź, którą można umieścić w pamięci podręcznej. Klienci (np. przeglądarki) mogą nadal przechowywać wynik w pamięci podręcznej. Użyjno-store, aby zapobiec buforowaniu wszystkich odpowiedzi. | 
| max-age=SECONDS | Dyrektywa żądania max-agejest ignorowana. Odpowiedź z pamięci podręcznej jest zwracana tak, jakby tego nagłówka nie było w żądaniu. | Odpowiedź z dyrektywą max-agejest przechowywana w pamięci podręcznej przez określony czas w SEKUNDACH. | 
| s-maxage=SECONDS | Nie dotyczy | Odpowiedź z dyrektywą s-maxagejest przechowywana w pamięci podręcznej przez określony czas w SEKUNDACH. Jeśli występują oba warunkimax-ageis-maxage, Cloud CDN używa warunkus‑maxage. Odpowiedzi z tą dyrektywą nie są serwowane jako nieaktualne.s-max-age(dwa łączniki) nie jest prawidłowym znakiem do celów buforowania. | 
| max-stale=SECONDS | Dyrektywa żądania max-staleokreśla maksymalną nieaktualność (w sekundach), którą klient jest gotów zaakceptować. Cloud CDN uwzględnia tę dyrektywę i zwraca nieaktualną odpowiedź z pamięci podręcznej tylko wtedy, gdy jej nieaktualność jest mniejsza niż dyrektywamax-stale. W przeciwnym razie przed obsłużeniem żądania ponownie sprawdza ważność. | Nie dotyczy | 
| stale-while-revalidate=SECONDS | Nie dotyczy | Klient otrzymuje odpowiedź z wartością stale-while-revalidateprzez maksymalnie SECONDS, podczas gdy ponowna weryfikacja odbywa się asynchronicznie. | 
| must-revalidate | Nie dotyczy | Odpowiedź z must-revalidatejest ponownie weryfikowana na serwerze pierwotnym po wygaśnięciu. Odpowiedzi z tą dyrektywą nie są serwowane jako nieaktualne. | 
| proxy-revalidate | Odpowiedź z proxy-revalidatejest ponownie weryfikowana na serwerze pierwotnym po wygaśnięciu. Odpowiedzi z tą dyrektywą nie są serwowane jako nieaktualne. | |
| no-transform | Nie dotyczy | Cloud CDN nie stosuje żadnych przekształceń. | 
Mierzenie ruchu z pamięci podręcznej i bez niej
Wykres „Cloud CDN – przepustowość wychodząca” na karcie Użycie w konsoliApp Hosting pokazuje bajty z pamięci podręcznej i bez niej oraz ma oznaczenie dla każdego wdrożenia. Za pomocą tego wykresu możesz mierzyć skuteczność optymalizacji pamięci podręcznej.
W aplikacji internetowej możesz też wyświetlić współczynnik trafień w pamięci podręcznej dla konkretnych tras za pomocą funkcji Monitorowanie oparte na trasach.