Skip to content

Wszystko o WordPressie, tworzeniu stron — i nie tylko

🚀 Domen bez cookie w WordPress: pełny poradnik konfiguracji

🚀 Domen bez cookie w WordPress: pełny poradnik konfiguracji

GTmetrix wystawia Pana/Pani stronie 72/100, a w rekomendacjach widnieje „Serve static content from a cookieless domain". Klika Pan/Pani i widzi listę 40 plików CSS, z których każdy ciągnie za sobą nagłówek Set-Cookie. Obrazy, czcionki, skrypty, dziesiątki zapytań i w każdym znajduje się nagłówek HTTP, który tym plikom jest absolutnie niepotrzebny.

Problem nie leży w Pana/Pani kodzie. To cecha architektoniczna: serwer ustawia cookie na poziomie domeny, a przeglądarka posłusznie dołącza je do każdego zapytania, nawet do tych, gdzie autoryzacja i sesje nie mają sensu. Rezultat: zbędne kilobajty w każdej odpowiedzi, spowolnione ładowanie statycznych zasobów i czerwona flaga w raportach GTmetrix i Pingdom.

Dobra wiadomość: w 15 minut można to naprawić bez zmiany hostingu. Nie potrzebuje Pan/Pani drugiego serwera ani drogiego planu enterprise. Wystarczy osobna subdomena lub CDN, a pliki statyczne będą przesyłane bez cookie, zaś wynik w GTmetrix wzrośnie o 10-15 punktów.

💡 Szybki przegląd:

  • Proszę zrozumieć, dlaczego cookie „przeciekają" do zasobów statycznych i kiedy to naprawdę stanowi problem
  • Proszę skonfigurować osobną subdomenę dla wp-content przez cPanel, krok po kroku, łącznie z zamianą URL w SQL
  • Proszę podłączyć KeyCDN przez wtyczkę CDN Enabler jako nowoczesną alternatywę (5 minut, od 4 USD/mies.)
  • Proszę dowiedzieć się, dlaczego Cloudflare nie usuwa ostrzeżenia GTmetrix i kiedy można to zignorować

Cookie są ustawiane na poziomie domeny. Jest tu jednak niuans, który często się pomija: subdomeny dziedziczą ustawienia cookie domeny nadrzędnej. Jeśli witryna działa na example.com i ustawia cookie dla tej domeny, automatycznie otrzymują je www.example.com i static.example.com.

Właśnie dlatego nie wystarczy po prostu utworzyć subdomeny static.example.com. Dopóki główna witryna jest na gołej domenie, cookie „przeciekną" również na subdomenę. Rozwiązanie jest proste, ale nieintuicyjne: przenieść witrynę na www.example.com, a zasoby statyczne na static.example.com. Wtedy cookie działają na www, a static pozostaje czysta.

Druga opcja to całkowicie osobna domena. Technicznie działa, ale kupowanie domeny wyłącznie w tym celu prawie nigdy nie jest uzasadnione: wystarczy umiejętna praca z subdomenami.

I jeszcze jedno: na zarządzanych hostingach WordPress, takich jak Kinsta, WP Engine czy SiteGround, problem często jest już rozwiązany na poziomie serwera. Jeśli w planie jest „edge caching" lub „CDN included", dodatkowa konfiguracja nie jest potrzebna.

Sposób 1. Osobna subdomena dla zasobów statycznych przez cPanel

Podstawowa metoda, która działa na każdym hostingu z cPanel. Żadnych zewnętrznych usług, żadnych miesięcznych opłat. Sedno: tworzymy subdomenę, wiążemy ją z /wp-content i mówimy WordPress, aby serwował zasoby statyczne przez nią.

Proszę utworzyć subdomenę

Proszę wejść do cPanel → sekcja „Domains" → „Subdomains". Proszę utworzyć subdomenę static.вашсайт.com. W polu Document Root proszę wskazać ścieżkę do wp-content: zazwyczaj jest to public_html/wp-content.

Proszę sprawdzić: główna witryna musi być na www.вашсайт.com. Jeśli korzysta Pan/Pani z gołej domeny bez www, proszę najpierw przenieść witrynę na www, w przeciwnym razie metoda nie zadziała.

