Przejdź do treści

Cloudflare dla PrestaShop — realne korzyści i granice

Mateusz Bartocha

  • Cloudflare
  • PrestaShop
  • wydajność
  • bezpieczeństwo
  • CDN
  • DevOps

Cloudflare to jedno z najczęstszych „szybkich usprawnień” sklepu i jednocześnie jedno z najczęściej źle rozumianych. Postawiony przed PrestaShop potrafi zdjąć z serwera dużą część ruchu na obrazach i plikach statycznych, przyspieszyć ich dostarczanie użytkownikom z dalszych regionów i odfiltrować część botów — zwykle już na planie Free. Nie przyspieszy za to wolnego checkoutu, nie naprawi zapytań SQL bez indeksów i nie zabezpieczy serwera, jeśli origin dalej odpowiada całemu internetowi. Poniżej pokazujemy, co ta para daje w praktyce, gdzie leżą granice tej korzyści i które błędy wdrożeniowe najczęściej psują efekt.

Jaką rolę Cloudflare pełni przed sklepem

Cloudflare działa jako reverse proxy i CDN ustawiony przed serwerem sklepu. Cały ruch trafia najpierw do sieci Cloudflare i dopiero stamtąd, jeśli trzeba, do Twojego origin. Zasoby statyczne — obrazy, CSS, JavaScript, fonty — mogą być serwowane z węzła blisko użytkownika, bez angażowania serwera. Żądania dynamiczne, czyli wszystko, co PrestaShop generuje osobno dla każdego użytkownika, i tak wracają do origin.

Od razu ustawmy proporcje: to nie jest integracja „dla PrestaShop”. Cloudflare stoi tak samo przed WordPressem, Laravelem czy dowolną inną aplikacją PHP. Dlatego większość tego, co opiszemy, dotyczy każdego sklepu za takim proxy, a to, co wyróżnia PrestaShop, wynika z charakteru samego sklepu, nie ze specjalnego wsparcia po stronie Cloudflare.

Dlaczego architektura PrestaShop na tym korzysta

O tym, ile Cloudflare pomoże, decyduje struktura ruchu konkretnego sklepu. Typowy PrestaShop to dużo zdjęć produktów, każde w kilku wariantach rozmiaru, do tego CSS, JavaScript i fonty motywu, ruch crawlerów indeksujących katalog, kosztowne dynamiczne żądania PHP i MySQL, okresowe skoki ruchu przy promocjach oraz sporo modułów i endpointów.

Z tego układu wynika prosta zależność, o której warto pamiętać przy każdej obietnicy przyspieszenia:

  • Im większy udział obrazów i plików statycznych w transferze, tym więcej pracy przejmuje brzeg sieci.
  • Im większy udział kosztownego dynamicznego HTML, tym mniejszy wpływ samego CDN.
  • Cloudflare potrafi zmniejszyć liczbę żądań docierających do origin, ale nie obniża kosztu tych dynamicznych żądań, które i tak tam trafią.

Najważniejsze korzyści (i ich warunki brzegowe)

Korzyści z Cloudflare przed sklepem są konkretne, ale każda ma swój warunek brzegowy. Poniżej to, co zwykle widać w praktyce — bez obietnic, których ta warstwa nie jest w stanie spełnić.

Mniej ruchu i transferu na origin. Cache plików statycznych ogranicza liczbę żądań i ilość danych, które serwer musi obsłużyć samodzielnie. Największy efekt widać na obrazach i pozostałych zasobach statycznych oraz na ruchu, który Cloudflare zatrzyma jeszcze przed serwerem. Nie zakładaj przy tym automatycznego spadku CPU: samo wysłanie statycznego pliku rzadko obciąża PHP czy MySQL, więc oszczędzasz głównie na połączeniach, transferze i pracy web serwera.

