Optymalizacja wskaźników internetowych za pomocą narzędzia Lighthouse

Poszukiwanie możliwości poprawy komfortu użytkowników dzięki narzędziom internetowym Chrome.

Addy Osmani
Addy Osmani

Dzisiaj omówimy nowe funkcje narzędzi Lighthouse, PageSpeed i Narzędzia deweloperskie, które pomogą Ci określić, jak witryna może poprawić wskaźniki internetowe.

Przypominam, że Lighthouse to zautomatyzowane narzędzie open source służące do poprawiania jakości stron internetowych. Możesz go znaleźć w pakiecie narzędzi do debugowania w Chrome DevTools i uruchomić go na dowolnej stronie internetowej, publicznej lub wymagającej uwierzytelniania. Znajdziesz ją też w PageSpeed Insights, CI i WebPageTest.

Lighthouse 7.x zawiera nowe funkcje, takie jak zrzuty ekranu elementów, ułatwiające wizualną kontrolę elementów interfejsu, które mają wpływ na wskaźniki obsługi (np. które węzły przyczyniają się do zmiany układu).

W narzędziu PageSpeed Insights dodaliśmy też obsługę zrzutów ekranu elementów, co ułatwia wykrywanie problemów przy jednorazowym wyświetlaniu stron z wydajnością.

Zrzuty ekranu elementu z wyróżnionym węzłami DOM, które przyczyniają się do przesunięcia układu na stronie

Pomiar podstawowych wskaźników internetowych

Lighthouse może syntetycznie mierzyć dane dotyczące podstawowych wskaźników internetowych, w tym największe wyrenderowanie treści, skumulowane przesunięcie układu i całkowity czas blokowania (serwer proxy modułu do opóźnienia przy pierwszym działaniu). Te dane odzwierciedlają ładowanie, stabilność układu i gotowość do interakcji. Dostępne są też inne dane, np. Pierwsze wyrenderowanie treści, o którym wspominamy w przyszłości podstawowych wskaźników internetowych.

Sekcja „Dane” raportu Lighthouse zawiera wersje laboratoryjne tych danych. Możesz użyć tego widoku jako podsumowania działań, które wymagają Twojej uwagi.

Wskaźniki skuteczności Lighthouse
Dane dotyczące wskaźników internetowych w panelu wydajności narzędzi deweloperskich
Nowa opcja wskaźników internetowych w panelu Wydajność Narzędzi dla deweloperów wyświetla ścieżkę, która wyróżnia momenty z danymi, takie jak przesunięcie układu (LS) widoczne powyżej.

Dane pól, np. w Raporcie na temat użytkowania Chrome lub RUM, nie mają tego ograniczenia i stanowią cenne uzupełnienie danych laboratoryjnych, ponieważ odzwierciedlają wrażenia rzeczywistych użytkowników. Nie zapewniają one danych diagnostycznych, które można uzyskać w laboratorium, dlatego obie usługi idą ze sobą w parze.

Dowiedz się, co możesz poprawić pod kątem wskaźników internetowych

Identyfikowanie elementu o największym wyrenderowaniu treści

LCP to miara postrzeganego wczytywania. Wskazuje miejsce podczas wczytywania strony, w którym załadowano główną – lub „największą” – treść i jest ona widoczna dla użytkownika.

Lighthouse przeprowadza audyt „Największy wyrenderowany element treści”, który wskazuje, który element był największą wyrenderowaną treścią. Najedź kursorem na ten element, aby podświetlić go w głównym oknie przeglądarki.

Element największego wyrenderowania treści

Jeśli ten element to obraz, ta informacja stanowi przydatne wskazówkę, że warto zoptymalizować wczytywanie obrazu. Lighthouse udostępnia wiele audytów optymalizacji obrazów. Pomagają one określić, czy obrazy można lepiej skompresować, zmienić ich rozmiar lub wyświetlić w bardziej optymalnym, nowoczesnym formacie.

Kontrola obrazów o prawidłowym rozmiarze

Zakładka LCP Annie Sullivan może być przydatna do szybkiego identyfikowania elementu LCP za pomocą czerwonego prostokąta za pomocą jednego kliknięcia.

Wyróżnianie elementu LCP za pomocą skryptozakładek