Proszę dodać stałe w wp-config.php

Proszę otworzyć wp-config.php w katalogu głównym witryny i dodać dwie linijki PRZED komentarzem /* That's all, stop editing! Happy publishing. */:

1define('WP_CONTENT_URL', 'https://static.вашсайт.com');
2define('COOKIE_DOMAIN', 'www.вашсайт.com');
Stałe PHP WP_CONTENT_URL i COOKIE_DOMAIN w wp-config.php

WP_CONTENT_URL mówi WordPressowi, aby serwował całą zawartość z /wp-content/ przez nową subdomenę. COOKIE_DOMAIN ogranicza strefę działania cookie do subdomeny www, nie pozwalając im rozprzestrzenić się na static.

Proszę zamienić URL istniejących plików w bazie danych

Już opublikowane wpisy przechowują odnośniki do starych URL obrazów. Należy je masowo zamienić przez phpMyAdmin.

Proszę wejść do phpMyAdmin (cPanel → Databases), wybrać bazę WordPress, zakładka SQL. Proszę wykonać:

1UPDATE wp_posts SET post_content = REPLACE(post_content, 'www.вашсайт.com/wp-content/', 'static.вашсайт.com/');
Zapytanie SQL do podmiany URL statycznych w phpMyAdmin dla WordPress

Przed wykonaniem proszę zrobić kopię zapasową bazy. Zamiana SQL jest nieodwracalna. W razie pomyłki w URL obrazy na stronie ulegną uszkodzeniu i konieczne będzie odtworzenie z kopii.

Plusy i minusy

Metoda działa bez zewnętrznych usług i dodatkowych kosztów. Ale: ręczna edycja wp-config.php i bazy danych, ryzyko pomyłki w SQL, konieczność utrzymywania konfiguracji dwóch subdomen. Na VPS z NGINX trzeba jeszcze edytować konfigurację serwera, co zwiększa złożoność.

Dla większości witryn istnieje dziś prostsza opcja, CDN.

Sposób 2. CDN jako nowoczesne rozwiązanie

Content Delivery Network przejmuje zasoby statyczne na swoje serwery i domyślnie nie używa cookie dla plików. Otrzymuje Pan/Pani dwie korzyści jednocześnie: zasoby statyczne bez cookie oraz globalną sieć dostarczania, która przyspiesza ładowanie dla odwiedzających z dowolnego miejsca na świecie.

Usługa KeyCDN, pay-as-you-go CDN z ceną od 0,04 USD/GB ruchu i minimalną płatnością 4 USD/mies. Dla średniej witryny koszty wynoszą 4-10 USD miesięcznie. 60+ punktów obecności, wbudowana opcja Strip Cookies, która wymusza usuwanie nagłówków Set-Cookie z odpowiedzi.

Podłączenie przez CDN Enabler

CDN Enabler, oficjalna wtyczka KeyCDN do WordPressa. Wersja 2.0.8, 10 000+ aktywnych instalacji, przetestowana aż do WordPress 6.9. Przechwytuje strony i przepisuje adresy URL plików statycznych na domenę CDN.

Kroki konfiguracji:

  • Proszę utworzyć konto KeyCDN. Usługa oferuje okres próbny, można przetestować bez płatności.

  • Proszę zainstalować CDN Enabler z repozytorium WordPress: Wtyczki → Dodaj nową → wyszukiwanie „CDN Enabler" → Aktywuj.

  • Proszę utworzyć strefę Pull w panelu KeyCDN. Strefa określa, jaką zawartość CDN będzie pobierać z Pana/Pani witryny. Proszę podać origin URL, adres witryny.

Tworzenie Pull Zone w panelu KeyCDN z polami Origin URL
  • Proszę skopiować URL strefy, ma on postać https://вашазона.kxcdn.com, i wkleić go w ustawieniach CDN Enabler: Ustawienia → CDN Enabler → CDN Hostname.
Pole CDN Hostname w ustawieniach wtyczki CDN Enabler dla WordPress
  • Proszę włączyć Strip Cookies w KeyCDN: Ustawienia strefy → Strip Cookies = Włączone. To właśnie ta opcja gwarantuje, że pliki statyczne są serwowane bez nagłówków Set-Cookie.

  • Proszę wyczyścić pamięć podręczną witryny i sprawdzić wynik w GTmetrix.