Szybsze zasoby dla użytkowników z dalszych regionów. Obrazy, arkusze CSS, JavaScript i fonty mogą być pobierane z punktu Cloudflare bliżej użytkownika, zamiast za każdym razem z origin. To skraca czas ładowania tych zasobów, ale nie skraca czasu generowania dynamicznej strony — ten nadal zależy od Twojego serwera.

Większa odporność na część skoków ruchu. Gdy rośnie ruch na tym, co można obsłużyć lub odrzucić na brzegu, origin dostaje mniejsze uderzenie. Zastrzeżenie jest istotne: nagły wzrost żądań niecache’owalnych, takich jak koszyk, API czy wyszukiwarka, nadal potrafi przeciążyć backend, bo trafiają one wprost do PHP i bazy.

Filtrowanie części botów i ataków. Cache ogranicza powtarzalne pobrania statycznych zasobów, a mechanizmy ochrony przed botami zatrzymują część niechcianego ruchu przed serwerem. Uważaj tylko, żeby przy okazji nie blokować legalnych crawlerów bez analizy — Googlebot i tak pobiera dynamiczny HTML, więc teza „crawler mniej obciąża origin” nie jest bezwarunkowa.

Warstwa bezpieczeństwa przed serwerem. Cloudflare może zatrzymać część skanowania, automatycznych ataków, prób nadużyć i przeciążeń, zanim dotrą do PrestaShop. Nie naprawia jednak podatności w module ani nie zastępuje aktualizacji sklepu i serwera; luki w samym kodzie trzeba domykać po swojej stronie.

Obrazy: transformacje na brzegu. Cloudflare potrafi przetwarzać obrazy w locie — skalować, kadrować, optymalizować i dostarczać nowoczesny format — bez trzymania każdego wariantu na serwerze. W chwili aktualizacji tego artykułu plan Free obejmuje do 5000 unikalnych transformacji miesięcznie, gdzie „unikalna” oznacza kombinację źródłowego obrazu i parametrów, a nie każde wyświetlenie. Po przekroczeniu limitu na Free wcześniej wykonane transformacje nadal są serwowane z cache, a odrzucane są tylko nowe. To praktyczna alternatywa dla generowania wszystkich miniatur po stronie sklepu.

PrestaShop może generować zoptymalizowane formaty samodzielnie, a Image Transformations tworzą warianty rozmiaru i formatu na brzegu, bez przechowywania każdej wersji na origin. Który wariant wybrać, zależy od liczby zdjęć i wariantów, dostępnego miejsca, kosztu CPU oraz sposobu zarządzania obrazami w sklepie — żadne z tych rozwiązań nie wygrywa zawsze.

Dodatkowe dane i obserwowalność. Przy okazji dostajesz wgląd w ruch: statystyki, zdarzenia bezpieczeństwa oraz informację o tym, co jest odrzucane i cache’owane. To materiał, który później pozwala ocenić, czy wdrożenie faktycznie coś dało — do tego wracamy na końcu.

Na koniec uwaga o stacku: Cloudflare stoi przed nginksem, Apache’em i LiteSpeedem tak samo. HTTP/3 dotyczy przy tym połączenia użytkownika z siecią Cloudflare i nie oznacza automatycznie, że origin również obsługuje HTTP/3.

Cloudflare: Image Transformations (źródło) Optymalizacja wydajności PrestaShop

Czego Cloudflare nie naprawi

Cloudflare to warstwa przed serwerem, więc wszystko, co dzieje się już na serwerze, zostaje po Twojej stronie. Nie przyspieszy wolnych kontrolerów, niezaindeksowanych zapytań, rozbudowanych modułów ani przeciążonego PHP-FPM i MySQL. Nie pomoże, gdy stronę spowalnia zewnętrzne API blokujące jej wygenerowanie, nadmiar JavaScriptu w motywie, słaby hosting, wolny checkout, źle przygotowane zdjęcia źródłowe albo problemy z Core Web Vitals (wskaźnikami jakości ładowania strony) wynikające z renderowania i interakcji.

