Przejdź do treści
Architektura 7 min czytania

CDN dla sklepu B2B z dużym katalogiem - Cloudflare, BunnyCDN, Fastly

CDN to jedna z niewielu inwestycji w infrastrukturę, które dają mierzalny ROI w pierwszym tygodniu. Sklep B2B z 50 tys. produktów i 5-10 zdjęć per produkt to setki gigabajtów assets, które muszą się ładować szybko, blisko klienta, bez obciążania serwera. CDN to ogarnia. Pytanie tylko który, jak skonfigurowany, za jakie pieniądze.

Jakub Owsianka Autor
Zaktualizowano:
Okladka artykulu: CDN dla sklepu B2B z dużym katalogiem - Cloudflare, BunnyCDN, Fastly (kategoria: Architektura)
Okladka artykulu: CDN dla sklepu B2B z dużym katalogiem - Cloudflare, BunnyCDN, Fastly (kategoria: Architektura)
Spis treści (9)

W skrócie

  • 1. CDN od dnia zero - nawet dla małego sklepu. Free tier Cloudflare wystarczy na start.
  • 2. Cloudflare - najpopularniejsze, free tier, DDoS, WAF wbudowane
  • 3. BunnyCDN - taniej, polski/europejski hosting, popularne wśród polskich e-commerce
  • 4. Fastly - drogie, programowalne edge (VCL), dla skomplikowanych use-case'ów
  • 5. AWS CloudFront - dla projektów na AWS
  • 6. Co cachować na CDN: obrazy, CSS, JS, fonty + opcjonalnie HTML dla niezalogowanych

Co konkretnie robi CDN

CDN to sieć serwerów (edge nodes) rozmieszczonych geograficznie. Klient z Krakowa pobiera obrazy z node'a we Frankfurcie (najbliższy). Bez CDN - pobiera z twojego serwera (np. Warszawa lub gorzej, USA).

Efekty:

1. Latency. Edge node we Frankfurcie odpowiada Krakowowi w 10-20ms. Serwer w USA - 100-200ms. Dla obrazów to różnica między „strona ładuje się" a „strona zacięta".

2. Bandwidth offload. Bez CDN - każda odsłona strony pobiera obrazy z twojego serwera. 1000 odsłon × 5 MB obrazów = 5 GB ruchu wychodzącego. Z CDN - tylko pierwsze pobranie z origin, reszta z edge cache.

3. DDoS protection. Edge nodes absorbują ruch zalewający atakami. Twój serwer nawet nie wie, że atak był.

4. WAF (Web Application Firewall). Blokowanie podejrzanych requestów (SQL injection, XSS, bot scrapers) na poziomie edge.

5. HTTP/2, HTTP/3, Brotli. Bez konfiguracji własnego serwera - CDN to ma.

6. Image optimization on-the-fly. Niektóre CDN-y (Cloudflare Polish, BunnyCDN Optimizer, Imgix) konwertują obrazy w locie (JPG → WebP/AVIF, resize per device).

Cloudflare - domyślny wybór

Cloudflare to najpopularniejszy CDN globalnie. Powody:

  • Free tier sensowny - DDoS, podstawowy WAF, SSL, basic CDN - wszystko gratis
  • Plany płatne: Pro ($25/mies.), Business ($200/mies.), Enterprise (negocjowane)
  • Workers - programowalne edge functions (JS / Rust)
  • R2 Storage - alternatywa dla S3
  • Email security, Zero Trust - funkcje dodatkowe

Mocne strony:

  • Bardzo szeroka sieć (300+ edge nodes globalnie)
  • Stabilne, dojrzałe
  • Dobre wsparcie dla popularnych platform (Magento, Shopware)
  • DDoS protection z najwyższej półki

Słabe strony:

  • Bandwidth w wyższych planach drogie (większe sklepy z dużym ruchem płacą)
  • Niektóre funkcje (Argo Smart Routing, advanced rate limiting) tylko w Business+
  • Domyślny cache TTL bywa zbyt agresywny dla e-commerce - wymaga konfiguracji

Konfiguracja dla sklepu:

  1. Włączyć w Cloudflare proxy dla domeny
  2. SSL/TLS: Full (Strict) - własny cert na origin
  3. Speed: enable Brotli, HTTP/2, HTTP/3
  4. Caching: standardowo dla statyków, custom Cache-Control z origin dla dynamic
  5. Page Rules / Cache Rules: definicja co cachować, co nie
  6. Image Optimization (Polish): konwersja JPG→WebP w locie

