Cache witryny & wewnętrzny cache serwera: jak działa pamięć podręczna WordPressa

Informacja o linkach partnerskich v3.1
Informacja o linkach partnerskich v3.2 (wersja mobilna)

Sprawdzenie cache witryny i wewnętrznego cache serwera na serwerze Nginx + Apache pokazało, że żądania stron WordPressa schodzą kolejno od przeglądarki przez CDN, cache stron, OPcache i Redis i zatrzymują się na warstwie, która ma kopię. Żądania stron, które trafiły prosto na serwer źródłowy, dostawały od nginx od razu plik HTML utworzony przez WP Rocket i nie schodziły do PHP ani bazy danych.

Ⅰ. Struktura cache w WordPressie

W informatyce cache (pamięć podręczna) to technika tymczasowego przechowywania danych, by mieć do nich szybki dostęp; w sieci działa na tej samej zasadzie i wyraźnie poprawia wydajność.

Dzięki temu, że cache przechowuje dane, przy każdej wizycie na stronie nie trzeba prosić serwera o wszystko od nowa: zapisane dane wczytują się szybko, a czas ładowania strony się skraca. Zmniejsza to obciążenie serwera i poprawia wygodę użytkowników.

Cache używany przy żądaniach WordPressa dzieli się na dwie gałęzie: cache witryny i wewnętrzny cache serwera. Standard cache HTTP, jak opisuje go MDN, nazywa cache zapisany tylko w przeglądarce jednego odwiedzającego private cache, a cache CDN i proxy, z których korzysta wielu odwiedzających, shared cache; w tym wpisie oba połączono pod nazwą cache witryny.

Cache stron, OPcache i cache obiektów to cache działające w procesie, w którym WordPress uruchamia się na serwerze. Standard HTTP nie ma dla nich osobnej kategorii, a oficjalna dokumentacja WordPressa opisuje je jako wtyczki cache (cache stron), cache obiektów i cache serwera (cache opcode, np. OPcache).

🗂️ Cache, przez które przechodzi żądanie WordPressa
🌐 Cache witrynyCache HTTP · podział MDN
private cacheCache przeglądarki
shared cache
proxy cacheProxy w sieciach firm i operatorów
managed cacheCDN · reverse proxy (Varnish)
🖥️ Wewnętrzny cache serweraPodział w oficjalnej dokumentacji WordPressa
Cache stronyStatyczny HTML tworzony przez wtyczkę cache (WP Rocket)
OPcacheCache opcode · wykonywanie PHP
Cache obiektówDane, które zostają po zakończeniu żądania (Redis)

Wszystkie obszary, w których stosuje się cache, opisano we wpisie Cache: definicja i wszystkie obszary, w których stosuje się buforowanie oraz cztery gałęzie optymalizacji wydajności, w tym cache, we wpisie Optymalizacja wydajności stron: struktura i definicja poświęconym temu zagadnieniu.

W symulatorze poniżej wybierz cache w drzewie po lewej i kliknij przycisk, a zobaczysz, na której warstwie zatrzymuje się żądanie. Pierwsza warstwa, którą administratorzy WordPressa włączają wtyczką cache, to cache stron.