Aby poprawić LCP, wczytuj wstępnie obrazy wykryte późno

Aby ulepszyć największe wyrenderowanie treści, wczytuj wstępnie krytyczne obrazy banera powitalnego, jeśli użytkownik wykryje je zbyt późno. Późne wykrywanie może wystąpić, jeśli przed odnalezieniem obrazu trzeba wczytać pakiet JavaScript.

Wstępne wczytywanie największego wyrenderowanego obrazu

Oto kilka częstych pytań dotyczących wstępnego wczytywania obrazów LCP, którym warto się pokrótce przyjrzeć.

Czy można wstępnie wczytywać obrazy elastyczne? Tak. Załóżmy, że mamy elastyczny baner powitalny określony za pomocą atrybutów srcset i sizes poniżej:

<img src="lighthouse.jpg"
          srcset="lighthouse_400px.jpg 400w,
                  lighthouse_800px.jpg 800w,
                  lighthouse_1600px.jpg 1600w" sizes="50vw" alt="A helpful
Lighthouse">

Dzięki dodaniu atrybutów imagesrcset i imagesizes do atrybutu link możemy wstępnie wczytywać obraz elastyczny, korzystając z tej samej logiki wyboru obrazów, którą stosują srcset i sizes:

<link rel="preload" as="image" href="lighthouse.jpg"
           imagesrcset="lighthouse_400px.jpg 400w,
                        lighthouse_800px.jpg 800w,
                        lighthouse_1600px.jpg 1600w"
imagesizes="50vw">

Czy audyt będzie też wyróżniać możliwości wstępnego wczytywania, jeśli obraz LCP jest zdefiniowany na tle CSS? Tak.

Każdy obraz oznaczony jako obraz LCP w tle CSS lub w elemencie <img> będzie kandydatem, jeśli zostanie znaleziony na głębokości co najmniej 3 w kaskadzie.

Leniwe ładowanie obrazów poza ekranem i unikanie tego w przypadku LCP

Obrazy spoza ekranu, które nie mają kluczowego znaczenia dla początkowego wrażenia użytkownika, mogą być ładowane leniwie. Jest to technika, która opóźnia pobranie obrazu, dopóki użytkownik nie przewinie w jego pobliżu, co może ograniczyć rywalizację sieci o krytyczne zasoby, a w niektórych przypadkach poprawić LCP. Audyt „Odrocz obrazy poza ekranem” może być pomocny w tych kwestiach:

Odrocz obrazy poza ekranem

Krytyczne obrazy w części strony widocznej na ekranie, takie jak obraz największego wyrenderowania treści, nie powinny być leniwie ładowane. Mogłoby to opóźnić wczytywanie obrazu LCP. Jeśli obraz LCP jest nieprawidłowo ładowany leniwie, zostanie wyświetlony komunikat z kontroli „Największy obraz wyrenderowania treści został leniwie wczytany”:

Unikaj leniwego ładowania obrazów LCP

Określ wpływ CLS

Zbiorcze przesunięcie układu to miara stabilności wizualnej. Wskazuje, jak bardzo zmienia się wygląd treści strony. W Lighthouse dostępny jest audyt na potrzeby debugowania CLS o nazwie „Unikaj dużych zmian w układzie”.

Ten audyt wyróżnia elementy DOM, które w największym stopniu przyczyniają się do zmian na stronie. W kolumnie Element po lewej stronie zobaczysz listę tych elementów DOM, a po prawej – ich ogólny udział w CLS.

Audyt dotyczący unikania dużych przesunięć układu w Lighthouse z wyróżnionymi węzłami DOM, które przyczyniają się do CLS

Dzięki nowej funkcji zrzutów ekranu elementu Lighthouse możemy zarówno wyświetlić podgląd kluczowych elementów wymienionych w audycie, jak i kliknąć, aby powiększyć, aby uzyskać bardziej przejrzysty obraz:

Kliknięcie zrzutu ekranu elementu spowoduje jego rozwinięcie.

W przypadku CLS po wczytaniu warto trwale wizualizować za pomocą prostokątów te elementy, które miały największy wpływ na CLS. Tę funkcję znajdziesz w narzędziach innych firm, na przykład w panelu podstawowych wskaźników internetowych w narzędziu SpeedCurve. Używam też generatora GIF-ów Defaced Layout Shift w przypadku:

generator przesunięcia układu

Jeśli chodzi o problemy ze przesunięciem układu w całej witrynie, bardzo przydatna jest funkcja raportu dotyczącego podstawowych wskaźników internetowych w Search Console. Dzięki temu mogę zobaczyć rodzaje stron w witrynie o wysokim wskaźniku CLS (w tym przypadku pomaga mi to określić, na które części szablonu muszę poświęcić czas):

Problemy z CLS w Search Console

Rozpoznawanie CLS na obrazach bez wymiarów

Aby ograniczyć skumulowane przesunięcie układu spowodowane przez obrazy bez wymiarów, dodaj do obrazów i elementów wideo atrybuty szerokość i wysokość rozmiaru. To podejście daje gwarancję, że podczas wczytywania obrazu przeglądarka może przydzielić odpowiednią ilość miejsca w dokumencie.

Kontrola elementów graficznych bez wyraźnej szerokości i wysokości

Przeczytaj sekcję Ponowne ustawianie wysokości i szerokości obrazów, by dowiedzieć się, jak ważne jest uwzględnianie wymiarów i współczynnika proporcji obrazu.

Rozpoznawanie CLS na podstawie reklam

Publisher Ads for Lighthouse umożliwia znajdowanie sposobów na usprawnienie wczytywania reklam na stronie, w tym wkład w przesuwanie układu i długie zadania, które mogą przyspieszyć korzystanie z Twojej strony przez użytkowników. W Lighthouse możesz to włączyć za pomocą wtyczek społeczności.

Audyty związane z Google Ads wskazują możliwości skrócenia czasu wysyłania żądań i przesunięcia układu

Pamiętaj, że reklamy to jeden z największych czynników wpływających na zmiany układu w internecie. Ważne jest, aby:

  • Zachowaj ostrożność przy umieszczaniu reklam nieprzyklejonych w górnej części widocznego obszaru
  • Wyeliminuj przesunięcia, rezerwując dla boksu reklamowego największy możliwy rozmiar

Unikaj nieskomponowanych animacji

Nieskomponowane animacje mogą sprawiać wrażenie zaciętych na słabszych urządzeniach, jeśli ciężkie zadania JavaScriptu sprawiają, że wątek główny jest zajęty. Takie animacje mogą wprowadzać przesunięcia układu.

Jeśli Chrome wykryje, że animacji nie udało się skomponować, zgłasza ją w narzędziu DevTools odczytanych przez Lighthouse, co pozwala wskazać, które elementy z animacjami nie zostały skomponowane, i z jakiego powodu. Znajdziesz je w sekcji kontroli Unikanie nieskomponowanych animacji.

Kontrola umożliwiająca unikanie nieskomponowanych animacji

Debugowanie opóźnienia przy pierwszym działaniu / Całkowity czas blokowania / Długie zadania

Pierwsze wejście mierzy czas od pierwszej interakcji użytkownika ze stroną (np. od kliknięcia linku, kliknięcia przycisku lub użycia niestandardowego elementu sterującego JavaScript) do momentu, w którym przeglądarka może rozpocząć przetwarzanie modułów obsługi zdarzeń w odpowiedzi na tę interakcję. Długie zadania JavaScript mogą wpływać na ten wskaźnik i proxy dla tego wskaźnika – Całkowity czas blokowania.

Kontrola umożliwiająca unikanie długich zadań w wątku głównym

Lighthouse obejmuje kontrolę Unikaj długich zadań w wątku głównym, która wyświetla najdłuższe zadania w wątku głównym. Pozwala to zidentyfikować czynniki o największym wpływie na opóźnienia danych. W lewej kolumnie widać adresy URL skryptów odpowiedzialnych za długie zadania w wątku głównym.

Po prawej stronie widać czas trwania tych zadań. Przypominamy, że długie zadania to zadania wykonywane przez ponad 50 milisekund. Uznaje się, że blokuje to główny wątek na tyle długo, aby miał wpływ na liczbę klatek lub opóźnienie sygnału wejściowego.

