Nagrzewanie cache
Po deployu, pełnym Clear cache lub masowej inwalidacji Twój cache jest pusty. Pierwszy odwiedzający każdą stronę płaci pełny koszt renderu (MISS). Cache warming pre-generuje każdy cache’owalny URL z wyprzedzeniem, by odwiedzający widzieli tylko odpowiedzi z cache.
Warmup jest sterowany kolejką Symfony Messenger — żądanie dispatchu wraca natychmiast, potem worker przerabia URL-e w tle. Postęp jest śledzony w bazie i pokazywany na żywo w panelu.
Jak uruchomić warmup
Dział zatytułowany „Jak uruchomić warmup”- Otwórz Settings → Speed Boost → Dashboard.
- Kliknij Start warmup.
- (Opcjonalnie) Nadpisz Batch size (domyślnie
50). - Potwierdź. Warmup jest dispatchowany do kolejki.
Dashboard pokazuje:
- Total URLs — odkryte cache’owalne URL-e na początku
- Checked — ile zostało przetworzonych do tej pory (sukces lub failure)
- Remaining — URL-e jeszcze w locie
- Percentage ukończenia
- Real-time panel statystyk cache per typ, który aktualizuje się w trakcie zapisu wpisów
Możesz Pause, Resume lub Cancel w dowolnym momencie z dashboardu.
Co zostaje nagrzane
Dział zatytułowany „Co zostaje nagrzane”Query odkrywania warmupu zbiera każdy URL, który cache potrafi obsłużyć:
- Aktywne produkty widoczne dla każdego kanału sprzedaży (deduplikowane przeciw
seo_url) - Aktywne kategorie będące częścią drzewa nawigacji (deduplikowane przeciw
seo_url) - Strony CMS przypisane do kanału sprzedaży
- Strona główna każdego kanału sprzedaży
Query honoruje flagi widoczności, zakres kanału sprzedaży i unikalność SEO-url — wyłączone lub niewidoczne URL-e są pomijane.
Warmup per kanał sprzedaży
Dział zatytułowany „Warmup per kanał sprzedaży”Warmup respektuje przełącznik kanału sprzedaży w headerze. Jeśli wybierzesz pojedynczy kanał przed startem, nagrzane zostaną tylko URL-e tego kanału. Z “All sales channels” wybranym warmup pokrywa każdy aktywny kanał.
Wymóg kolejki async
Dział zatytułowany „Wymóg kolejki async”Warming działa na Symfony Messenger. Worker async musi działać:
bin/console messenger:consume async --time-limit=300Na produkcji uruchom worker jako długo żyjący proces (systemd, supervisor lub cokolwiek już używasz do innych zadań async Shopware). Bez działającego workera warmup będzie siedział w kolejce na zawsze — żądanie Start warmup dalej się uda i wpis postępu zostanie stworzony, ale Checked zostanie na 0.
Failed URLs
Dział zatytułowany „Failed URLs”Gdy URL zwraca status HTTP inny niż 2xx, liczy się jako failure, ale nie zatrzymuje warmupu. Failed URLs są wylistowane w Warmup history → Detail dla danego runa, ze statusem i fragmentem odpowiedzi.
Częste powody:
- Łańcuch redirectów (np. stary SEO URL → 301 → nowy SEO URL) — zwykle ok
- Kategoria bez widocznych produktów (zwraca 404 w niektórych theme’ach)
- Strona CMS ukryta przez uprawnienia
- Błąd infrastruktury (502 / 504) — uruchom warmup ponownie, gdy podstawowy problem zostanie naprawiony
Historia warmupów
Dział zatytułowany „Historia warmupów”Każdy run warmupu tworzy wiersz w Warmup history:
- Timestampy started / finished
- Liczniki total / checked / failed
- Średni czas odpowiedzi HTTP
- Status (running / paused / cancelled / completed)
Detail view drąży w pojedyncze URL-e i ich rezultaty. Historia jest zachowywana w nieskończoność — wyczyść ręcznie, jeśli nie potrzebujesz.
HTTPS, schemat i hostname
Dział zatytułowany „HTTPS, schemat i hostname”Warmup trafia URL-e przez HTTP domyślnie. Jeśli chcesz nagrzewać URL-e HTTPS (typowe dla produkcji), upewnij się, że storefront domain w Sales Channels → Domains używa https:// — warmup podąża za tym schematem.
Triggerowanie warmupów ze skryptu deploya
Dział zatytułowany „Triggerowanie warmupów ze skryptu deploya”Aby nagrzać cache jako część pipeline deploya, trafiaj endpoint REST:
curl -X POST https://your-shop.example.com/api/_action/p2lab-cache/warmup/start \ -H "Authorization: Bearer $ADMIN_TOKEN" \ -H "Content-Type: application/json" \ -d '{"salesChannelId":null,"batchSize":100}'Odpowiedź zawiera progressId, który możesz pollować przez /api/_action/p2lab-cache/warmup/progress?progressId=…, by poczekać na ukończenie.
Zobacz REST API po pełną listę endpointów.
Wskazówki throughput
Dział zatytułowany „Wskazówki throughput”- Zwiększ batch size, jeśli Twój worker jest szybki i chcesz skończyć szybciej. Domyślne
50jest konserwatywne. - Uruchom wiele workerów —
messenger:consume async --limit=…może działać w równoległych procesach; warmup rozłoży się między nie. - Wyłącz logowanie inwalidacji podczas warmupu, jeśli Twoja baza logu inwalidacji jest na wolnym dysku — dashboard dostarcza te same liczby w pamięci.