Przejdź do treści
online
plv0.46.1 · 1d135e2

Szybka strona, która pozostaje szybka

Raz przyspieszyć stronę jest łatwo; trudniej utrzymać tempo, gdy przybywa funkcji. Dlatego szybkość przestała być u nas jednorazowym audytem i stała się testem, który musi przejść każda zmiana.

Ilustracja: cztery wskaźniki wyniku na poziomie 100 nad wykresem, na którym pierwsze pomiary przekraczają linię budżetu, a pozostałe są poniżej niej.

Raz przyspieszyć stronę jest łatwo. Trudniej utrzymać ją szybką, gdy wciąż dochodzą nowe funkcje: każdy nowy komponent, font czy biblioteka sprawia, że strona jest trochę cięższa, i nikt tego nie zauważa, dopóki strona nie zacznie działać wolno. Dlatego przestaliśmy traktować szybkość jak jednorazowy audyt i zrobiliśmy z niej test, który musi przejść każda zmiana.

Punkt wyjścia

Gdy po raz pierwszy poważnie zmierzyliśmy tę stronę, układ skakał podczas ładowania (Cumulative Layout Shift w okolicach 0,2), a główna treść pojawiała się po 4–6 sekundach na spowolnionym łączu mobilnym. Główny arkusz stylów ważył 41 KB po kompresji, głównie dlatego, że komponenty i kod walidacji przeznaczone dla panelu administracyjnego trafiały także do odwiedzających.

Co zmieniliśmy

  • Odwiedzający dostają tylko kod dla odwiedzających. Biblioteka UI panelu i biblioteka walidacji formularzy nie trafiają już na publiczną stronę. Test przechodzi po importach strony i kończy się błędem, jeśli któraś z nich znów się przemyci.
  • CSS tylko dla tego, co jest na stronie. Główny arkusz stylów zmalał z 296 KB do 98 KB, a po kompresji do 16 KB.
  • Fonty, które nie przesuwają układu. Kluczowe fonty są wczytywane z wyprzedzeniem, a strona nie pobiera już zawczasu kodu, który może nigdy nie być potrzebny.

Test, który tego pilnuje

Przy każdym pull requeście CI buduje stronę, serwuje ją tak jak produkcja — HTTP/2, TLS, kompresja — i trzy razy uruchamia Lighthouse na czterech kluczowych stronach, biorąc medianę. Budżet: każdy wynik co najmniej 95, największy element treści widoczny w mniej niż 2 sekundy, przesunięcie układu poniżej 0,1, blokowanie głównego wątku poniżej 200 ms. Jeśli zmiana przekroczy budżet, CI robi się czerwone i zmiana nie zostaje scalona. Równolegle działa kontrola dostępności, która obecnie nie znajduje naruszeń WCAG AA na sprawdzanych stronach.

Wynik

W CI strony mają 100 punktów we wszystkich czterech kategoriach Lighthouse, a główna treść jest widoczna w mniej niż sekundę. Na działającej stronie strona główna ma 100 punktów z główną treścią po około 1,2 sekundy, a strona produktu — 98.

Uczciwie mówimy też o tym, co nie jest jeszcze idealne: strony po japońsku i w innych językach CJK są wolniejsze, bo ich fonty są znacznie większe. Na to jest osobne zadanie.

Dlaczego to ważne dla Państwa

Wolna strona traci odwiedzających, zanim przeczytają choć słowo, a wyszukiwarki też to zauważają. Jeśli budują Państwo z nami landing page albo sklep, ten budżet jest w pakiecie — to część naszego sposobu pracy, a nie dodatek.

Porozmawiajmy o Państwa stronie