BunnyCDN - tańsza alternatywa

Słoweński CDN, popularny wśród polskich e-commerce w ostatnich latach.

Mocne strony:

  • Tanio. Pricing per GB transferowanych danych - często 5-10× taniej niż Cloudflare Pro
  • Polskie/europejskie edge nodes (Warszawa, Frankfurt, Praga)
  • Prosty pricing, brak ukrytych kosztów
  • Image Optimizer w cenie
  • Stream (CDN dla video)

Słabe strony:

  • Mniejszy zasięg geograficzny niż Cloudflare (200+ vs 300+ nodes)
  • Brak DDoS protection na poziomie Cloudflare'a (jest, ale słabszy)
  • Mniej funkcji enterprise (Workers, advanced WAF)
  • Wsparcie mniejsze

Dla kogo:

  • Polskie sklepy B2B z głównym ruchem PL/EU
  • Sklepy gdzie koszt bandwidth to istotny element budżetu
  • Sklepy nie wymagające zaawansowanego WAF

Realny koszt:

  • 100 GB transferu/mies.: ~$1-2 (vs. Cloudflare Pro $25/mies.)
  • 1 TB transferu/mies.: ~$10-15

To są kwoty atrakcyjne dla średniego B2B z dużym katalogiem obrazów.

Fastly - premium z programowalną edge

Fastly to droższy CDN dla bardziej zaawansowanych use-case'ów.

Mocne strony:

  • VCL (Varnish Configuration Language) na edge - pełna kontrola
  • Real-time logs i analytics
  • Image Optimizer (Fastly IO)
  • Compute@Edge (edge functions in Rust)
  • Bardzo niska latency

Słabe strony:

  • Drogie. Pricing w okolicach Cloudflare Business+
  • Krzywa uczenia (VCL nie jest banalne)
  • Brak free tier (są trial credits)

Dla kogo:

  • Bardzo duże sklepy z custom logic na edge (A/B testing, geo-routing, header manipulation)
  • Projekty headless z aggressive caching strategies
  • Mniej spotykane w polskim B2B (głównie korporacyjne)

AWS CloudFront / GCP CDN

Dla projektów hostowanych na AWS / GCP - naturalne wybory.

AWS CloudFront:

  • Tight integration z AWS (S3, Lambda@Edge, ALB)
  • Płatność pay-as-you-go
  • Brak free tier (są darmowe 1 TB w pierwszym roku)

GCP CDN:

  • Tight integration z GCP
  • Podobny model

Polskie projekty B2B rzadko są na czystym AWS - przeważnie Hetzner / OVH / managed PL. Wtedy Cloudflare / BunnyCDN są bardziej naturalne.

Co cachować na CDN

Zawsze cachuj:

  • Obrazy produktów (*.jpg, *.webp, *.png)
  • CSS i JS (z fingerprintingiem nazwy - style.abc123.css)
  • Fonty (*.woff2)
  • Wideo produktowe (jeśli)
  • Statyki marketingowe (banery, ikony)

Cachuj warunkowo:

  • HTML stron publicznych (homepage, blog, kategorie publiczne) - z odpowiednim Cache-Control
  • API responses dla danych publicznych (sklep info, polityki)

NIGDY nie cachuj na CDN:

  • Strony dla zalogowanych użytkowników (różne dla różnych userów)
  • Koszyk, checkout
  • Panel klienta, faktury, dokumenty
  • Endpointy API z danymi wrażliwymi

Configuration trick - Cache-Control headers per typ pliku:

# Statyki - agresywny cache (1 rok)
*.css, *.js, *.woff2 → Cache-Control: public, max-age=31536000, immutable

# Obrazy - długi cache (30 dni)
*.jpg, *.webp, *.png → Cache-Control: public, max-age=2592000

