CDN

Rozproszona sieć serwerów dostarczająca treści z lokalizacji najbliższej użytkownikowi. Przyspiesza ładowanie stron i odciąża serwer źródłowy.

CDN (Content Delivery Network) to rozproszona geograficznie sieć serwerów, które przechowują kopie Twoich treści i serwują je użytkownikowi z lokalizacji położonej najbliżej niego. Zamiast zmuszać kogoś z Warszawy do pobierania obrazków z serwera w Teksasie, CDN podaje je z węzła w Polsce albo Niemczech. Efekt: krótszy czas ładowania, mniejsze opóźnienie (latency) i serwer źródłowy (origin), który nie pada przy pierwszym większym ruchu.

Jak to działa

Pojedyncze serwery CDN nazywamy PoP (Point of Presence) albo edge servers — bo stoją „na brzegu” sieci, blisko użytkownika. Gdy ktoś otwiera Twoją stronę, statyczne zasoby (zdjęcia, CSS, JS, pliki wideo) lecą z najbliższego węzła, a nie z origin. Przy pierwszym żądaniu edge pobiera plik z origin i go cache’uje (cache miss), a kolejni użytkownicy z okolicy dostają go już z pamięci podręcznej (cache hit) — błyskawicznie.

O tym, jak długo plik leży w cache, decyduje nagłówek Cache-Control oraz TTL (Time To Live). Nowoczesne CDN-y robią dużo więcej niż samo cache’owanie: kompresują pliki (Brotli, gzip), terminują TLS, działają jako warstwa ochrony przed atakami DDoS i potrafią uruchamiać kod na brzegu (edge functions/workers).

Przykład z praktyki

Najpopularniejszy darmowy wariant to Cloudflare. Przepinasz nameservery domeny na Cloudflare, włączasz proxy (pomarańczowa chmurka) i Twój ruch idzie przez ich sieć bez dotykania kodu aplikacji. Inni gracze to Fastly, Amazon CloudFront, Akamai czy bunny.net.

Czy plik przyszedł z cache, sprawdzisz w nagłówkach odpowiedzi:

curl -I https://twojadomena.pl/style.css

Szukasz cf-cache-status: HIT (Cloudflare) albo X-Cache: Hit (CloudFront). MISS oznacza, że edge musiał sięgnąć do origin.

Częste błędy i mity

  • „CDN przyspieszy wszystko” — nie. Treści dynamiczne (spersonalizowane, generowane per request) zwykle nie powinny być cache’owane. CDN świeci na statykach.
  • Cache, który nie chce zniknąć — wgrywasz nowy style.css, a użytkownicy widzą stary, bo siedzi w cache. Rozwiązanie: cache busting (np. style.css?v=2 albo hash w nazwie pliku) lub ręczny purge.
  • Cache’owanie wrażliwych danych — ustawienie publicznego cache na endpoint z danymi zalogowanego usera potrafi wyświetlić cudze dane obcej osobie. Klasyk i koszmar.

Pojęcia powiązane

cache, origin server, latency, TTL, Cache-Control, edge computing, DNS, DDoS, TLS, reverse proxy.