Ecom house logo

Cache i indeksery w Magento 2

Opublikowano: 17 lipca 2026

"Dlaczego zmiana w panelu admina nie jest widoczna na froncie?" - to najczęstsze pytanie każdego nowego admina Magento. Odpowiedź prawie zawsze: cache lub indeksery. Ten poradnik pokazuje, jak rozumieć i zarządzać oboma systemami.

Dlaczego Magento ma cache i indeksery

Magento z natury jest wolny - każdy widok strony wymaga wielu zapytań SQL i logiki PHP. Cache i indeksery to mechanizmy przyspieszające odpowiedzi sklepu:

  • Cache - zapamiętane wcześniej wygenerowane fragmenty (HTML, konfiguracje, layouty). Magento serwuje gotowe z cache zamiast generować od nowa.
  • Indeksery - zoptymalizowane tabele bazy z pre-przygotowanymi danymi (ceny produktów per Customer Group, dostępność magazynowa, kategorie → produkty). Magento odpytuje proste indeksy zamiast skomplikowanych JOINów.

Cena: zmiana w panelu admina (np. nowa cena produktu) nie pojawi się natychmiast - trzeba odświeżyć cache i/lub przeindeksować.

Cache Management

Ścieżka: System > Tools > Cache Management

Status cache

Każdy typ cache ma status:

Status Wygląd Znaczenie
Enabled zielony Działa, dane aktualne.
Invalidated żółty / pomarańczowy Działa, ale dane są nieaktualne - należy odświeżyć.
Disabled szary / czerwony Wyłączony - Magento generuje wszystko od nowa za każdym razem (wolno).

Co znaczy Invalidated: Magento sam zauważa, że jakaś konfiguracja się zmieniła i oznacza odpowiedni cache jako Invalidated. Na produkcji odśwież natychmiast - Invalidated znaczy, że obciążenie bazy rośnie.

Typy cache w Magento

Typ cache Co cache'uje Kiedy odświeżać
Configuration Konfiguracja sklepu (core_config_data). Po zmianie czegokolwiek w Stores > Configuration.
Layouts XML-e layoutów (które bloki renderują się gdzie). Po wgraniu / zmianie modułów lub motywu.
Blocks HTML output Wygenerowane fragmenty HTML bloków. Po zmianie szablonów / treści w blokach CMS.
Collections Data Wyniki collection queries. Po zmianach w katalogu (produkty, kategorie).
Reflection Data Cache PHP reflection. Rzadko - głównie po deploy nowego kodu.
Database DDL operations Schemat bazy. Po setup:upgrade.
Compiled Config Skompilowane konfiguracje DI. Po deploy kodu.
EAV types and attributes Definicje atrybutów EAV. Po dodaniu / zmianie atrybutów.
Customer Notification Powiadomienia klienta. Bardzo rzadko.
Integrations Configuration Konfiguracja integracji API. Po zmianie integrations.
Integrations API Configuration Konfiguracja API tokenów. Po zmianie integrations.
Page Cache (Full Page) Cały HTML stron (najważniejszy dla wydajności!). Po zmianach w katalogu, treści, cenach.
Translations Tłumaczenia i18n. Po wgraniu nowych tłumaczeń.
Web Services Configuration API REST/SOAP. Po zmianie webapi.xml.

Jak odświeżyć cache w panelu

  1. System > Tools > Cache Management.
  2. Zaznacz checkboxem typy cache do odświeżenia (zwykle te ze statusem Invalidated).
  3. Nad tabelą wybierz akcję Refresh.
  4. Kliknij Submit.

Przycisk "Flush Magento Cache"

W prawym górnym rogu Cache Management jest pomarańczowy przycisk Flush Magento Cache - czyści WSZYSTKIE cache sklepu.

Używaj ostrożnie: Flush całości = chwilowy duży skok obciążenia serwera (każda strona musi się od nowa wygenerować). Na produkcji odświeżaj tylko to, co trzeba - nie wszystko hurtem. Ten przycisk to "młotek na wypadek awarii", nie codzienna rutyna.

Cache przez CLI (szybsze + skryptowalne)

# Wyczyść wszystkie cache
bin/magento cache:flush

# Wyczyść konkretne typy
bin/magento cache:clean config full_page block_html

# Włącz / wyłącz konkretne typy
bin/magento cache:disable full_page
bin/magento cache:enable full_page

# Status wszystkich cache
bin/magento cache:status

clean vs flush: - cache:clean - usuwa wpisy z cache (Magento dogeneruje przy najbliższym requestie).

  • cache:flush - czyści całą warstwę cache backend (Redis, plik, Varnish). Bardziej drastyczne, czasem potrzebne np. po deploy.

Indeksery

Ścieżka: System > Tools > Index Management

Tryby indeksowania

Każdy indekser ma jeden z dwóch trybów:

Tryb Działanie Kiedy stosować
Update on Save Reindex natychmiast po każdej zmianie. Może być powolne przy masowych operacjach. Małe sklepy, środowiska testowe.
Update by Schedule Reindex partiami przez cron (typowo co minutę). Szybsze dla bulk operations. Produkcja, większe sklepy.

Schedule mode = standard produkcyjny: Na produkcji zawsze ustaw indeksery w tryb Update by Schedule - masowe zmiany (import produktów, masowy update cen) nie blokują panelu. Wymaga działającego cron-a.

Zmiana trybu

W panelu:

  1. System > Tools > Index Management.
  2. Zaznacz indekser(y).
  3. ActionsUpdate by Schedule lub Update on Save.
  4. Submit.

Lub CLI:

# Wszystkie indeksery na schedule
bin/magento indexer:set-mode schedule

# Konkretny indekser na realtime
bin/magento indexer:set-mode realtime catalog_product_price

# Sprawdź bieżący tryb
bin/magento indexer:show-mode

Status indekserów

Status Znaczenie
Ready Indeks aktualny.
Reindex required Zmienione dane czekają na reindex.
Processing Reindex w toku.

Reindex manualny

# Wszystkie indeksery
bin/magento indexer:reindex

# Konkretne
bin/magento indexer:reindex catalog_product_price catalog_category_product

Lista głównych indekserów

Indekser Co indeksuje
catalog_category_product Powiązania kategoria-produkt.
catalog_product_category Powiązania produkt-kategoria (odwrotny).
catalogrule_rule Reguły cenowe katalogu.
catalog_product_price Ceny produktów (per Customer Group, Website).
cataloginventory_stock Stany magazynowe.
inventory MSI Multi-Source Inventory.
catalogsearch_fulltext Indeks wyszukiwarki katalogu.
catalog_product_attribute Atrybuty produktu (Layered Navigation).
customer_grid Grid klientów w panelu admina.

Typowe scenariusze

Scenariusz 1: Zmieniłem cenę produktu i nie widzę zmian na froncie

bin/magento indexer:reindex catalog_product_price
bin/magento cache:clean full_page block_html

Scenariusz 2: Zaimportowałem 10000 produktów

# Przed importem
bin/magento indexer:set-mode schedule

# (po imporcie)
bin/magento indexer:reindex
bin/magento cache:flush

Import 10000 produktów w trybie realtime może trwać godzinami - schedule rozkłada to na cron i import w sumie zajmuje 10× mniej czasu.

Scenariusz 3: Edytowałem treść strony CMS i nie widzę zmian

bin/magento cache:clean full_page block_html

Scenariusz 4: Zmieniłem konfigurację w Stores > Configuration

bin/magento cache:clean config full_page

Scenariusz 5: Zmiana motywu / wdrożenie nowego modułu

bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento setup:static-content:deploy -f
bin/magento cache:flush

Scenariusz 6: "Dlaczego strona ładuje się tak wolno?"

Najczęściej Page Cache wyłączone:

bin/magento cache:status         # sprawdź status
bin/magento cache:enable full_page

Jeśli mimo to wolno - sprawdź:

  • Varnish (jeśli używany).
  • Indekser catalogsearch_fulltext (długi reindex blokuje katalog).
  • Procesory queue (bin/magento queue:consumers:list).

Cache backendy

Magento może używać różnych backendów cache:

Backend Plusy Minusy
File (default) Brak zależności, działa od ręki. Wolne, problematyczne na shared filesystem.
Redis Szybkie, scalable, dedykowane backend dla cache i sesji. Wymaga osobnego serwera Redis.
Varnish Najszybsze (Full Page Cache na poziomie HTTP). Wymaga konfiguracji + reverse proxy.

Produkcja zawsze powinna używać Redis + Varnish. File cache jest tylko dla developmentu / małych testów.

Konfiguracja w app/etc/env.php (Redis) lub app/etc/config.php (Varnish) - wymaga interwencji dewelopera.

Najczęstsze problemy

bin/magento cache:flush "command not found"

Brakuje uprawnień wykonania lub jesteś poza katalogiem Magento:

cd /var/www/magento
php bin/magento cache:flush

Po flush cache strona jest błyskawicznie wolna

To chwilowo normalne - Page Cache jest pusty, każda strona generuje się pierwszy raz wolno. Po kilku minutach normalnej pracy cache się "rozgrzewa".

Indekser stuck w "Processing"

bin/magento indexer:status   # sprawdź który stoi
bin/magento indexer:reset    # reset wszystkich
bin/magento indexer:reindex  # przeindexuj od nowa

Zmiana w panelu nie zapisuje się / nie pojawia w bazie

Cache config zachował starą wartość:

bin/magento cache:clean config

Następnie powtórz zmianę w panelu.

Page Cache jest Disabled

Sprawdź deploy mode:

bin/magento deploy:mode:show

W trybie developer Page Cache jest często wyłączony. Na produkcji zawsze ustaw:

bin/magento deploy:mode:set production
bin/magento cache:enable full_page

Powiązane