🧭 Symulator warstw cacheSymulator objaśniający
🗂️ Cache, przez które przechodzi żądanie WordPressa
🧰 Rodzaj żądania
Cache przeglądarki
To cache HTTP zapisany w przeglądarce odwiedzającego. Przy [Obraz · CSS] kliknij [Pierwsza wizyta] → [Ponowna wizyta]: od drugiego razu żadne żądanie nie trafia do serwera.
Nagłówki cache HTTP
To reguły, którymi serwer podaje przeglądarce i CDN, jak długo przechowywać kopię. Wiersze nagłówków w dzienniku odpowiedzi to prawdziwe wartości z serwera Nginx + Apache.
Cache CDN · proxy
To kopia, z której korzysta wielu odwiedzających. Włącz [Użyj CDN] i kliknij [Pierwsza wizyta] → [Ponowna wizyta]: odpowiedź kończy się na serwerze brzegowym.
Cache strony
Zapisuje do pliku HTML utworzony przez PHP. Kliknij [Ponowna wizyta], a żądanie nie zejdzie do PHP i bazy danych.
OPcache
Trzyma w pamięci skompilowany kod bajtowy PHP. Przy [Wizyta po edycji wpisu] PHP uruchamia się ponownie, ale kompilacja jest pomijana.
Cache obiektów
Zapisuje wyniki zapytań w Redis. Przy [Wizyta po edycji wpisu] z MariaDB odczytywane są ponownie tylko zmienione dane wpisu.
Cały przepływ
Żądanie schodzi z góry na dół i zatrzymuje się na pierwszej warstwie, która ma kopię.
WarstwaMiejsce zapisuCo zapisujePrzykład dla Nginx + Apache
Cache przeglądarkiUrządzenie odwiedzającegoHTML · CSS · JS · obrazy · fontyCSS · obrazy 7 dni
Cache CDN · proxyPrzed serwerem (edge · reverse proxy)Kopie stron · plików statycznychBunny CDN
Cache stronyDysk · pamięć serweraHTML utworzony przez PHPWP Rocket + nginx
OPcachePamięć serweraKod bajtowy PHPPHP 8.3, JIT wyłączony
Cache obiektówPamięć serweraWyniki zapytań · obiektyRedis
Symulator objaśniający, który działa tylko w Twojej przeglądarce. Wiersze nagłówków w dzienniku odpowiedzi odebrano 10 października 2026 roku z serwera Nginx + Apache; wartości w nawiasach, np. ETag po edycji, są przykładowe.

Ⅱ. Cache witryny

Cache witryny to cache, w którym serwer w nagłówkach odpowiedzi podaje, jak przechowywać zasób, a przeglądarka odwiedzającego oraz CDN i proxy zapisują kopię zgodnie z tą instrukcją. Typowe nagłówki to [Cache-Control], [ETag] i [Expires]; gdy okres przechowywania minie, żądanie warunkowe ([304 Not Modified]) sprawdza, czy coś się zmieniło.

1️⃣ Cache przeglądarki

Cache przeglądarki to cache HTTP zapisany w przeglądarce odwiedzającego: przechowuje HTML, CSS, JavaScript, obrazy i fonty, a gdy ten sam zasób jest potrzebny ponownie, nie odwołuje się do serwera albo tylko sprawdza, czy się zmienił.

Okres przechowywania ustala serwer, a nie odwiedzający. Poniższy serwer Nginx + Apache wskazuje dla CSS i obrazów 7 dni, a strony HTML zwraca bez okresu, tak by przy każdej kolejnej wizycie były sprawdzane od nowa.

📨 Zmierzone nagłówki odpowiedziKonfiguracja Nginx + Apache · 2026-10-10
💻 Komputer odwiedzającegoCache przeglądarki
──────▶① Pierwsze żądanieGET /style.css
🖥️ Serwer witrynyNginx + Apache
💻 Komputer odwiedzającegoCache przeglądarki
◀──────② Plik + instrukcja przechowywaniacache-control: max-age=604800
🖥️ Serwer witrynyNginx + Apache
③ Przeglądarka zgodnie z instrukcją przechowuje plik przez 7 dni i przy wizytach w tym czasie nie wysyła żądań do serwera.
💻 Komputer odwiedzającegoCache przeglądarki
──────▶④ Sprawdzenie po upływie terminuIf-None-Match: "6ab12775-2ee8"
🖥️ Serwer witrynyNginx + Apache
💻 Komputer odwiedzającegoCache przeglądarki
◀──────⑤ Bez zmianHTTP/2 304 (bez treści)
🖥️ Serwer witrynyNginx + Apache
🖼️ CSS · obrazy
cache-control: max-age=604800
expires: Sat, 17 Oct 2026 03:21:00 GMT
etag: "6ab12775-2ee8"
Dla przeglądarki to 7 dni korzystania z zapisanej kopii bez ponownego pytania serwera.
📄 Strona HTML
etag: "6ac9298c-95575"
last-modified: Fri, 09 Oct 2026 17:51:08 GMT
Nie podano okresu przechowywania, więc przy kolejnej wizycie przeglądarka najpierw pyta za pomocą ETag, czy coś się zmieniło.
Przy ponownym żądaniu z tym samym ETag serwer zwraca bez treści tylko [HTTP/2 304], a przeglądarka dalej używa zapisanej kopii.

