Modelowane listy odbiorców nie zawierają konkretnych osób, tylko prawdopodobieństwa. Wyjaśniam, jak powstają, gdzie ich szukać w panelu i jak czytać ich raporty.
Pytanie o wtyczkę do podstawowych wskaźników internetowych dostaję kilka razy w miesiącu i zawsze odpowiadam tak samo: nie ma jednej. Jest za to pięć kategorii narzędzi, z których każde rozwiązuje inny problem, i jest kilka takich, po których serwis działa gorzej niż przed instalacją.
Marzec dodatkowo zmienił kontekst tej rozmowy. Odkąd wśród wskaźników pojawił się pomiar czasu reakcji na interakcje, przestało wystarczać samo przyspieszenie wczytywania. Sporo witryn, które przez dwa lata trzymały zielony wynik na zestawie wtyczek do cache’owania, straciło go z dnia na dzień.
Poniżej opisuję, czego faktycznie używam, w jakiej kolejności i gdzie kończy się to, co wtyczka może załatwić za Ciebie. Nie znajdziesz tu obietnicy jednego kliknięcia — bo takiej nie ma.
Zaczynam od tej sekcji, bo bez niej cała reszta jest naprawianiem objawów.
Serwer współdzielony o niskim priorytecie, ze starą wersją PHP i bez pamięci podręcznej po stronie serwera, wygeneruje wysoki czas odpowiedzi zanim jakikolwiek kod motywu się uruchomi. Żadna wtyczka tego nie skróci, bo problem jest przed nią w kolejce. Podobnie z bazą, w której tabela z metadanymi ma kilkaset tysięcy wierszy śmieci.
Druga rzecz to motyw. Rozbudowany kreator stron generujący zagnieżdżone sekcje, dziesiątki kontenerów i osobne arkusze stylów dla każdego bloku tworzy strukturę dokumentu, która sama z siebie kosztuje czas przy każdym przeliczeniu układu. Widzę to na większości serwisów, które przejmuję do opieki: warstwa optymalizacyjna walczy z warstwą, która produkuje problem.
To pierwsza i najważniejsza kategoria, bo dotyka czasu odpowiedzi serwera, a ten wchodzi w każdy pozostały pomiar.
Wybór zależy od środowiska, nie od rankingów w internecie. Jeżeli hosting korzysta z serwera LiteSpeed, sięgam po dedykowaną wtyczkę tego producenta — jest darmowa i korzysta z pamięci podręcznej na poziomie serwera, czego żadne rozwiązanie w PHP nie zastąpi. Na zwykłym Apache’u lub nginksie dobrze sprawdza się płatny WP Rocket, głównie dlatego, że domyślne ustawienia są bezpieczne i nie wymagają godziny testów. Z darmowych opcji sensownie działają WP Super Cache i Cache Enabler, a W3 Total Cache daje najwięcej kontroli i najwięcej możliwości zepsucia czegoś przy okazji.
Druga kategoria, w której zysk jest duży, a ryzyko małe.
Do konwersji i kompresji używam jednego z trzech narzędzi: Imagify, ShortPixel albo EWWW. Różnią się modelem rozliczeń i tym, czy przetwarzanie odbywa się na serwerze, czy w chmurze dostawcy — jakość efektu jest porównywalna. Kluczowe jest to, żeby narzędzie serwowało nowsze formaty plików z zapasową wersją dla przeglądarek, które ich nie obsługują, i żeby generowało rozsądny zestaw rozmiarów pośrednich.
Osobna sprawa to element odpowiedzialny za największe wyrenderowanie treści. WordPress od dłuższego czasu sam oznacza pierwszy obraz w treści jako priorytetowy i wyłącza dla niego leniwe wczytywanie, ale przy motywach opartych na kreatorach ta logika bywa nieskuteczna, bo grafika nagłówkowa siedzi w tle sekcji jako obraz w arkuszu stylów. Wtedy trzeba to ustawić ręcznie i żadna wtyczka nie odgadnie tego za Ciebie.
Tu przeniósł się główny ciężar pracy po marcowej zmianie w zestawie wskaźników.
Narzędzia, które używam najczęściej, to Perfmatters i Asset CleanUp. Oba pozwalają na to samo: wyłączanie konkretnych plików na wybranych adresach, typach wpisów lub całych sekcjach serwisu, bez pisania kodu. Do tego dochodzi wyłączanie funkcji WordPressa, których serwis nie używa — emotikonów, osadzeń, interfejsu programistycznego w nagłówku, wersji roboczych zapisywanych co minutę.
Czego bym nie robił bezrefleksyjnie: włączania opcji odkładania całego JavaScriptu do momentu pierwszej interakcji użytkownika. Jest w każdej większej wtyczce optymalizacyjnej, ładnie podnosi ocenę w testach laboratoryjnych i jednocześnie potrafi wyraźnie pogorszyć pomiar czasu reakcji, bo cały koszt inicjalizacji spada na pierwsze kliknięcie. Po zmianie w zestawie wskaźników ta opcja z pomocnej stała się ryzykowna i warto przejrzeć serwisy, w których została włączona rok czy dwa lata temu.
Kategoria najczęściej pomijana, a odpowiedzialna za dużą część przesunięć układu i zajętego wątku przeglądarki.
Czcionki: przechowuję je lokalnie, zamiast pobierać z serwerów zewnętrznych. Robi to za mnie większość wtyczek optymalizacyjnych, są też narzędzia wyspecjalizowane. Do tego ograniczam liczbę odmian do tych faktycznie używanych — trzy grubości zamiast siedmiu — i pilnuję sposobu wyświetlania tekstu w czasie wczytywania, żeby nie pojawiał się skok po podmianie kroju.
Banery zgód to osobny temat i po marcowych zmianach w wymaganiach dotyczących przekazywania zgód w narzędziach Google nie da się ich po prostu usunąć. Można natomiast wybrać rozwiązanie lekkie: bez animacji, bez ładowania zewnętrznych bibliotek, z treścią wstawianą w kodzie strony, a nie dorysowywaną po wczytaniu. Baner, który pojawia się z opóźnieniem i przesuwa zawartość, potrafi samodzielnie zepsuć wskaźnik stabilności układu na całym serwisie.
Bez pomiaru cała ta praca jest zgadywaniem, więc jedna kategoria narzędzi służy wyłącznie do patrzenia.
Query Monitor jest tu dla mnie pozycją obowiązkową. Pokazuje liczbę i czas zapytań do bazy, hooki, ładowane skrypty i — co najważniejsze — wskazuje wtyczkę odpowiedzialną za każde z tych zapytań. To najszybszy sposób, żeby ustalić, która wtyczka generuje dwie sekundy pracy na stronie kategorii.
Do porządków w bazie używam WP-Optimize: usuwanie wersji roboczych, autozapisów, spamu z komentarzy, osieroconych metadanych, czyszczenie tabel przejściowych. Przy serwisie z pięcioletnią historią potrafi to wyraźnie odchudzić bazę.
I rzecz najmniej techniczna, a najbardziej skuteczna: własny arkusz z listą adresów, wynikami z narzędzi Google i datami zmian. Dane polowe aktualizują się w oknie kilku tygodni, więc bez notatek nie da się połączyć efektu z przyczyną.
Na koniec pytanie, które i tak zawsze wraca.
Nie ma dobrej liczby. Jest za to reguła, która mi się sprawdza: jedna wtyczka na jedno zadanie i żadna funkcja włączona w dwóch miejscach naraz. Najgorsze wyniki, jakie widziałem, powstawały nie z braku optymalizacji, a z jej nadmiaru — dwa systemy pamięci podręcznej, dwa mechanizmy leniwego wczytywania, dwie wtyczki łączące arkusze stylów. Efekty się nie dodają, tylko wchodzą sobie w drogę.
I ostatnia myśl, mniej techniczna. Zielony wynik w narzędziach Google nie jest celem samym w sobie i nie jest gwarancją lepszych pozycji — to jeden z wielu sygnałów, i to nie najsilniejszy. Celem jest strona, na której da się pracować z telefonu w słabym zasięgu. Wtyczki pomagają w tym o tyle, o ile pod nimi jest sensowny serwer i motyw, który nie generuje pracy bez potrzeby.
Używamy plików cookies, aby ułatwić Ci nawigację oraz wykonywanie określonych funkcji. Szczegółowe informacje o wszystkich plikach cookies znajdziesz w każdej kategorii zgody poniżej.
Pliki cookies oznaczone jako "Niezbędne" są przechowywane w Twojej przeglądarce, ponieważ są one kluczowe dla zapewnienia podstawowych funkcji strony.
Używamy również plików cookies firm trzecich, które pomagają nam analizować, w jaki sposób korzystasz z tej strony, zapamiętują Twoje preferencje oraz dostarczają treści i reklamy odpowiednie dla Ciebie. Te pliki cookies będą przechowywane w Twojej przeglądarce tylko za Twoją uprzednią zgodą.
Możesz zdecydować, czy chcesz włączyć lub wyłączyć niektóre bądź wszystkie te pliki cookies, jednak wyłączenie niektórych z nich może wpłynąć na Twoje doświadczenia podczas przeglądania strony.
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| __cf_bm | 13 minutes | Cloudflare bot management — distinguishes humans from bots. |
| rc::* | Persistent | Google reCAPTCHA — localStorage holding anti-bot challenge state. |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| wpEmojiSettingsSupports | Session | WordPress — sessionStorage flag caching whether the browser can render emoji (feature detection). |
| ytidb* | Persistent | YouTube — IndexedDB storing playback/search state for embedded videos. |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| _ga_* | 400 days | Google Analytics 4 — persists session state per property. |
| _ga | 400 days | Google Analytics — distinguishes unique users via a client id. |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| NID | 183 days | Google — stores preferences for personalized ads. |
| fr | 90 days | Meta — encrypted Facebook id and browser id for ads. |
| _gcl_au | 90 days | Google AdSense/Ads — experiments with advertising efficiency (conversion linker). |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| __Secure-YNID | 180 days | |
| YSC | Session | |
| __Secure-ROLLOUT_TOKEN | 180 days | |
| VISITOR_INFO1_LIVE | 180 days | |
| VISITOR_PRIVACY_METADATA | 180 days | |
| datr | 400 days | |
| sb | 400 days | |
| wd | 7 days |