Jak mierzyć prędkość strony internetowej przy użyciu Lighthouse

Na początek trochę teorii. Lighthouse to darmowa aplikacja służąca do automatycznego testowania stron internetowych pod kątem ich wydajności, dostępności, optymalizacji pod kątem wyszukiwarek internetowych. Testować przy pomocy Lighthouse możemy również aplikacje typu PWA (Progressive Web App).

Narzędzie jest częścią projektu Google Chrome i jego kod źródłowy znajduje się GitHub.

Core Web Vitals i indeksowanie stron przez Google

W kwietniu 2021 Google ogłosiło, że od czerwca 2021 będzie brało pod uwagę przy indeksowaniu stron ich wygląd i działanie.

Do tej pory w swoim algorytmie Google uwzględniało przyjazność strony dla urządzeń mobilnych. Bezpieczeństwo rozumiane jako brak wirusów na stronie. Zabezpieczenie https, czyli poprawnie skonfigurowany certyfikat bezpieczeństwa SSL umożliwiający szyfrowanie strony przy użyciu protokołu SSL, brak agresywnych reklam zakrywających całą powierzchnię strony.

Według nowych zasad na pierwsze miejsca wyjdą wskaźniki Web Vitals, a właściwie 3 kluczowe wskaźniki nazwane Core Web Vitals (a po polsku podstawowe wskaźniki internetowe).

Co to jest Core Web Vitals

Lista wskaźników Web Vitals i ich skróty:

Nazwa wskaźnika Skrót
First Contentful Paint FCP
Speed Index SI
Largest Contentful Paint LCP
Time to Interactive TTI
Total Blocking Time TBT
Cumulative Layout Shift CLS
First Input Delay FID

Najważniejsze z nich to 3 wskaźniki nazwane właśnie Core Web Vitals. Są to:

Nazwa wskaźnika Skrót
Largest Contentful Paint LCP
First Input Delay FID
Cumulative Layout Shift CLS

Largest Contentful Paint (LCP) - najważniejsze ze wskaźników CWV. Określa go czas potrzebny na załadowanie głównego i największego elementu na stronie. Może to być tekst lub obraz, który będzie widoczny w tzw. viewporcie strony od momentu rozpoczęcia ładowania strony. Wynik uznawany za dobry musi być krótszy od 2.5 sekundy na urządzeniach mobilnych. W LCP brane są pod uwagę takie elementy jak: <img>, <image>, <video>, <svg>, bloki tekstu, tło wypełnione gradientem. Czas dłuższy niż 4 sekundy oceniany jest jako słaby. Pomiędzy 2.5 sekundy a 4 sekundy to średni wynik.

First Input Delay (FID) - mierzy czas potrzebny na interakcję strony od momentu kliknięcia/tapnięcia strony przez użytkownika do momentu, kiedy strona rozpocznie przetwarzanie zdarzenia. Czas uznawany za dobry musi być krótszy od 100 ms. Powyżej 300 ms wynik będzie słaby. Czas pomiędzy 100 i 300 ms będą uznawane za średnie.

Cumulative Layout Shift (CLS) - tym wskaźnikiem mierzone są nieoczekiwane przesunięcia i zmiany położenia obiektów na stronie podczas jej ładowania. Dzieje się tak, gdy elementy DOM ładowane są asynchronicznie i dodawane dynamicznie do wcześniej utworzonej struktury DOM. Wynik wyliczany na podstawie wzoru uznawany za dobry nie może przekraczać wartości 0.1. Od 0.1 do 2.5 wynik jest średni, a powyżej uznawany za słaby.

Lighthouse 8.0

Lighthouse o którym wspominaliśmy na początku to darmowe narzędzie do audytu strony z którego korzysta wiele narzędzi.

Wyniki audytu z programu lighthouse

Raport można wygenrować w podziale na kategorie:

Audyt wydajność strony internetowej

Obliczając wydajność strony internetowej Lighthouse bierze pod uwagę kilka wskaźników i ich wagi i na tej podstawie wylicza końcowy wynik w procentach. Poniżej rozkład wag i wskaźników dla Lighthouse w wersji 8.0. Audyt programem Lighthouse można wykonać osobno dla wersji mobile i desktop strony internetowej. Warto jednak zawsze testować wersję mobile, bo wynik tego testu brany jet pod uwagę przez Google przy ustalaniu wyników strony w wyszukiwarce.

Lighthouse 8.0
Wskaźnik Waga
First Contentful Paint 10%
Speed Index 10%
Largest Contentful Paint 25%
Time to Interactive 10%
Total Blocking Time 30%
Cumulative Layout Shift 15%