2️⃣ Cache CDN · proxy

Cache CDN i proxy znajduje się między odwiedzającymi a serwerem źródłowym i korzysta z niego wielu odwiedzających. Proxy przekazujące (forward proxy) stoi z przodu po stronie odwiedzającego, jak w sieci firmowej, a reverse proxy i CDN stoją przed serwerem i zamiast serwera źródłowego odpowiadają zapisaną kopią.

Typowym reverse proxy jest Varnish Cache, a sieci CDN, takie jak Bunny CDN i Akamai, mają tę samą budowę. Dzięki DNS zależnemu od regionu odwiedzający z regionu serwera źródłowego łączą się z nim bezpośrednio, a odwiedzającym z innych regionów odpowiada pobliski serwer brzegowy CDN (np. Bunny CDN), który przechowuje nawet HTML.

👤 Odwiedzający z regionu serwera źródłowegoDNS podaje adres źródła
→
🖥️ Serwer źródłowyOdpowiada bezpośrednio, z pominięciem CDN.
👤 Odwiedzający z innego regionuDNS podaje adres pobliskiego serwera brzegowego
→
☁️ Serwer brzegowy Bunny CDNJeśli ma kopię HTML lub pliku, odpowiada stąd.
→
🖥️ Serwer źródłowyŻądanie trafia tu tylko wtedy, gdy serwer brzegowy nie ma kopii.

Budowę i zalety CDN opisano we wpisie Czym jest CDN? Powody, by z niego korzystać, i 5 zalet poświęconym temu zagadnieniu.

Ⅲ. Wewnętrzny cache serwera

Wewnętrzny cache serwera to cache działający w procesie, w którym WordPress buduje stronę, gdy żądanie dotrze już do serwera źródłowego. Serwer z Nginx + Apache obsługuje żądania w poniższej kolejności, a jeśli wcześniejszy etap znajdzie kopię, kolejne etapy są pomijane.

🅐 Gdy cache stron ma plikWiększość żądań stron od niezalogowanych odwiedzających
① nginx odbiera żądanieSerwer WWW odbiera żądanie, które dotarło do serwera źródłowego.
↓
1️⃣ Cache stron ↓② Odpowiedź plikiem z cache stronnginx wysyła bez zmian plik HTML utworzony przez WP Rocket.x-rocket-nginx-serving-file: HIT
Kończy się bez przechodzenia przez PHP · OPcache · Redis · MariaDB.
🅑 Gdy cache stron nie ma plikuPierwsza wizyta tuż po wyczyszczeniu cache · ekran logowania · żądania AJAX
① nginx odbiera żądaniePliku nie ma, więc żądanie trafia do Apache.
↓
2️⃣ OPcache ↓② Wykonanie PHP · OPcacheWykonuje pliki PHP WordPressa jako skompilowany kod bajtowy.
↓
3️⃣ Cache obiektów ↓③ Cache obiektów (Redis)Zapisane wyniki zapytań i obiekty pochodzą z Redis.
↓
④ MariaDBPobiera tylko dane, których nie ma w Redis, a często używane dane czyta z puli buforów InnoDB (pamięć).
↓
⑤ Odpowiedź · zapis w cache stronGotowy HTML zostaje wysłany, a WP Rocket zapisuje go do pliku, więc kolejne żądanie przechodzi ścieżką 🅐.
Na podstawie konfiguracji Nginx + Apache (do Apache i PHP tylko wtedy, gdy brak pliku cache stron), sprawdzono 2026-10-10.

