CDN und Edge-Caching
CDN und Edge-Caching
1) Ziele
CDN (Content Delivery Network) reduziert die Latenz und die Belastung des Ursprungs: Es zwischenspeichert statische und bedingt dynamische Inhalte auf Edge-Knoten, bietet Skalierung, Robustheit und Sicherheit (DDoS/WAF) und fügt Edge-Logik hinzu (Umschreiben von Antworten/Anfragen, Authentifizierung, A/B).
2) Cache-Modell und Schlüssel
Ключ кеша = `scheme + host + path +?(selected query params) + headers (Vary)`
Empfohlen:- Normalisieren Sie die Abfrage ('utm _' ausschließen,'v', 'lang', 'country' usw.).
- Minimieren Sie' Vary'(z.B. 'Vary: Accept-Encoding, Accept-Language'), vermeiden Sie' Vary:'.
- Für die API - der Schlüssel aus der Route + die Versionskennung (semver, hash, build id) + die gewünschten query/headers (z.B. 'X-Tenant').
- Für personalisierte Seiten - Edge-Segmentierung (per Cookie/Geo) oder Skip-Cache.
3) TTL-Richtlinien und Überschriften
Grundlegende Überschriften:- `Cache-Control: public, max-age=300, s-maxage=3600, stale-while-revalidate=60, stale-if-error=300`
- 'Surrogate-Control' (falls unterstützt) ist eine separate Richtlinie für das CDN, die sich vom Browser unterscheidet.
- „ETag “/„ Last-Modified“ - bedingte Anfragen (304) und Verkehrseinsparungen.
- Für privat: 'Cache-Control: privat, no-store', wenn nicht zwischengespeichert werden kann.
- APIs, die Cache zulassen: 'Cache-Control: public, s-maxage = 60' + Schlüssel laut Version.
Empfohlener Ansatz: „ewige“ Ressourcen (mit Fingerprint im Dateinamen) → 'max-age = 31536000, immutable'; „pages/JSON“ → kurz TTL + SWR.
4) Behinderung: purge/soft-purge
Purge durch URL: Punkt.
Purge by tag/key: Gruppenreinigung (verwenden Sie' Surrogate-Key: products: 42 category: food').
Soft-purge: Markiert den Inhalt mit „veraltet“, edge gibt stale vor Erhalt der neuen Version.
„Warm“ warm: Ziehen Sie nach dem Deploy die Hauptseiten aus den Regionen.
5) Edge-Leistungsmuster
Stale-While-Revalidate: schnelle Antwort mit einer „veralteten“ Kopie + Hintergrundaktualisierung.
Prefetch kritischer Ressourcen (preload, preconnect, dns-prefetch).
Kompression: gzip/br (für Text), zstd wenn CDN unterstützt wird.
HTTP/2/3 (QUIC): Multiplexing und weniger Latenz.
TLS-Sitzungsresumption und OCSP-Stapeln am Perimeter.
6) Bilder und Videos
Image optimization at edge: resize/format negotiation (`Accept: image/avif,webp`), авто-WebP/AVIF, DPR-варианты.
Lazy-load и responsive (`srcset`, `sizes`).
Video: HLS/DASH, fragmentierte MP4, Origin-Shield (zentraler Cache) zur Reduzierung von „Stürmen“.
Thumbnail-Dienste und signierte URLs für private Bilder.
7) Perimeter Sicherheit
WAF: OWASP-Regeln, Ländersperre/ASN, Rate-Limits mit Schlüssel (IP + Cookie + Token).
DDoS: L3/4 Scrubbing, L7-Checker, JS-Challenges/Turnstile.
Signierte URLs/Cookies für private Ressourcen (Videos/Berichte): TTL + HMAC/EdDSA.
Geo-Fencing und Compliance (z.B. Verbot von Regionen).
8) Edge-compute (Logik am Rand)
Fälle:- Personalisierung ohne Cache-Durchbruch: Segmente (A/B), Geo, Sprache am Rand und Inhalte sind zwischengespeichert.
- Umschreiben von Antworten/Überschriften, Weiterleitungen, AB-Splits.
- Tokenauthentifizierung: Überprüfung der JWT-Signatur, Bindung an den Schlüssel.
- Canary by cookie/percent: Ein Teil des Traffics geht in das neue Backend.
Beispiele für Technologien: Cloudflare Workers/Durable Objects, Fastly Compute @ Edge, AWS Lambda @ Edge.
9) Multi-CDN und globaler Umfang
Gründe: Abdeckung, SLA, Kosten, regionale Einschränkungen, Isolierung von Vorfällen.
GSLB/Traffic Steering: durch Geo/Latenz/reale Fehler; Gesundheitschecks von mehreren Vantage-Punkten.
Einheitliches Schlüssel-/Header-Schema (Surrogate-Key), synchronisierte Purge-Regeln.
Origin-Shield ist allen CDNs gemeinsam, um den Ursprung bei Behinderungen nicht zu „treffen“.
10) Logging und Metriken
Sammeln Sie:- Hit ratio (cache, CDN → edge/origin), byte hit ratio.
- Latency p50/p95/p99, Fehlerrate nach Code/Route.
- Ursprungsfette: RPS/Bytes/Fehler (Schutz vor übermäßigen Fehlern).
- Regionale Charts (nach POP/ASN/Land).
- Integration mit Observability: Prometheus (Pull über Exporteure), Grafana/OTel (Push aus Edge-Logs).
11) SEO и SPA/SSR
SEO-Seiten mit SWR und kurzer TTL - schnell und „frisch“.
Sitemap/Roboter - lange zwischenspeichern, aber Soft-Purge zulassen.
Service Worker: Offline-Caching, Prefetch kritischer Pfade, gezielte Updates.
12) Beispiele für Konfigurationen und Überschriften
12. 1 Cache-Control-Profile
Statik mit Fingerprint:
Cache-Control: public, max-age=31536000, immutable
HTML/SSR:
Cache-Control: public, max-age=60, s-maxage=600, stale-while-revalidate=60, stale-if-error=600
Surrogate-Control: max-age=600, stale-while-revalidate=120
API (zwischengespeicherte Vitrine):
Cache-Control: public, s-maxage=60
Vary: Accept-Encoding
12. 2 NGINX (Herkunft) - Normalisierung query/headers
nginx map $arg_utm_source $utm_skip { default 1; "" 0; }
map $args $normalized_args {
default "";
"~(^ &)v=([a-z0-9]+)(& $)" "v=$2";
}
proxy_cache_key "$scheme://$host$request_uri?$normalized_args";
add_header Surrogate-Key "product:{{id}} category:{{cat}}";
12. 3 Fastly VCL - Soft-Purge und Schlüssel
vcl sub vcl_recv {
set req. hash += req. http. host req. url. path;
set req. hash += querystring. decode(req. url, "v,lang");
if (req. method == "PURGE") {
if (req. http. Fastly-Soft-Purge) { softpurge; } else { purge; }
return (synth(200, "purged"));
}
}
sub vcl_deliver {
set resp. http. Surrogate-Key = "product:42 category:food";
}
12. 4 Cloudflare Workers - signierte URLs
js export default {
async fetch(req, env) {
const url = new URL(req. url);
if (url. pathname. startsWith("/private/")) {
const token = url. searchParams. get("token");
if (!token! verify(token, env. SIGNING_KEY)) return new Response("Forbidden", { status: 403 });
}
return fetch(req);
}
}
12. 5 Lambda @ Edge - Geo-Optionen
js exports. handler = async (event) => {
const req = event. Records[0].cf. request;
const country = req. headers['cloudfront-viewer-country']?.[0]?.value 'US';
if (country === 'DE') req. headers['accept-language'] = [{ key:'Accept-Language', value:'de' }];
return req;
};
13) Private Daten und APIs
Niemals private Antworten ohne Schlüsselisolierung zwischenspeichern (Per-User/Per-Token).
Verwenden Sie Signierte Cookies/Headers und 'Vary: Authorization' nur unter strenger Kontrolle (ansonsten Cache-Bust).
Sichere Alternative: Trennen Sie die öffentliche Schicht (zwischengespeichert) und private Includes (ESI/Edge-Komposition).
14) Geo/Inhaltsregeln
Lizenzbeschränkungen: Geo-Deny am Rand, Platzhalter statt Origin-Sperre.
Alter/Regulierung Banner - Rendering auf Edge (nicht durchbrechen Cache).
15) Anti-Muster
„No-Cache, No-Store“ für die gesamte Site → Verlust des CDN-Effekts.
„Vary“ durch instabile Überschriften (z.B. „User-Agent“) → Kardinalität.
Leert den gesamten Cache bei jeder Freigabe.
Kurze TTLs ohne SWR → „Sturm“ auf Herkunft.
Persönliche Seiten werden ohne Segmentierung/Schlüssel-Token zwischengespeichert.
Das Fehlen von Origin-Shield → mehrere parallele Fehler.
16) Implementierung Checkliste (0-45 Tage)
0-10 Tage
Ressourcen kategorisieren: Statik (immutable )/HTML/API.
Aktivieren Sie gzip/br, HTTP/2/3, Normalisierung query, 'Surrogate-Key'.
SWR/IFE und Basis-Purge eingeben.
11-25 Tage
Edge-Optimierung von Bildern (resize/format), origin-shield.
Signierte URLs für private Medien, WAF/DDoS-Profile.
Dashboards: Trefferverhältnis, Ursprungsfette, p95 von POP.
26-45 Tage
Multi-CDN oder GSLB-Strategie, Kanariengewichte am Umfang.
Edge-Compute für Segmentierung/AB/Geo, Soft-Purge durch Schlüssel.
Auto-Warm-Up und Purge-Integration in CI/CD.
17) Reifegradkennzahlen
Byte-Trefferverhältnis ≥ 85% für Statik ≥ 60% für HTML/bedingte Dynamik.
Herkunft RPS stabil bei Peaks (keine „Stürme“).
p95 TTFB um ≥ 30% in den wichtigsten Regionen reduziert.
% der Stale-Antworten bei Vorfällen> 90% (der Benutzer hat es kaum bemerkt).
Vollständige Purge-to-Key-Automatisierung in der Release-Pipeline.
18) Schlussfolgerung
Die effektive CDN-Schleife sind die Schlüssel/TTL/Varianten, die Disziplin der Behinderung und die Edge-Logik. Fügen Sie SWR/IFE, Origin-Shield, Medienoptimierung und strikte Sicherheit (WAF, signierte URLs) hinzu. Standardisieren Sie Ihre Metriken und integrieren Sie Purge in Ihre CI/CD - und Sie erhalten einen schnellen, sparsamen und nachhaltigen Umfang, bereit für Spitzenlasten und „schwarze Schwäne“.