Jak wpływają wynikach na poszczególnych wskaźnikach na rezultalt końcowy możemy sobie zasymulować korzystając z Lighthouse Scoring Calculator. Narzędzie pozwala obsługuje algorytmy z kilku wersji Lighthouse oraz osobno wylicza wynika dla wersji desktop i mobile

Kalkulator lighthouse w akcji

Audyt dostępności strony internetowej

Audyt dostępności w programie Lighthouse bazuje oczywiście na wytycznych WCAG i bada szereg elementów wpływających na dostępność strony z punktu widzenia osób ze szczególnymi potrzebami. Ten audyt jest jeszcze bardziej restrykcyjny od audytu dostępności. Przykładowo jeśli na stronie znajduje się 10 przycisków <button> i dziwięć jest poprawny a jeden nie ma nazwy zgodnej z zasadami WCAG to strona otrzymuje 0% dla tego testów. Testy składające się na dostępność to temat na osobny artykuł wymienimy więc tylko kilka. Nagłówki (headers). Audyt dostępności bada czy nagłówki występują w odpowiedniej kolejności, czyli po nagłówku <h1> jest nagłówek <h2> a nie na przykład <h3>. Bada jest poprawna kolejność [tabindex]. Poprawność atrybutów [aria-*]. Atrybut [alt] dla obrazków i elementów input type="image". Przypisanie labeli do odpowiednich elementów i wiele, wiele więcej.

Audyt najlepsze praktyki

W tym audycie Lighthouse sprawdza wiele elementów kodu HTML, na przykład czy dokument posiada odpowiednio ustawiony doctype. Błędy w konsoli. Wyświetlanie obrazków w niewłaściwych proporcjach. Sprawdzane jest czy serwer obsługuje HTTP/2. Sprawdzenie czy stronie nie używa document.write(). Badana jest wydajność skrolowania strony. Sprawdzane jest czy strona korzysta z https. Sprawdzana jest podatność target="_blank". Lighthouse sprawdza wersje zewnętrznych bibliotek i w przypadku wykrycia starszych wersji ostrzega o ich ewentualnych podatnościach.

Narzędzia do mierzenia szybkości strony internetowej

PageSpeed Insight - strona internetowa podająca w przystępny sposób szybkość strony w wersji “na komórki” i “na komputery”. Dane pochodzą z testów laboratoryjnych oparty na Lighthouse 8.0 (w momencie pisania tego tekstu).

Page Speed Insight raport na komputery

Web.dev - strona mierząca wydajność stron internetowych w oparciu o oprogramowanie Lighthouse. Serwer web.dev działa w Stanach Zjednoczonych. Dlatego testując strony na serwerach w Polsce będziemy otrzymywali inne wyniki wydajności niż w przypadku Lighthouse uruchomionego lokalnie na komputerze. Co więcej przy każdym uruchomieniu audytu na stronie web.dev wynik testu wydajności może być różny. Wpływ na niego ma jakość połęczenia internetowego między serwerami w USA i Polsce.

Web dev - mierzenie wydajności strony

Search Console - Raport "Podstawowe wskaźniki internetowe" od niedawna dostępny jest również w narzędziu Search Console. Search console jest o tyle pomocne, że analizuje wszystkie strony w naszej domenie i pokazuje napotkane problemy.

Search Console raport podstawowe wskaźniki internetowe

Chrome Dev Tools - oprogramowanie lighthouse można uruchomić z poziomu narzędzi developerskich w przeglądarce Chrome. Przypomnę, że narzędzia uruchamiamy skrótem Command + Option + J w systemie MacOS, Control + Shift + J na Windowsie. Następnie klikamy zakładkę "Lighthouse" i przyciskiem "Generate Report" uruchamiamy program.

Lighthouse w narzędziach developerskich Google Chrome

Lighthouse (pakiet NPM) - Lighthouse można ściągnąć jako pakiet Node.js i uruchamaić z poziomu CLI. Do działania wymagany jest Google Chrome.

npm install -g lighthouse

Audyty uruchamiamy poleceniem:

lighthouse <url>

Ten sposób nadaje się do automatyzacji przy tworzeniu oprogramowania i sprawdzaniu czy zmiany w kolejnych wersjach nie wpłynęły na pogorszenie jakości strony.

Lighthouse Extension - rozserzenie z Chrome Web Store uruhamiające pełny audyt Lighthouse.

Rozszerzenie Lighthouse do przeglądarki Chrome

Web Vitals rozszerzenie do Chrome - dostępne w Chrome Web Store rozszerzenie na bieżąco sprawdza 3 główne wskaźniki internetu pokazując je w formie kolorowego kwadratu, a po kliknięciu zmierzone wartości.

Rozszerzenie Web Vitals do przeglądarki Chrome