Jeśli rozważasz korzystanie z usług innych firm do monitorowania, podoba mi się również wizualizacja osi czasu wykonywania wątku głównego do zwizualizowania tych kosztów, która wyróżnia zadania nadrzędne i podrzędne przyczyniające się do długich zadań wpływających na interaktywność.

Wizualna oś czasu wykonania w wątku głównym zawiera

Blokuj żądania sieciowe, aby zobaczyć w Lighthouse widoczne zmiany przed i po

Narzędzia deweloperskie w Chrome obsługują blokowanie żądań sieciowych, dzięki czemu można sprawdzić wpływ usunięcia lub niedostępności poszczególnych zasobów. Może pomóc w poznaniu kosztów poszczególnych skryptów (np.zewnętrznych lub zewnętrznych) powiązanych z danymi takimi jak całkowity czas blokowania (TBT) i czas do pełnej interaktywności.

Blokowanie żądań sieciowych działa też w Lighthouse. Przyjrzyjmy się pokrótce raportowi Lighthouse dla witryny. Wynik Perf to 63/100, a TB to 400 ms. Podczas sprawdzania kodu okazało się, że ta witryna wczytuje w Chrome zbędne pole polyfill Intersection Observer. Zablokujmy!

Blokowanie żądań sieciowych

Możemy kliknąć prawym przyciskiem myszy skrypt w panelu DevTools i kliknąć Block Request URL, aby go zablokować. Wykorzystamy to w przypadku intersection Observer polyfill.

Blokowanie adresów URL żądań w Narzędziach deweloperskich

Teraz możemy ponownie uruchomić Lighthouse. Tym razem widzimy, że nasz wynik skuteczności poprawił się (70/100) wraz z całkowitym czasem blokowania (400 ms => 300 ms).

Blokowanie kosztownych żądań sieciowych z perspektywy działań

Zastąp kosztowne rozwiązania innych firm elementami fasadowymi

Do umieszczania filmów, postów w mediach społecznościowych i widżetów na stronach często można korzystać z zasobów innych firm. Domyślnie większość elementów umieszczanych na stronie szybko się wczytuje od razu i może zawierać kosztowne ładunki, które negatywnie wpływają na wygodę użytkowników. Jest to strata, jeśli nie jest to niezbędne (np. użytkownik musi przewinąć, aby zobaczyć ten komunikat).

Jednym ze wzorców poprawiających wydajność takich widżetów jest leniwe ładowanie ich podczas interakcji użytkownika. Można to zrobić przez wyrenderowanie lekkiego podglądu widżetu (fasadę) i wczytanie jego pełnej wersji tylko wtedy, gdy użytkownik wejdzie z nim w interakcję. Lighthouse przeprowadza audyt, który poleca zewnętrzne zasoby, które można leniwie ładować za pomocą komponentu fasadowego, np. umieszczone filmy z YouTube.

Kontrola dotycząca możliwości zastąpienia niektórych kosztownych zasobów zewnętrznych

Przypominam, że Lighthouse wyróżnia kod zewnętrzny, który blokuje wątek główny przez ponad 250 ms. Może to ujawnić wszystkie rodzaje skryptów innych firm (w tym te utworzone przez Google), które warto odroczyć lub korzystać z leniwego ładowania, jeśli ich wyświetlenie wymaga przewijania.

Zmniejszenie kosztów zewnętrznych audytów JavaScript

Więcej niż podstawowe wskaźniki internetowe

Oprócz podkreślenia podstawowych wskaźników internetowych najnowsze wersje Lighthouse i PageSpeed Insights zawierają też konkretne wskazówki, które pomogą Ci poprawić szybkość wczytywania aplikacji internetowych z dużą ilością kodu JavaScript przy włączonej mapie źródeł.

Obejmują one coraz więcej audytów obniżających koszt kodu JavaScript na stronie, na przykład zmniejszając zależność od elementów polyfill i duplikatów, które mogą nie być niezbędne ze względu na wygodę użytkowników.

Więcej informacji o narzędziach związanych z podstawowymi wskaźnikami internetowymi znajdziesz na koncie zespołu Lighthouse na Twitterze i w sekcji Co nowego w Narzędziach deweloperskich.

Baner powitalny autorstwa Mercedes Mehling w serwisie Unsplash.