Dlatego Cloudflare nie zastępuje optymalizacji po stronie sklepu. Redis, cache PrestaShop, OPcache, indeksy w bazie, porządek w modułach i poprawna konfiguracja PHP dalej są potrzebne. Te rzeczy rozwiązują problemy na innej warstwie niż CDN i jedno bez drugiego nie wystarcza.

Nie licz też na cache całego HTML „z pudełka”. Automatic Platform Optimization, które robi to dla WordPressa, nie ma gotowej integracji z PrestaShop; podobny efekt trzeba zbudować samodzielnie, razem z poprawnym unieważnianiem cache. Najprościej zapamiętać zasadę: jeśli anonimowa strona jest wolna, bo origin długo ją generuje, warstwa brzegowa tego nie skróci. Zmierz najpierw, gdzie tracisz czas — jeśli wąskim gardłem jest backend, Cloudflare nie jest odpowiedzią.

Cloudflare: Automatic Platform Optimization (źródło) Dlaczego PrestaShop działa wolno

Plan Free i kiedy warto sięgnąć po płatny

Dla wielu sklepów plan Free jest dobrym punktem startu. Dostajesz CDN i cache statyki, podstawowe mechanizmy bezpieczeństwa, HTTP/3, możliwość budowania własnych reguł oraz — co mniej oczywiste — wspomniane 5000 unikalnych transformacji obrazów miesięcznie. To zwykle wystarcza, żeby ruszyć i zobaczyć, ile zyskujesz w praktyce.

Po płatny plan sięga się w odpowiedzi na konkretną potrzebę, nie „dla zasady”. Zwykle jest to jedna z poniższych sytuacji:

  • bardziej zaawansowana ochrona przed botami,
  • sklep faktycznie skanowany lub scrapowany,
  • większa kontrola nad regułami WAF,
  • więcej lub bardziej rozbudowane reguły,
  • skalowanie transformacji obrazów ponad darmowy limit,
  • zaawansowane funkcje cache,
  • wymagania biznesowe i potrzeba wsparcia.

Najczęstsze błędy przy wdrożeniu

Większość problemów z Cloudflare przed PrestaShop nie wynika z samego Cloudflare, tylko z wdrożenia zatrzymanego w połowie. Dwa z tych błędów widać najczęściej i to one najbardziej mszczą się w produkcji, więc zaczniemy od nich.

Odsłonięty origin. Ustawienie „pomarańczowej chmury” w DNS nie sprawia, że serwer przestaje przyjmować połączenia bezpośrednio. Adres origin bywa znany z historii DNS, z nagłówków poczty, ze starych rekordów „DNS only” albo z innych usług na tym samym serwerze, a kto go zna, może wysłać żądania z pominięciem Cloudflare i tym samym ominąć cache, WAF oraz rate limiting. Na własnym VPS-ie lub serwerze dedykowanym ruch HTTP i HTTPS powinien być przyjmowany wyłącznie z zakresów Cloudflare i od faktycznie potrzebnych integracji; pamiętaj o IPv4 i IPv6, a dla monitoringu czy callbacków przygotuj osobne wyjątki. Sama lista dozwolonych adresów to warstwa przydatna, ale Cloudflare klasyfikuje ją jako „umiarkowanie bezpieczną”; mocniejszą opcją są Authenticated Origin Pulls, które pozwalają origin zweryfikować, że żądanie faktycznie przyszło z sieci Cloudflare, albo Cloudflare Tunnel. Najważniejsze do zapamiętania: samo podpięcie domeny do Cloudflare nie zabezpiecza serwera przed ruchem bezpośrednim.

