87% arkusza stylów szło na darmo. Usuwanie bije minifikację
Minifikacja obcina komentarze i biale znaki. Warunkowe wypisanie pliku obcina caly plik. Pokazuje pomiar, w ktorym roznica wyniosla 87% wagi arkusza.

👁 120 przeczytań
- Arkusz szablonów ważył 75 094 bajty, z czego 87% - czyli 65 386 bajtów - było zbędne na podstronach, które nie używały żadnego szablonu.
- Warunkowe wypisanie arkusza daje 100% oszczędności na danym zasobie, podczas gdy minifikacja operuje tylko na treści pliku i nie zadaje pytania, czy plik w ogóle wysyłać.
- Na tym samym widoku wykryto też bibliotekę jQuery ładowaną mimo braku konsumenta, co dodało kolejny blokujący zasób bez żadnej korzyści dla strony.
Arkusz szablonów na mierzonej instalacji ważył 75 094 bajty i ładował się na każdej podstronie, mimo że większość stron nie używała żadnego szablonu. Wersja podstawowa tego samego arkusza ma 9 708 bajtów - czyli 87% wagi szło na darmo. Żadna minifikacja nie da takiego wyniku, bo minifikator nie wie, że plik jest tu zbędny.
Wniosek w jednym akapicie
Kolejność działań przy optymalizacji CSS jest odwrotna niż sugerują domyślne ustawienia wtyczek cache. Najpierw sprawdź, czy plik jest potrzebny na tej konkretnej podstronie - jeśli nie, usuń go z kolejki i masz 100% oszczędności na tym zasobie. Dopiero potem minifikuj to, co zostało. W moim pomiarze warunkowe wypisanie arkusza zdjęło 65 386 bajtów z każdego widoku, który szablonu nie używał. Minifikacja tego samego pliku zdjęłaby ułamek tej wartości, bo pracuje wewnątrz pliku, a nie na decyzji o jego załadowaniu. To samo dotyczyło biblioteki jQuery, ładowanej mimo braku konsumenta na stronie.
Skąd się bierze nieużywany CSS na WordPressie
Motywy i wtyczki rejestrują swoje style w jednym miejscu i wypisują je bezwarunkowo. Z punktu widzenia autora wtyczki to rozsądne: nie wie, na której podstronie jego komponent się pojawi, więc dokłada arkusz wszędzie. Problem robi się wtedy, gdy komponent jest używany na trzech podstronach z trzystu, a arkusz jedzie na wszystkich trzystu.
W mierzonym przypadku było dokładnie tak. Arkusz szablonów obsługiwał kilka wariantów układu treści - siatki, kolumny, warianty kart. Większość stron w serwisie korzystała z układu podstawowego, który potrzebuje tylko fragmentu reguł. Ten fragment to właśnie 9 708 bajtów. Pozostałe 65 386 bajtów to reguły dla szablonów, których na tych stronach nie było.
Opinia: wtyczki typu „remove unused CSS” próbują rozwiązać to automatycznie, skanując DOM i wycinając selektory. Wolałbym ręczne warunki w kodzie motywu, bo skanery często gubią klasy dodawane przez JavaScript po załadowaniu strony. Ale to ocena z mojego workflow, nie wynik pomiaru.
Co dokładnie zmierzyłem
Porównanie dotyczy jednego zasobu na jednym widoku - podstronie, która nie używała żadnego szablonu. Waga to rozmiar pliku przed transferem, bez kompresji na poziomie serwera.
| Wariant | Waga arkusza | Udział zbędnego kodu |
|---|---|---|
| Arkusz szablonów ładowany bezwarunkowo | 75 094 bajty | 87% |
| Wersja podstawowa, tylko potrzebne reguły | 9 708 bajtów | 0% |
| Różnica na podstronie bez szablonu | 65 386 bajtów | - |
Do tego doszedł drugi przypadek tej samej klasy: biblioteka jQuery ładowana mimo braku konsumenta. Żaden skrypt na tej podstronie nie odwoływał się do jQuery, a plik i tak był w kolejce, bo zarejestrowała go wtyczka aktywna globalnie.
Dlaczego minifikacja tu nie wystarczy
Minifikator robi trzy rzeczy: usuwa komentarze, usuwa białe znaki, skraca zapisy wartości. Wszystkie te operacje działają na treści pliku i żadna nie zadaje pytania „czy ten plik jest tu potrzebny”. Jeśli arkusz ma 75 094 bajty i zostawisz go w kolejce, po minifikacji nadal będzie się ładował na każdej podstronie - tylko lżejszy.
Warunkowe wypisanie działa na innym poziomie. Zamiast pytać „jak mniej waży ten plik”, pyta „czy w ogóle go wysyłać”. Na podstronie bez szablonu odpowiedź brzmi nie, więc oszczędność jest pełna: 75 094 bajty zamiast części z nich. To jest sedno tezy - przyspieszenie WordPressa zaczyna się od inwentaryzacji, nie od kompresji.
Drugi efekt, który warto policzyć osobno: mniej plików w kolejce to mniej zapytań HTTP i krótsza ścieżka krytyczna renderowania. W przypadku jQuery ładowanej bez konsumenta usunięta została nie tylko waga, ale cały blokujący zasób.
Jak to wpisać w kod motywu
Mechanika jest banalna i sprowadza się do jednego warunku w miejscu, gdzie rejestrujesz styl. Zamiast wypisywać arkusz szablonów zawsze, wypisz go tylko wtedy, gdy aktualny widok faktycznie używa szablonu. Warunek może opierać się na typie wpisu, na wartości pola w bazie, na obecności konkretnego bloku w treści - to zależy od tego, jak w danym serwisie wybiera się szablon.
Analogicznie z jQuery: jeśli żaden skrypt na widoku nie potrzebuje biblioteki, wyrejestruj ją dla tego widoku. Kluczowe jest słowo „dla tego widoku” - globalne wyłączenie jQuery na serwisie, który gdzieś jej używa, kończy się zepsutym koszykiem albo galerią.
Dzielenie arkusza na wersję podstawową i rozszerzoną to trzecia opcja, użyta w mierzonym przypadku. Wersja podstawowa (9 708 bajtów) jedzie wszędzie, bo zawiera reguły układu potrzebne na każdej stronie. Reszta dokłada się tylko tam, gdzie szablon występuje.
Czego ta metoda nie naprawi
Nie przepłacaj za te subskrypcje
Prowadzę sklep z rocznymi dostępami do narzędzi AI - te same konta, o których piszę wyżej, tylko taniej niż w cenniku producenta.
Uczciwie: warunkowe wypisanie plików nie pomaga na stronach, które rzeczywiście używają wszystkiego. Jeśli twój landing korzysta z każdego wariantu szablonu, arkusz o wadze 75 094 bajty jest tam potrzebny w całości i wtedy wracamy do minifikacji oraz kompresji transferu.
Nie rozwiązuje też problemu duplikatów - sytuacji, w której dwie wtyczki dowożą własne kopie tej samej biblioteki. To osobna robota, polegająca na ujednolicaniu zależności, a nie na warunkach.
Opinia: mimo tych ograniczeń zaczynam każdy audyt od inwentaryzacji kolejki zasobów, bo w praktyce największe liczby wychodzą właśnie tam. 87% wagi jednego pliku to skala, której nie odzyskasz żadnym parserem CSS.
Jak to sprawdzić u siebie
- Otwórz podstronę, którą uważasz za najprostszą w serwisie - zwykły artykuł bez galerii, formularzy i osadzeń.
- W narzędziach deweloperskich przełącz się na zakładkę z listą zasobów i posortuj po rozmiarze. Zapisz wagę każdego arkusza CSS i każdego pliku JavaScript.
- Dla trzech najcięższych arkuszy sprawdź w narzędziu pokrycia kodu, jaki procent reguł jest na tej stronie używany. Jeśli widzisz wartości rzędu kilkunastu procent, masz kandydata do usunięcia, nie do minifikacji.
- Dla każdego skryptu sprawdź, czy istnieje na stronie jego konsument. jQuery bez żadnego wywołania to czysty balast - dokładnie ten przypadek miałem w pomiarze.
- Ustal, od czego zależy użycie ciężkiego arkusza: typ wpisu, szablon strony, obecność konkretnego bloku. To będzie twój warunek.
- Wypisz arkusz warunkowo i przeklikaj wszystkie typy widoków - strona główna, archiwum, wpis, strona kontaktu, wyniki wyszukiwania, 404. Szukasz rozjechanego układu, nie brakującego koloru.
- Powtórz pomiar wagi z punktu drugiego i porównaj obie liczby w tabeli. Dopiero teraz włącz minifikację na tym, co zostało w kolejce.
Skąd te liczby
Wszystkie wartości pochodzą z własnego pomiaru na jednej instalacji WordPressa, wykonanego 27.09.2026. Mierzone zasoby: arkusz szablonów o wadze 75 094 bajty ładowany na każdej podstronie oraz jego wersja podstawowa o wadze 9 708 bajtów. Udział 87% to iloraz części zbędnej i całości arkusza na podstronie, która nie używała żadnego szablonu. Drugi obserwowany przypadek - biblioteka jQuery ładowana mimo braku konsumenta - został potwierdzony na tym samym widoku. Wagi podane jako rozmiar pliku, bez kompresji na poziomie serwera. Fragmenty oznaczone jako opinia są moją oceną, nie wynikiem pomiaru.
Cały tydzień w AI, w jednym mailu
Wybrane premiery, narzędzia i analizy. Raz w tygodniu, prosto do skrzynki.
Zapisz się za darmo →Najczęstsze pytania
Ile bajtów można zaoszczędzić usuwając zbędny arkusz CSS z WordPressa?
Na podstronie, która nie używa żadnego szablonu, usunięcie arkusza szablonów zaoszczędziło 65 386 bajtów z 75 094 bajtów całego pliku. Oznacza to 87% wagi pliku, której żadna minifikacja nie jest w stanie odzyskać, bo operuje na treści pliku, a nie na decyzji o jego załadowaniu.
Dlaczego minifikacja CSS nie wystarczy do optymalizacji WordPressa?
Minifikacja usuwa komentarze, białe znaki i skraca zapisy wartości, ale nie pyta, czy plik jest w ogóle potrzebny na danej podstronie. Jeśli arkusz 75 094 bajty pozostaje w kolejce, po minifikacji nadal ładuje się na każdej podstronie - tylko nieznacznie lżejszy.
Jak działa warunkowe wypisywanie stylów w motywie WordPressa?
Zamiast rejestrować arkusz bezwarunkowo, dodaje się warunek oparty na typie wpisu, wartości pola w bazie lub obecności konkretnego bloku w treści. W mierzonym przypadku arkusz podzielono na wersję podstawową 9 708 bajtów - ładowaną wszędzie - i rozszerzoną, dokładaną tylko tam, gdzie szablon faktycznie występuje.
Jak sprawdzić, które arkusze CSS są zbędne na mojej stronie?
Należy otworzyć najprostszą podstronę serwisu, w narzędziach deweloperskich posortować zasoby po rozmiarze i dla trzech najcięższych arkuszy sprawdzić procent używanych reguł w narzędziu pokrycia kodu. Jeśli wynik to kilkanaście procent, plik jest kandydatem do usunięcia z kolejki, a nie do minifikacji.
