GH GambleHub

CDN i buforowanie krawędzi

CDN i buforowanie krawędzi

1) Cele

CDN (Content Delivery Network) zmniejsza opóźnienie i obciążenie pochodzenia: buforuje statyczną i warunkowo dynamiczną zawartość w węzłach krawędziowych, zapewnia skalę, stabilność i bezpieczeństwo (DDoS/WAF), dodaje logikę krawędzi (odpowiedzi/żądania pisania, uwierzytelnianie, A/B).

2) Model pamięci podręcznej i klucze

Клий кеба = 'scheme + host + path +? (wybrane parametry zapytania) + headers (Vary)'

Zalecane:
  • Normalizować zapytanie ('utm _' wykluczyć, pozostawić' v ',' lang ',' country ', itp.).
  • Zminimalizuj 'Vary' (na przykład 'Vary: Accept-Encoding, Accept-Language'), unikaj 'Vary:'.
  • Dla API - klucz z identyfikatora trasy + (semver, hash, build id) + niezbędne zapytanie/nagłówki (na przykład 'X-Tenant').
  • Dla spersonalizowanych stron - segmentacja krawędzi (przez cookie/geo) lub Skip-Cache.

3) Polityka i nagłówki TTL

Pozycje bazowe:
  • „Cache-Control: publiczny, maksymalny wiek = 300, s-maxage = 3600, stale-while-revalidate = 60, stale-if-error = 300”
  • „Sterowanie zastępcze” (jeżeli jest obsługiwane) jest odrębną polityką dla CDN innych niż przeglądarka.
  • „ETag ”/„ Last-Modified” - wnioski warunkowe (304) i oszczędności ruchu.
  • W przypadku osób prywatnych: „Cache-Control: private, no-store”, jeśli nie jest buforowany.
  • API pozwalające na pamięć podręczną: 'Cache-Control: public, s-maxage = 60' + klucz wersji.

Zalecane podejście: zasoby „wieczne” (z odciskiem palca w nazwie pliku) → „max-age = 31536000, immutable”; „strony/JSON” → krótki TTL + SWR.

4) Niepełnosprawność: oczyszczanie/miękkie oczyszczanie

Purge by URL: pointwise.
Purge by tag/key: group purges (use 'Surrogate-Key: products: 42 category: food').
Soft-purge: znaczniki treści „przestarzałe”, krawędź daje stale aż do otrzymania nowej wersji.
„Ciepłe” ocieplenie: po wdrożeniu, wyciągnij główne strony z regionów.

5) Wzory wydajności krawędzi

Stale-While-Revalidate: szybka odpowiedź z „przestarzałą” kopią + aktualizacją tła.
Prefetch zasobów krytycznych (preload, preconnect, dns-prefetch).
Kompresja: gzip/br (dla tekstu), zstd jeśli obsługiwany jest CDN.
HTTP/2/3 (QUIC): multipleksowanie i mniej opóźnień.
Wznowienie sesji TLS i zszywanie OCSP na obwodzie.

6) Obrazy i filmy

Optymalizacja obrazu na krawędzi: resize/format negotiate ('Accept: image/avif, webp'), авта-WebP/AVIF, DPR-варианта.
Ładunek leniwy („srcset”, „rozmiary”).
Wideo: HLS/DASH, rozdrobniony MP4, tarcza pochodzenia (centralna pamięć podręczna) w celu zmniejszenia burzy.
Miniaturowe usługi i podpisane adresy URL dla prywatnych obrazów.

7) Bezpieczeństwo na obwodzie

WAF: zasady OWASP, blokowanie kraju/ASN, limity stawek z kluczem (IP + ciasteczko + token).
DDoS: szorowanie L3/4, kontrolery L7, wyzwania JS/turnstile.
Podpisane adresy URL/pliki cookie dla zasobów prywatnych (wideo/raporty): TTL + HMAC/EdDSA.
Ogrodzenia geograficzne i zgodność (na przykład zakazanie regionów).

8) Obliczanie krawędzi (logika na krawędzi)

Sprawy:
  • Personalizacja bez łamania pamięci podręcznej: segmenty (A/B), geo, język na krawędzi i zawartość jest buforowana.
  • Pisanie odpowiedzi/tytułów, przekierowań, podziałów AB.
  • Uwierzytelnianie oparte na tokenie: weryfikacja podpisu JWT, powiązanie klucza.
  • Canary przez ciasteczko/procent: część ruchu do nowego backendu.

Przykłady technologii to Cloudflare Workers/Trwałe obiekty, Fast Compute @ Edge, AWS Lambda @ Edge.

9) Multi-CDN i globalny obwód

Przyczyny: zasięg, SLA, koszty, ograniczenia regionalne, izolacja incydentów.
GSLB/Traffic Steering: na geo/opóźnienie/rzeczywiste błędy; kontrole zdrowotne z wielu punktów obserwacyjnych.
Schemat pojedynczego klucza/nagłówka (Surrogate-Key), zsynchronizowane zasady oczyszczania.
Tarcza pochodzenia jest powszechna dla wszystkich CDN, aby nie „uderzyć” pochodzenia z niepełnosprawnościami.

10) Pozyskiwanie drewna i mierniki

Zbierz:
  • Współczynnik trafienia (pamięć podręczna, CDN → krawędź/pochodzenie), współczynnik trafienia bajtów.
  • Latency p50/p95/p99, wskaźnik błędów według kodu/trasy.
  • Źródła: RPS/bajty/błędy (ochrona przed zbędnymi brakami).
  • Wykresy regionalne (według POP/ASN/kraj).
  • Zintegruj się z obserwowalnością: Prometeusz (wyciągnąć przez eksporterów), Grafana/OTel (push z kłód krawędzi).

11) SEO - SPA/SSR

Strony SEO z SWR i krótkim TTL są szybkie i świeże.
Mapa strony/roboty - buforujemy przez długi czas, ale pozwalamy na miękkie oczyszczenie.
Pracownik serwisowy: buforowanie offline, prefetch ścieżek krytycznych, aktualizacje docelowe.

12) Konfiguracje próbki i nagłówki

12. 1 Profile kontroli pamięci podręcznej

Statyczny z odciskiem palca:

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 (sklep buforowany):

Cache-Control: public, s-maxage=60
Vary: Accept-Encoding

12. 2 NGINX (pochodzenie) - normalizacja zapytań/nagłówków

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 Szybko VCL - miękkie oczyszczanie i klucze

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 Pracownicy w chmurze - podpisane adresy URL

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 - Opcje Geo

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) Dane prywatne i API

Nigdy nie buforuj prywatnych odpowiedzi bez izolacji kluczy (per-user/per-token).
Użyj podpisanych plików cookie/nagłówki i 'Vary: Autoryzacja' w ścisłej kontroli (inaczej - cache-bust).
Bezpieczna alternatywa: oddzielna warstwa publiczna (buforowana) i prywatne inkluzje (skład ESI/krawędzi).

14) Zasady geo/treści

Ograniczenia licencyjne: geo-odmowa na krawędzi, pośredników zamiast blokowania pochodzenia.
Wiek/banery regulacyjne - render na krawędzi (nie punch cache).

15) Anty-wzory

'no-cache, no-store' dla całego miejsca → utrata efektu CDN.
'Vary' na niestabilnych nagłówkach (na przykład 'User-Agent') → kardynalność.
Oczyścić cały pamięć podręczną na każdym wydaniu.
Krótkie TTL bez SWR → burza do pochodzenia.
Osobiste strony są buforowane bez segmentacji/token kluczy.
Brak tarczy pochodzenia → wiele równoległych braków.

16) Lista kontrolna wdrażania (0-45 dni)

0-10 dni

Kategoria zasobów: niezmienne/HTML/API.
Włącz gzip/br, HTTP/2/3, normalizację zapytań, 'klucz zastępczy'.
Wprowadź SWR/IFE i oczyszczenie podstawy.

11-25 dni

Optymalizacja obrazu krawędzi (rozmiar/format), tarcza pochodzenia.
Podpisane adresy URL dla mediów prywatnych, profile WAF/DDoS.
Deski rozdzielcze: wskaźnik trafienia, pobrania pochodzenia, p95 przez POP.

26-45 dni

Strategia multi-CDN lub GSLB, wagi kanarkowe na obwodzie.
Krawędź-obliczenie dla segmentacji/AB/geo, miękkie-purge przez klawisze.
Automatyczne ocieplenie i oczyszczanie w CI/CD.

17) Wskaźniki zapadalności

Współczynnik trafienia bajtów ≥ 85% dla statycznej, ≥ 60% dla dynamiki HTML/warunkowej.
Pochodzenie RPS stabilne w szczytach (brak „burz”).
p95 TTFB zmniejszyło się o ≥ 30% w głównych regionach.
% stałych odpowiedzi na incydenty> 90% (użytkownik ledwo zauważył).
Kompletna automatyzacja kluczy do oczyszczania rurociągów.

18) Wniosek

Skutecznym układem CDN są klucze/TTL/opcje, dyscyplina niepełnosprawności i logika krawędzi. Dodaj SWR/IFE, tarczę pochodzenia, optymalizację mediów i silne bezpieczeństwo (WAF, podpisane adresy URL). Standaryzuj mierniki i zintegruj czystkę z CI/CD - i otrzymasz szybki, ekonomiczny i stabilny obwód, gotowy do obciążeń szczytowych i czarnych łabędzi.

Contact

Skontaktuj się z nami

Napisz do nas w każdej sprawie — pytania, wsparcie, konsultacje.Zawsze jesteśmy gotowi pomóc!

Telegram
@Gamble_GC
Rozpocznij integrację

Email jest wymagany. Telegram lub WhatsApp są opcjonalne.

Twoje imię opcjonalne
Email opcjonalne
Temat opcjonalne
Wiadomość opcjonalne
Telegram opcjonalne
@
Jeśli podasz Telegram — odpowiemy także tam, oprócz emaila.
WhatsApp opcjonalne
Format: kod kraju i numer (np. +48XXXXXXXXX).

Klikając przycisk, wyrażasz zgodę na przetwarzanie swoich danych.