Nieprzywrócony prawdziwy adres IP i stary fail2ban. Za reverse proxy serwer widzi połączenia z adresów Cloudflare, a prawdziwy adres klienta dostaje w nagłówku (m.in. CF-Connecting-IP). Jeśli go nie przywrócisz, logi, geolokalizacja, reguły antyfraud, rate limiting po stronie serwera i tryb konserwacji zobaczą adresy Cloudflare zamiast klientów. W Apache robi się to przez mod_remoteip, w nginx przez moduł Real IP z listą zaufanych zakresów Cloudflare — i temu nagłówkowi wolno ufać tylko wtedy, gdy połączenie faktycznie przyszło z zaufanego adresu Cloudflare, inaczej da się go sfałszować. To samo dotyczy fail2ban. Nie chodzi o to, że wymaga on „aktualizacji, bo doszedł Cloudflare”; po wdrożeniu trzeba przejrzeć, jak odczytuje adres klienta z logów, jakie zna zaufane zakresy i jak egzekwuje blokadę. Kluczowy niuans: blokada na firewallu origin może przestać działać, bo połączenie do serwera nawiązuje Cloudflare, a nie użytkownik — dlatego blokować trzeba albo na poziomie aplikacji i web serwera po przywróconym adresie, albo przenosić decyzje fail2ban do Cloudflare przez API, jako reguły działające na brzegu. Cloudflare wprost ostrzega zresztą, że bez przywróconego adresu fail2ban potrafi przypadkiem zablokować adresy samego Cloudflare i wywołać błędy u wielu użytkowników naraz.

Pozostałe błędy są mniej spektakularne, ale równie kosztowne:

  • Traktowanie samego podpięcia domeny jako końca wdrożenia — reszta ustawień zostaje domyślna, a część ochrony i tak nie działa. Wdrożenie to konfiguracja, nie zmiana rekordu DNS.
  • Wymuszenie cache dla dynamicznego HTML — ryzyko pokazania cudzego koszyka albo konta. Cache’uj statykę, a strony transakcyjne i panel administracyjny trzymaj z dala od cache.
  • Flexible SSL zamiast Full (strict) — przy włączonym SSL w PrestaShop kończy się to pętlą przekierowań i mieszaną zawartością. Ustaw tryb Full (strict).
  • Włączanie wszystkich „przyspieszaczy” bez testów — agresywna optymalizacja JavaScriptu potrafi popsuć motyw, koszyk czy moduły. Włączaj pojedynczo i sprawdzaj front po każdej zmianie.
  • Brak sprawdzenia integracji — płatności, ERP, marketplace i monitoring mogą chodzić po adresach, które właśnie odcięto lub przepuszczono przez WAF. Zweryfikuj je po wdrożeniu.
  • Brak pomiaru przed i po — bez punktu odniesienia nie wiesz, czy cokolwiek się zmieniło. Zbierz metryki z origin i z Cloudflare (o tym niżej).

Cloudflare: ochrona serwera origin (źródło) Cloudflare: przywracanie prawdziwego IP odwiedzających (źródło) Cloudflare: fail2ban a zakresy IP Cloudflare (źródło) DevOps i infrastruktura

Jak ocenić, czy wdrożenie coś dało

Skoro mówimy o korzyściach, wypada pokazać, jak sprawdzić, że faktycznie wystąpiły. Nie potrzebujesz do tego benchmarków ani efektownych procentów w prezentacji — wystarczy obserwować kilka wskaźników przed wdrożeniem i po nim:

  • transfer wychodzący z origin — ile danych serwer wysyła samodzielnie,
  • liczba żądań docierających do origin,
  • cache hit ratio po stronie Cloudflare,
  • TTFB (czas do pierwszego bajtu) dla dynamicznego HTML — pokaże, czy problem leży po stronie backendu,
  • LCP (czas do wyświetlenia głównej treści) i pozostałe Core Web Vitals,
  • liczba błędów 5xx,
  • zdarzenia bezpieczeństwa i ruch odrzucony przed origin.

Często zadawane pytania

Czy Cloudflare naprawi wolny sklep?