Konfigurację Nginx + Apache można wybrać jako opcję w Cloudways i ScalaHosting. W Cloudways dla każdej aplikacji wybierasz Hybrid stack (Nginx + Apache) albo Lightning stack (tylko Nginx), a w ScalaHosting możesz włączyć w SPanel ustawienie, które stawia Nginx przed Apache.

🖥️ Hostingi z możliwością wyboru Nginx + Apache
CloudwaysWybór stosu dla każdej aplikacji
Hybrid stackNginx + Apache
Lightning stackTylko Nginx
Cloudways →
ScalaHostingUstawienia serwera WWW w SPanel
DomyślnieApache
Włącz NginxNginx + Apache
ScalaHosting →
CacheCo zapisujeKiedy jest zapisywane
1️⃣ Cache stronGotowa strona HTML🅑 ⑤ Przy odpowiedzi WP Rocket zapisuje do pliku
2️⃣ OPcacheSkompilowany kod PHP (kod bajtowy)🅑 ② Gdy plik PHP uruchamia się pierwszy raz
3️⃣ Cache obiektówFragmenty danych, np. wyniki zapytań i opcje🅑 ③ Gdy WordPress pierwszy raz pobiera dane

1️⃣ Cache stron

  • ↪️ Cache całych stron lub cache HTML

Cache stron nazywa się też cache całych stron (full-page cache), a ponieważ przechowuje HTML, bywa nazywany cache HTML. Zapisuje całą stronę utworzoną przez PHP jako statyczny plik HTML, a przy żądaniu tej samej strony wysyła ten plik bez uruchamiania PHP. To przypadek 🅐 w kolejności obsługi powyżej.

Trafia do pamięci serwera (RAM) albo na dysk (HDD/SSD): pamięć jest szybka, ale droga i ma ograniczoną pojemność, a dysk ma dużo miejsca, ale jest stosunkowo wolny.

TypPrzykładSposób zapisu i odpowiedzi
Wtyczka cacheWP Rocket · WP Super Cache · W3 Total Cache · Cache EnablerWordPress zapisuje stronę jako plik HTML, a serwer WWW wysyła ten plik.
Cache serwera WWWCache FastCGI Nginx · LiteSpeed CacheSerwer WWW sam zapisuje odpowiedź PHP i wysyła ją przy kolejnym żądaniu.
Cache reverse proxyVarnishSerwer cache postawiony przed serwerem WWW zapisuje stronę i odpowiada.

W konfiguracji Nginx + Apache nginx sam czyta i wysyła plik HTML utworzony przez WP Rocket, a nagłówek odpowiedzi dostaje [x-rocket-nginx-serving-file: HIT]. Jak włączyć i skonfigurować cache stron w WP Rocket, opisano we wpisie Konfiguracja WP Rocket poświęconym temu zagadnieniu.

2️⃣ OPcache

OPcache zapisuje w pamięci kod bajtowy wcześniej skompilowanego kodu PHP, więc przy ponownym uruchomieniu tego samego pliku parser PHP jest pomijany. Jest wbudowany domyślnie od PHP 5.5, a dawniej używane APC i XCache nie obsługują PHP 7 i dziś się ich nie używa. To etap ② ścieżki 🅑 w kolejności obsługi powyżej.

TypStanOpis
Zend OPcacheWbudowany od PHP 5.5Standardowy cache opcode używany obecnie; włącza się go przez [opcache.enable=1].
OPcache JITCzęść OPcache od PHP 8Zamienia kod bajtowy jeszcze raz na kod maszynowy i go wykonuje; włącza i wyłącza się go przez [opcache.jit].
APCRozwój zakończonyCache opcode używany przed OPcache; funkcja cache danych przeszła do APCu.
XCacheRozwój zakończonyNie obsługuje PHP 7.
WinCacheDla serwerów Windows (IIS)Cache opcode, który oficjalna dokumentacja WordPressa wymienia obok OPcache.