CDN Enabler działa z każdym CDN. Jeśli korzystają już Państwo z Cloudflare, BunnyCDN lub StackPath, proszę po prostu podać CDN Hostname swojego dostawcy.

Ważna kwestia: po wyłączeniu CDN i usunięciu wtyczki adresy URL obrazów mogą pozostać przepisane na domenę CDN. Przed dezaktywacją proszę wyczyścić pamięć podręczną wtyczki i upewnić się, że adresy URL wróciły do oryginalnych.

Sposób 3. Cloudflare, bezpłatnie, ale z zastrzeżeniem

Cloudflare, największy CDN z całkowicie bezpłatnym planem. Działa na poziomie DNS: przełącza się domenę na serwery nazw Cloudflare, a cały ruch przechodzi przez jego sieć.

Jest jednak pewien niuans. Cloudflare używa serwisowego pliku cookie _cfduid dla każdego żądania w celach bezpieczeństwa. Jest on krytyczny dla ochrony przed DDoS i botami, nawet jeśli włączy się opcję „Strip Cookies" w planie Pro, ten plik cookie nie jest usuwany.

Z powodu _cfduid GTmetrix będzie nadal pokazywać ostrzeżenie „Serve static content from a cookieless domain". Osiągnięcie 100/100 w metryce YSlow z bezpłatnym Cloudflare jest technicznie niemożliwe. Jest to jednak fałszywy alarm: statyka przez Cloudflare i tak ładuje się szybko, a jeden serwisowy plik cookie nie wpływa na rzeczywistą wydajność.

Jeśli zależy Państwu na maksymalnym wyniku w GTmetrix, KeyCDN z opcją Strip Cookies. Jeśli priorytetem jest bezpłatność i ochrona przed DDoS, Cloudflare sprawdza się w pełni.

Kiedy ostrzeżenia GTmetrix można zignorować

Częsta sytuacja: CDN jest skonfigurowany, Strip Cookies włączone, ale GTmetrix i tak pokazuje błąd domeny bez cookie. Przyczyna leży w tym, że YSlow, silnik GTmetrix, nie sprawdza, czy opcja Strip Cookies jest włączona po stronie CDN. Widzi on URL podobny do domeny głównej i mechanicznie generuje ostrzeżenie.

Weryfikacja w 30 sekund: proszę otworzyć Chrome DevTools (F12) → Network → wybrać dowolny plik statyczny, CSS, JS lub PNG → zakładka Headers → Request Headers. Jeśli nie ma tam wiersza Cookie:, statyka jest przesyłana bez cookie i może Pan/Pani zignorować ostrzeżenie GTmetrix.

Inne źródło fałszywych alarmów to serwerowe cookie analityki i testów A/B (Google Analytics, Hotjar, VWO). One również trafiają do raportu jako „zbędne", choć wpływają na szybkość strony minimalnie.

Rzeczywiste zmniejszenie ruchu dzięki usunięciu cookie ze statyki to około 5-15% całkowitej liczby zapytań. To nie rewolucja, ale każda milisekunda ma znaczenie: badanie Google wykazało, że opóźnienie o 1 sekundę obniża konwersję użytkowników mobilnych o 20%.

⁉️🤔 Często zadawane pytania

Czy konfiguracja domeny bez cookie jest obowiązkowa?

Nie, to nie jest twardy wymóg. Jeśli jednak walczy Pan/Pani o szybkość, usunięcie zbędnych cookie ze statyki daje mierzalny wzrost, szczególnie na stronach z ciężkimi mediami: w sklepach internetowych, fotoblogach i portalach informacyjnych. Dla landing page’a z trzech bloków efekt będzie niezauważalny.

Co zrobić, jeśli po edycji pliku wp-config.php strona przestała się otwierać?

