Automatycznie wczytywane opcje mogą mieć wpływ na wydajność? Znajdź winowajców
WordPress wczytuje te wiersze do pamięci przy każdym żądaniu, zanim cokolwiek innego się wydarzy. Gdy przekroczą megabajt, płaci za to każda strona sklepu.
Objaw
Wolna jest cała witryna, nie jedna strona. Panel działa ociężale, koszyk jest wolny, mimo że i tak jest wyłączony z cache’owania, a czas do pierwszego bajtu jest kiepski na stronach, które powinny serwować się natychmiast. Nic konkretnego nie wygląda źle, a każda próbowana poprawka pomaga trochę i za mało.
Od WordPressa 6.6 mówi to wprost Narzędzia → Stan witryny: Automatycznie wczytywane opcje mogą
mieć wpływ na wydajność — jako problem krytyczny, gdy dane wczytywane automatycznie osiągną
800 000 bajtów. Wtyczki mogą przesunąć ten próg filtrem site_status_autoloaded_options_size_limit.
Ile to kosztuje
WordPress wczytuje każdy wiersz opcji oznaczony autoload = yes do pamięci przy każdym żądaniu,
jednym zapytaniem, zanim jeszcze wie, jaką stronę ma wyrenderować. Tak jest zaprojektowany i przy
małych danych jest to szybkie.
Sklep WooCommerce jest nadzwyczaj skuteczny w sprawianiu, że te dane małe nie są:
- Wtyczki zapisujące całą konfigurację, dane licencji albo zbuforowaną odpowiedź API jako jedną automatycznie wczytywaną opcję.
- Wtyczki usunięte bez odinstalowania, zostawiające swoje opcje na zawsze.
- Transienty, którym nigdy nie nadano wygaśnięcia albo których sprzątanie stanęło — a to często zatrzymana kolejka zadań pokazująca się w innym miejscu.
Skutek jest najgorszy dokładnie tam, gdzie boli najbardziej. Koszyk, zamówienie i konto są z założenia wyłączone z cache’owania stron, więc płacą pełny koszt tego zapytania przy każdym załadowaniu, każdemu klientowi, dokładnie w momencie, w którym decyduje się Ci zapłacić.
Merchlint zgłasza od 1 MB. Dla porównania: szczupły sklep mieści się w niskich setkach kilobajtów.
Warto wiedzieć: WordPress 6.6 przestał domyślnie automatycznie wczytywać bardzo duże nowe opcje, więc świeża instalacja jest mniej na to podatna. Wiersze, które już istniały, zachowują nadane im ustawienie — dlatego to starsze sklepy coś tutaj znajdują.
Jak to sprawdzić samodzielnie
Najpierw suma:
wp db query "SELECT ROUND(SUM(LENGTH(option_value))/1024/1024, 2) AS mb, COUNT(*) AS wierszy
FROM wp_options WHERE autoload IN ('yes','on')"
Potem winowajcy — i to w nich siedzi odpowiedź:
wp db query "SELECT option_name, ROUND(LENGTH(option_value)/1024, 1) AS kb
FROM wp_options WHERE autoload IN ('yes','on')
ORDER BY LENGTH(option_value) DESC LIMIT 25"
WP-CLI robi to samo bez SQL-a:
wp option list --autoload=on --fields=option_name,size_bytes --orderby=size_bytes --order=desc | head -25
Prawie zawsze trzy albo cztery wiersze odpowiadają za większość sumy. To nie jest problem, który rozwiązuje się przycinaniem wszystkiego.
Jak naprawić
-
Ustal właściciela każdego dużego wiersza, zanim go ruszysz. Nazwa opcji zwykle nazywa swoją wtyczkę. Jeśli wtyczka nadal jest zainstalowana, dane mogą być potrzebne — tylko nie przy każdym żądaniu.
-
Wyłącz automatyczne wczytywanie zamiast kasować, tam gdzie dane są nadal potrzebne:
wp option set jakas_duza_opcja "$(wp option get jakas_duza_opcja --format=json)" --autoload=noOpcja zostaje; WordPress przestaje ją tylko wczytywać przed każdą stroną.
-
Usuń pozostałości po wtyczkach, których już nie masz. To są najbezpieczniejsze zdobycze i często największe. Najpierw kopia bazy — akurat to jest nieodwracalne.
-
Wyczyść wygasłe transienty, a potem napraw powód, dla którego nie były czyszczone:
wp transient delete --expired -
Policz sumę ponownie. Jeśli nie drgnęła, usunąłeś nie te wiersze.
Kiedy to fałszywy alarm
- Jedna duża opcja, której wtyczka naprawdę potrzebuje przy każdym żądaniu. Rzadkie, ale realne — niektóre page buildery i wtyczki wielojęzyczne robią tak celowo. Nie ma czego naprawiać poza wiedzą, że tak jest.
- Sklep na hostingu z dużą pamięcią i cache’em obiektowym, gdzie megabajt jest wczytywany z Redisa, a nie z MySQL-a, i kosztuje znacznie mniej. Liczbę i tak warto obserwować, bo ma tendencję do rośnięcia.
- Próg, który nie pasuje do Twojego sklepu. To jest ustawienie; duża instalacja wielosklepowa może go podnieść zamiast żyć z kontrolą, która narzeka zawsze.
Jak znajduje to Merchlint
Merchlint sumuje długość wartości wszystkich opcji oznaczonych do automatycznego wczytywania i porównuje sumę z progiem. Przy znalezisku widać sumę, próg, liczbę wierszy oraz największych pojedynczych winowajców z nazwy — bo sama suma mówi, że problem jest, i nie daje żadnego punktu zaczepienia.
Pewność: F — fakt z bazy. Suma zapisanych długości porównana z liczbą.
Ta kontrola czyta wp_options i nic poza tym. Nie zmienia żadnego wiersza, nie kasuje transientów
i nie wyłącza flag automatycznego wczytywania — naprawy z sekcji czwartej wykonujesz Ty, świadomie,
z kopią zapasową. I to jest cały kształt tej wtyczki: powie Ci dokładnie, które cztery wiersze są
problemem, i nie dotknie żadnego z nich.
Coś się nie zgadza z tym, co widzisz w sklepie? Napisz — czytamy każdą wiadomość. contact@merchlint.com
Masz wynik z wtyczki i nie wiesz, od czego zacząć? Do 15 listopada 2026 przeglądamy eksporty z dziesięciu sklepów — darmowy audyt katalogu.