OPcache włącza się ustawieniem PHP [opcache.enable=1], a JIT, który doszedł w PHP 8, można osobno wyłączyć przez [opcache.jit=disable]. Instalację i konfigurację opisano we wpisie Zend OPcache: pojęcie, instalacja i konfiguracja poświęconym temu zagadnieniu.

3️⃣ Cache obiektów

Cache obiektów zapisuje wyniki zapytań do bazy danych lub obliczone obiekty w magazynie w pamięci, takim jak Redis czy Memcached. Domyślnie WordPress pamięta obiekty tylko w obrębie jednego żądania; żeby wyniki zostały także po jego zakończeniu, trzeba podłączyć magazyn taki jak Redis. To etap ③ ścieżki 🅑 w kolejności obsługi powyżej.

TypRodzajZostaje po żądaniu?Opis
WP_Object_CacheDomyślny w WordPressieNieWbudowany cache, który pamięta tylko w obrębie jednego żądania.
RedisCache obiektówTakOsobny magazyn w pamięci, podłączany przez drop-in wtyczki Redis Object Cache.
MemcachedCache obiektówTakOsobny magazyn w pamięci.
APCuCache obiektówTak (w obrębie tego samego serwera)Zapisuje we współdzielonej pamięci używanej przez PHP.
PlikCache obiektówTakZapisuje jako pliki na dysku.
Pula buforów InnoDBWłasny cache bazy danych · nie cache obiektówTakMySQL i MariaDB trzymają dane tabel i indeksy w pamięci.
Cache zapytańWłasny cache bazy danych · nie cache obiektów—Usunięty w MySQL 8.0; w MariaDB nadal jest, ale domyślnie wyłączony.

WordPress łączy się z Redis przez plik drop-in ([object-cache.php]), który dodaje wtyczka Redis Object Cache. Instalację opisano we wpisie Instalacja i konfiguracja Redis Cache w WordPressie poświęconym temu zagadnieniu.

🔢 FAQ & polecane treści

Odpowiada wtedy stara kopia, która została w cache stron albo w CDN. Wyczyść cache tego wpisu we wtyczce cache, a jeśli korzystasz z CDN, wyczyść też kopię w CDN.

Wtyczki cache stron, takie jak WP Rocket, w ustawieniach domyślnych nie wysyłają zapisanych stron zalogowanym użytkownikom. Ekrany administracyjne i strony oglądane po zalogowaniu PHP tworzy za każdym razem od nowa, a szybkość podtrzymują wtedy OPcache i cache obiektów.

W Chrome naciśnij [Ctrl+Shift+R] (na Macu [Cmd+Shift+R]), aby wczytać bieżącą stronę ponownie bez cache. Cały zapisany cache usuniesz w [Więcej] w prawym górnym rogu → [Usuń dane przeglądania], wybierając [Obrazy i pliki zapisane w pamięci podręcznej].

💾 Powiązane wpisy: cache 10 wpisów
🗂️ Cache
📋 Cache: definicja i zastosowania 📄 Cache witryny & wewnętrzny cache serwera
📋 Konfiguracja WP Rocket 📝 Zend OPcache 📝 Instalacja Redis Cache
📝 Czym jest CDN? 📝 Varnish Cache
📋 Test szybkości WP Rocket 📝 Przykład przyspieszenia 📝 Wtyczki cache · optymalizacji

ℹ️ Informacja o linkach partnerskich
Treści tej witryny zawierają linki partnerskie. Jeśli odwiedzający kupi produkt lub usługę przez taki link, witryna otrzymuje od sprzedawcy prowizję. Kwota płacona przy tym przez kupującego (podczas promocji spada↓) nie wzrasta. Podane ceny, rabaty i dostępność odnoszą się do chwili pisania i mogą różnić się od stanu faktycznego, dlatego przed zakupem sprawdź je u sprzedawcy. Produkty wybieramy i oceniamy według własnych kryteriów, a prowizja nie wpływa ani na kolejność prezentacji, ani na treść ocen.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Prove your humanity: 0   +   1   =