Prawie na pewno popełnił Pan/Pani błąd w URL stałych lub umieścił je PO wierszu /* That's all, stop editing! */. Proszę połączyć się ze stroną przez FTP, otworzyć wp-config.php i sprawdzić: stałe muszą być PRZED tym komentarzem. Jeśli strona nadal się nie ładuje, proszę zakomentować dodane wiersze (// na początku każdego), strona wróci do stanu początkowego, po czym można spróbować ponownie z poprawnymi URL.

Czy można używać CDN Enabler z innymi wtyczkami buforowania?

Tak, bez problemu. CDN Enabler jest kompatybilny z Cache Enabler, WP Rocket, W3 Total Cache i LiteSpeed Cache. Jedna uwaga: jeśli ma Pan/Pani WP Rocket, CDN konfiguruje się w samym WP Rocket, osobna wtyczka CDN Enabler nie jest potrzebna. Z pozostałymi wtyczkami buforującymi działa równolegle, nie odnotowano konfliktów.

Jaki CDN wybrać dla małej strony?

To zależy od budżetu i priorytetów. Cennik KeyCDN (od 0,04 USD/GB, minimum 4 USD/mies.), dobry start: pay-as-you-go, płaci Pan/Pani tylko za ruch. Cloudflare, darmowy, ale z serwisowym cookie i fałszywym ostrzeżeniem GTmetrix. BunnyCDN (od 0,01 USD/GB w taryfie wolumenowej, od 1 USD/mies. minimum), tańszy, ale z mniejszą liczbą punktów obecności. Dla strony z odwiedzalnością do 10 000 miesięcznie koszty CDN wyniosą 2-7 USD.

Czy domena bez cookie jest potrzebna, jeśli hosting jest nowoczesny?

Zarządzane hostingi WordPress, Kinsta, WP Engine, SiteGround, często zawierają wbudowany CDN lub buforowanie serwerowe, które już rozwiązuje problem cookie. Proszę sprawdzić taryfę: jeśli w opisie jest „edge caching" lub „CDN included", dodatkowa konfiguracja nie jest potrzebna. Na tanim hostingu współdzielonym bez CDN skonfigurowanie domeny bez cookie da odczuwalny wzrost.

Co zrobić, jeśli po wykonaniu zapytania SQL zniknęły obrazy?

Albo pomylił się Pan/Pani w URL (proszę sprawdzić zgodność domen w zapytaniu i ustawieniach subdomeny), albo subdomena static.вашсайт.com wskazuje na niewłaściwy katalog. Proszę przywrócić bazę z kopii zapasowej i sprawdzić: Document Root subdomeny musi być ustawiony na public_html/wp-content, a domena w zapytaniu SQL musi być zgodna z tą utworzoną w cPanel (z www. lub bez, w zależności od konfiguracji strony głównej).

Którą metodę wybrać do swojego zadania

Jeśli strona jest na tanim hostingu bez CDN i bez budżetu na płatne usługi, proszę skonfigurować osobną subdomenę przez cPanel. To 15 minut pracy: subdomena, dwa wiersze w wp-config.php i jedno zapytanie SQL. Statyka będzie przesyłana bez cookie, wynik GTmetrix się poprawi. Minusem jest ręczne utrzymanie i brak globalnego przyspieszenia.

Jeśli jest Pan/Pani gotów płacić 4-10 USD miesięcznie, proszę wdrożyć połączenie KeyCDN + CDN Enabler. To samo zadanie jest rozwiązywane automatycznie, a dodatkowo otrzymuje Pan/Pani sieć dostarczania z ponad 60 punktami, kompresję i przyspieszenie dla odwiedzających z dowolnego miejsca na świecie. Dla projektu, który zarabia lub planuje zarabiać, CDN zwraca się natychmiast.

I co najważniejsze, proszę nie skupiać się na punktacji GTmetrix. Rzeczywista szybkość dla użytkownika jest ważniejsza niż cyfry w raporcie. Jeśli statyka jest przesyłana bez cookie (sprawdził Pan/Pani przez DevTools), a strona ładuje się szybciej niż w 2 sekundy, zadanie jest rozwiązane.

Odświeżyć całościowy obraz przyspieszania WordPressa pomoże oficjalny poradnik od zespołu WordPress.com, od buforowania po CDN, z rzeczywistymi pomiarami i konfiguracją: