Technologie i infrastruktura → CDN i buforowanie treści
CDN i buforowanie treści
1) Dlaczego CDN i pamięć podręczna
CDN (Content Delivery Network) zmniejsza RTT i TTFB, odciąża pochodzenie i stabilizuje P95/P99 ogony. W przypadku iGaming/fintech są to:- Szybki pierwszy bajt do katalogu, aktywa, promo, media.
- Maksymalna stabilność (turnieje/wydarzenia) bez wybuchowego wzrostu zdolności pochodzenia.
- Oszczędności i przewidywalne koszty.
- Kontrola geograficzna (regulacja, licencjonowanie treści).
2) Podstawowe strategie buforowania
2. 1 Odpowiedzi, które mogą być buforowane
Statyczny: JS/CSS/fonts/ikony - długi TTL (30-365 dni) + plik-hash w nazwie.
Półstacjonarne: katalogi gier, banery, konfiguracje - TTL od minut do godzin + 'stale-while-revalidate'.
API GET/HEAD: katalogi, ceny, lidery - krótki TTL (5-120 sekund) z odpowiednim kluczem.
2. 2 Tytuły
„Cache-Control: public, max-age = 600, stale-while-revalidate = 300, stale-if-error = 600”
'ETag '/' Last-Modified' dla przedłużenia ważności.
„Sterowanie zastępcze ”/„ CDN-Cache-Control” (jeśli usługodawca obsługuje).
Dla danych prywatnych: „Cache-Control: no-store” (nie tylko „no-cache”).
2. 3 Klucz pamięci podręcznej
Podstawa: metoda + ścieżka URL + parametry zapytania, które wpływają na odpowiedź.
Dodatki: 'Accept-Encoding' (gzip/br), 'Accept' (json/webp/avif), locale ('Accept-Language'), region/waluta, jeśli zawartość jest dotknięta.
Unikaj przypadkowych nagłówków (ciasteczek, identyfikatorów) w kluczu.
3) Różne zarządzanie i pliki cookie
'Vary: Accept-Encoding, Accept, Accept-Language' to minimalny wymagany zestaw.
Usuwanie ciasteczek CDN dla ścieżek buforowanych: usuń wszystko z wyjątkiem białych (np. flag AB).
Przenoszenie identyfikatorów sesji do subdomen/ścieżek poza zawartość buforowaną.
4) TTL i wzory świeżości
Statyczny immutable: 'Cache-Control: public, max-age = 31536000, immutable' + wersje w nazwie pliku.
SWRO/SIE: „stale-while-revalidate” i „stale-if-error” - UX-resistance-in-origin problems.
Podzielony TTL: główna lista gier - 30-60 sekund; karta gry - 5-10 minut; banery - 30 min.
API mix: podstawowe książki referencyjne - 5-30 min; waluty/limity - 1-5 min; lider - 2-15 sekund.
5) Tarcza Tiercaching-origin
Wielopoziomowe/regionalne bufory: Wnioski, które przechodzą przez krawędź, są zwalczane w regionalnej „tarczy” zamiast pochodzenia.
Zalety: mniej MISS na pochodzenie, wygładzanie „burze”, tańsze wyjście.
Zgrupować płyty według geo o najwyższej gęstości ruchu (UE, TR, BR, LATAM).
6) Niepełnosprawność i ocieplenie
Oczyścić ścieżką/prefiks/tag: tagi są wygodne do czyszczenia partii (wydanie katalogu, kampania promocyjna).
Miękka czystka (grace): zaznacz zawartość przestarzałą, ale oddaj ją przed przyjazdem nowego.
Rozgrzewka (prewarm): scenariusze podczas wydania/przed turniejem: sondaż popularnych ścieżek, generowanie sprites i wariacje obrazów.
Niepełnosprawność kanaryjska: częściowo czyste, walidacji mierników/błędów, a następnie rozszerzyć.
7) Zasady i funkcje krawędzi (Pracownicy/Funkcje)
Nadpisywanie odpowiedzi: dodawanie głowic pamięci podręcznej, normalizacja 'Vary', usuwanie ciasteczek.
Routing Geo/ASN: przekierowania, lokalizacja/waluta według kraju.
Podpisane adresy URL/Nagłówki chronionych nośników/obiektów.
Badania krawędzi AB: światło, brak zwiększenia obciążenia pochodzenia (tylko dla statycznych/półstatycznych).
Krawędź-obliczenie: jasny widget/render personalizacji, ale nie gorąca ścieżka płatności.
8) Obrazy i filmy
8. 1 Zdjęcia
Autokonwersja: WebP/AVIF podczas 'Akceptuj' klienta; „Różnica: Akceptuj”.
Wymiar na krawędzi: parametry „w/h/fit/quality”; przygotować ustawienia wstępne (karta, baner, podgląd).
Sprites i SVG optymalizacja, leniwe załadunek z przodu.
8. 2 Wideo/strumień
HLS/DASH z krótkimi segmentami (2-4 sekundy), pokrywającymi się listami odtwarzania.
Wstępne obciążenie najbliższych segmentów i „ciągły błąd”.
Dla zakładów na żywo - utrzymać segmenty w regionalnej tarczy do cięcia TTFB.
9) API za pośrednictwem CDN
Cacheable GET: Dodaj 'Cache-Control' i odpowiedni klucz (lokalny/waluta/region).
Warunkowy GET: 'ETag '/' If-None-Match' zmniejsza bajty i TTFB.
POST/PUT: nie buforowany; możliwe jest podłączenie odpowiedzi POST tylko w oparciu o wyraźne zasady i idempotentne semantyki (rzadko uzasadnione).
Ograniczenie tempa/WAF na krawędzi: Zmniejsza ogony poprzez odcięcie botów/anomalii.
10) Bezpieczeństwo, dostęp i zgodność
Zarządzanie WAF/bot: podpisy, heurystyka behawioralna, ochrona przed skanerami bonusowymi.
Podpisane adresy URL/Nagłówki dla mediów i prywatnych plików do pobrania.
mTLS - pochodzenie przez IP - wykaz zezwoleń.
RODO/PII/PCI: nie przechowywać danych wrażliwych; API z osobistymi odpowiedziami - „bez sklepu”.
Geosiltry/blokady na krawędzi zgodnie z wymogami rynkowymi.
11) Sieć i protokoły
Włącz HTTP/2/3 na CDN, wznowienie TLS i zszywanie OCSP.
Brotli (br) dla formatów tekstowych, gzip - fallback.
TCP/QUIC tuning (u dostawcy) → mniejszy wpływ strat, zwłaszcza w sieci komórkowej.
12) Obserwowalność i SLO dla CDN
Mierniki (krawędź i osłona):- Hit Ratio (ogólnie i przez prefiks), Origin Offload.
- TTFB P50/P95/P99 według regionu/ASN.
- Przepustowość/błędy według kodów statusu (krawędź/pochodzenie).
- Opóźnienie w oczyszczeniu.
- Obraz przekształca opóźnienie (jeśli używasz rozmiaru krawędzi).
- Katalog gier: TTFB P95 ≤ 150 ms, Offload ≥ 85%.
- Media (obrazy): Współczynnik trafienia ≥ 90%, błędy transformacji <0. 1%.
- API GET „katalogi”: TTFB P95 ≤ 200 ms, Revalization Hit ≥ 60%.
13) FinOps: wartość pamięci podręcznej
Offload = mniej niż wyjście z pochodzenia → bezpośrednie $ korzyści.
Wielopoziomowy + tarcza wyciąć „burze” i obciążenie MISS.
Optymalizacja obrazu (AVIF/WebP/resize) zapewnia największe oszczędności ruchu.
Wagi kontroli P95 odpowiedzi i „drogie MISS” (bajty × liczba × region).
14) Konfiguracje i zasady (fragmenty)
14. 1 Tytuły pochodzenia (Nginx)
nginx статика с версионированием location ~ \.(css js woff2)$ {
add_header Cache-Control "public, max-age=31536000, immutable";
}
полустатика каталога location /catalog/ {
add_header Cache-Control "public, max-age=300, stale-while-revalidate=600, stale-if-error=600";
add_header Vary "Accept, Accept-Language";
}
14. 2 Normalizacja klucza na krawędzi (pseudo)
js addRule((req) => {
// очищаем шум req.cookies.clearExcept(['ab', 'locale']);
// ключ = method+path+критичные query key = `${req.method}:${req.path}?lang=${q.lang}¤cy=${q.cur}`;
req.setCacheKey(key);
req.setVary(['Accept', 'Accept-Encoding', 'Accept-Language']);
});
14. 3 Podpisany adres URL (pomysł)
/media/{path}?exp=1735707600&sig=HMAC_SHA256(secret, path exp ip)
На edge: проверка exp и подписи, опционально привязка к IP/ASN.
15) Procesy uwalniania i eksploatacji
Haki zwolnienia: automatyczne oczyszczanie przez tagi/prefiksy po wdrożeniu.
Lista wstępna: górne ścieżki w ruchu/konwersji - rozgrzewka z góry.
Katalog matrycy TTL: uzgodniony z produktem/marketingiem.
Incydenty: wraz ze wzrostem MISS/TTFB - włączyć ciągły błąd, „strzelać” drogie transformacje na krawędzi, aż pochodzenie stabilizuje.
16) Lista kontrolna wdrażania
1. Mapa treści (statyczna/półstacjonarna/API) i matryca TTL.
2. Poprawne 'Cache-Control', 'ETag/Last-Modified', 'Vary'.
3. Klucz pamięci podręcznej bez „hałasu”, striptiz ciasteczek, whitelistów.
4. Buforowanie wielopoziomowe + tarcza pochodzenia według regionu.
5. Oczyścić za pomocą tagów/prefiksów, miękkiej czystki, przedwczesnych procedur.
6. Funkcje krawędzi: normalizacja, geo-logika, podpisane adresy URL.
7. Optymalizacja obrazu (WebP/AVIF/rozmiar), segmenty HLS dla wideo.
8. Filtry WAF/bot, ograniczenia geograficzne, mTLS do pochodzenia.
9. Płyty SLO: TTFB, Hit Ratio, Offload, błędy transformacji.
10. FinOps raporty: $/GB, drogi MISS, egress wiodących regionów.
17) Anty-wzory
'no-cache' jest wszędzie 'na wszelki wypadek'.
Klucz pamięci podręcznej zawiera wszystkie zapytania/nagłówki → zerowy współczynnik trafienia.
Odpowiedzi zależne od plików cookie dla statycznych (łamie cały pamięć podręczną).
Oczyścić cały CDN na każdym wydaniu.
Długie przemiany synchroniczne na krawędzi podczas szczytów.
Brak „stale-while-revalidate ”/„ stale-if-error” - ostra degradacja UX.
Buforowanie danych osobowych/odpowiedzi bez „no-store”.
18) Kontekst iGaming/fintech: uwagi praktyczne
Turnieje/wydarzenia: krótki TTL na tablicach (2-10 sekund) + SWR; przedpremierowe karty do gry i banery.
Geo-licencjonowanie: blokady krawędzi/przekierowania według kraju, waluta/lokalizacja w kluczu pamięci podręcznej.
Promo i kupony: buforujemy banery/warunki, ale nie osobiste ograniczenia.
Odpowiedzialne gry: strony polityki/limitów - półstacjonarne z SWR; dane osobowe - tylko „brak sklepu”.
Haki internetowe PSP/KYC: nie za pośrednictwem CDN, ani krawędzi-pass-through bez pamięci podręcznej i z trudnymi czasami.
Wynik
Silna strategia CDN to prawidłowe nagłówki i klucz pamięci podręcznej, wielopoziomowa/tarcza do redukcji MISS, funkcje krawędzi do normalizacji i ochrony, niepełnosprawność/ocieplenie dla szybkich wydań i obserwowalność z SLO i FinOp. Przestrzegając tych zasad, będziesz miał szybki i ekonomiczny obwód, który wytrzyma szczyty i sprawi, że TTFB będzie przewidywalne dla użytkowników i partnerów.