Tylko częściowo i nie tam, gdzie zwykle boli. Odciąża dostarczanie statyki i filtruje część ruchu, ale dynamiczne strony — koszyk, checkout, konto — nadal generuje Twój serwer. Jeśli spowalnia je kod, zapytania SQL bez indeksów albo ciężki moduł, problem jest po stronie sklepu i to tam trzeba go naprawić. Cloudflare uzupełnia optymalizację, nie zastępuje jej.

Czy plan Free wystarczy dla sklepu PrestaShop?

Dla wielu sklepów na start tak. Daje CDN, cache statyki, HTTP/3, podstawowe bezpieczeństwo, własne reguły oraz darmowy limit transformacji obrazów. Po wyższy plan sięgasz, gdy uderzasz w konkretny sufit: poważniejsza ochrona przed botami, scraping, większa kontrola nad WAF albo skalowanie obrazów ponad darmowy limit.

Czy Cloudflare może zepsuć koszyk albo pokazać cudze konto?

Może, jeśli sam wymusisz cache’owanie dynamicznych stron. Domyślnie Cloudflare nie cache’uje HTML sklepu, więc koszyk i konto są bezpieczne. Ryzyko pojawia się dopiero, gdy szeroką regułą każesz cache’ować wszystko — dlatego strony transakcyjne oraz panel administracyjny muszą zostać poza cache.

Czy APO działa z PrestaShop?

Nie w gotowej formie. Automatic Platform Optimization ma integrację dla WordPressa; dla PrestaShop takiego rozwiązania „z pudełka” nie ma. Podobne cache’owanie HTML da się zbudować samodzielnie, ale wymaga własnej konfiguracji i — co trudniejsze — poprawnego unieważniania cache.

Czy po wdrożeniu Cloudflare trzeba zmienić konfigurację fail2ban?

Zwykle warto ją przejrzeć. Po pierwsze fail2ban musi czytać prawdziwy adres klienta z logów, a nie adres Cloudflare, co wymaga wcześniejszego przywrócenia Real IP. Po drugie blokada na firewallu origin może już nie działać, bo połączenie nawiązuje Cloudflare; skuteczniej jest blokować po stronie aplikacji albo przenieść decyzje do Cloudflare przez API. Bez tego łatwo przypadkiem zablokować adresy samego Cloudflare.

Czy po podłączeniu Cloudflare można nadal wejść bezpośrednio na IP serwera?

Domyślnie tak i to jest problem. Podpięcie domeny do Cloudflare nie zamyka bezpośredniego dostępu do origin. Dopóki nie ograniczysz ruchu do zakresów Cloudflare (albo nie użyjesz Authenticated Origin Pulls czy Tunnela), ktoś znający adres serwera może ominąć całą warstwę ochronną.

Co dają Image Transformations w planie Free?

Pozwalają przetwarzać obrazy na brzegu — skalować, kadrować, optymalizować i dostarczać nowoczesny format — bez trzymania każdego wariantu na serwerze. W chwili aktualizacji artykułu darmowy limit to 5000 unikalnych transformacji miesięcznie, liczonych według kombinacji obrazu i parametrów; powtórne wyświetlenia tego samego wariantu nie są doliczane. To sposób na ograniczenie liczby miniatur generowanych i przechowywanych przez sam sklep.

Czy ten poradnik dotyczy tylko PrestaShop?

Nie. Cloudflare stoi tak samo przed WordPressem, Laravelem czy inną aplikacją PHP, więc zasady cache, ochrony origin i przywracania IP przenoszą się wprost. Przykłady bierzemy z PrestaShop, bo to platforma, z którą pracujemy na co dzień, ale sama warstwa brzegowa nie jest niczym „pod PrestaShop”.

Wdrożymy Cloudflare przed Twoim PrestaShop — z głową

Skonfigurujemy cache pod sklep, zabezpieczymy origin, przywrócimy prawdziwe IP i ustawimy fail2ban do pracy za proxy. A jeśli problem leży po stronie serwera, powiemy to wprost, zamiast sprzedawać wyższy plan — zaczynamy od pomiaru, nie od włączania wszystkiego naraz.