Merchlint
Dostępne teraz
Następne, w tej kolejności
  • DeutschDE
  • EspañolES
  • FrançaisFR
  • ItalianoIT
  • PortuguêsPT
  • NederlandsNL
  • SvenskaSV
  • TürkçeTR

Język pojawia się tutaj dopiero wtedy, gdy jego strony są naprawdę napisane. Nic na tej witrynie nie jest tłumaczone maszynowo.

Zainstaluj za darmo
← Wszystkie kontrole

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.

Grupa
Media
Pewność
F — fakt z bazy danych
Wersja
Darmowa
Aktualizacja
Kod
D2

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.

Film, 1:25 — Opcje autoload spowalniają WooCommerce? Znajdź winowajców

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ć

  1. 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.

  2. 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=no

    Opcja zostaje; WordPress przestaje ją tylko wczytywać przed każdą stroną.

  3. 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.

  4. Wyczyść wygasłe transienty, a potem napraw powód, dla którego nie były czyszczone:

    wp transient delete --expired
  5. 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.

Uruchom tę kontrolę w swoim sklepie

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.