# HTML publiczne - krótki cache (5 min)
homepage, blog/* → Cache-Control: public, max-age=300, s-maxage=600

# HTML zalogowanych
account/*, checkout/* → Cache-Control: private, no-cache

Image optimization on the edge

Najlepszy ROI w CDN dla sklepu B2B:

Bez optymalizacji:

  • Obraz produktu: JPG 1500×1500, 280 KB
  • Klient na mobile pobiera 280 KB, wyświetla 400×400 (16× mniej pikseli)

Z image optimization (Cloudflare Polish / BunnyCDN Optimizer / Fastly IO):

  • CDN dostaje request image.jpg?w=400
  • CDN serwuje WebP/AVIF, 400×400, ~25-50 KB
  • Klient otrzymuje 5-10× mniej

Implementacja:

  • Lazy loading + srcset (HTML)
  • CDN query params na obrazach (?width=400&format=webp)
  • Service worker dla agresywniejszego caching (PWA)

Lazy loading obrazów.

Edge functions - kiedy mają sens

Cloudflare Workers, Fastly Compute@Edge, AWS Lambda@Edge - funkcje uruchamiane na edge nodes.

Use-case'y dla B2B:

1. A/B testing. Decyzja o wariancie strony na edge, bez round-trip do origin.

2. Geo-routing. Klient z DE → edge przekierowuje do de.sklep.pl z odpowiednim contentem.

3. Header manipulation. Dodawanie security headers, custom headers per region.

4. Bot management. Rozpoznawanie crawlerów, blokowanie scrapers.

5. Image manipulation. Custom resize / format conversion.

6. Auth at edge. Walidacja JWT na edge bez wywoływania origin.

Kiedy NIE używać:

  • Logika biznesowa (cena, koszyk, zamówienie) - to origin
  • Dane wrażliwe (bez właściwego threat modeling)

Najczęstsze błędy CDN

1. Brak CDN dla obrazów. Serwer puchnie pod ciężarem ruchu obrazów. LCP wolne. Wystarczy Cloudflare free.

2. Cache-Control nieustawiony. Statyki cachowane na 1 minutę zamiast roku. Hit ratio 5%.

3. Cache stron logged-in. Klient A widzi cenę kontraktową klienta B. Katastrofa.

4. Brak invalidacji przy deployoy. Stary CSS w cache, nowy HTML się odwołuje. UI psuje się dla wszystkich klientów na godziny.

5. Origin nie zabezpieczony. Klient omija CDN, idzie wprost do origin (np. po IP). Wszystkie korzyści CDN znikają.

6. Brak monitoringu hit ratio. Cache nie cachuje, ale „działa".

7. Konfiguracja domyślna. Każdy CDN ma defaults. Defaults są kompromisem. Bez tweaków - nie dostajesz tego, na co go kupiłeś.

FAQ

Czy Cloudflare free tier wystarczy dla średniego sklepu B2B? Dla małych do 1k zamówień / dzień - tak, na start. Powyżej - Pro lub przejście na BunnyCDN. Wymóg: bandwidth wystarczający (free nie limituje, ale niektóre funkcje są ograniczone).

Czy CDN wpływa na SEO? Pozytywnie. Szybsze ładowanie = lepsze Core Web Vitals = lepsze rankingi. Plus CDN ma najczęściej dobre infrastruktury, nie blokuje Googlebota.

Czy mogę używać CDN dla API responses? Dla publicznych - tak (z Cache-Control). Dla zalogowanych / dynamic - nie cachuj, ale CDN i tak proxy'uje (przyspiesza routing).

Co z multi-region (klient w PL i DE)? CDN to ogarnia naturalnie. Klient PL → edge node Warszawa, klient DE → Frankfurt. Bez dodatkowej konfiguracji (jeśli używasz globalnego CDN).

Czy CDN może spowolnić sklep? W teorii nie. W praktyce - źle skonfigurowane Page Rules, brak HTTP/2 between CDN-origin, agresywne polowanie na bots blokujące prawdziwych klientów. Monitoring is key.

Co dalej

O autorze

Jakub Owsianka

Architekt rozwiązania w WiseB2B - silniku platform B2B. Zaczynał po stronie biznesu (własne sklepy), potem deweloper, dziś projektuje wdrożenia dla sklepów z katalogami w dziesiątkach tysięcy SKU. W ostatnich latach wdrożył AI-development w zespole i funkcjonalności oparte o AI bezpośrednio w silniku sklepu.

Masz pytanie do tego artykułu?

Dodatkowy kontekst, problem z własnym wdrożeniem, druga opinia - napisz wprost. Odpowiadam osobiście w 1-2 dni robocze.