Profilowanie aplikacji mobilnych HTML5 za pomocą Narzędzi deweloperskich w Chrome

John McCutchan
John McCutchan

Wstęp

Dzisiaj najważniejszą rzeczą, jaką możesz zrobić, jest zadbanie o to, aby witryna działała prawidłowo na telefonie i tablecie. Przeczytaj ten artykuł i dowiedz się, jak zoptymalizować witrynę pod kątem przeglądarki mobilnej za pomocą Narzędzi deweloperskich w Chrome i urządzenia z Androidem.

Dlaczego optymalizacja pod kątem internetu mobilnego jest tak ważna?

Występy

Po przejściu z 2G i 3G na 4G urządzenia mobilne mają szybsze procesory, więcej pamięci RAM, szybsze układy GPU i szybszy dostęp do sieci. Pomimo coraz dynamiki urządzenia mobilne mają słabą wydajność w porównaniu z komputerami. Mówiąc bardziej konkretnie, wczytywanie zasobów sieciowych trwa dłużej, rozpakowywanie obrazów trwa dłużej, malowanie strony dłużej, a wykonywanie skryptów dłużej. Możesz przyjąć, że na urządzeniu mobilnym strona działa 5–10 razy wolniej.

Bateria

Urządzenia mobilne są zasilane wyłącznie z baterii. Użytkownicy urządzeń mobilnych oczekują, że bateria będzie działać jak najdłużej. W nieoptymalnej lokalizacji bateria wyczerpuje się znacznie szybciej, niż jest to konieczne. Aby zmniejszyć obciążenie baterii, zminimalizuj ruch w sieci i zmniejszysz kolory. Podczas pobierania zasobu musi być włączone połączenie Wi-Fi lub radio komórkowe, co zużywa baterię. Gdy przeglądarka wyświetla jakiś element, zwiększa się wykorzystanie procesora i karty graficznej, co prowadzi do rozładowywania baterii.

Zaangażowanie

Skuteczność ma na celu zwiększenie wskaźników, które mają dla Ciebie największe znaczenie. Na Facebooku zależy nam na przewijaniu. W teście A/B zwolniliśmy przewijanie z 60 kl./s do 30 kl./s. Zwinięto sekcję Zaangażowanie. Powiedzieliśmy „OK”, więc przewijanie spraw.

Facebook at Edge Conference

Użytkownicy urządzeń mobilnych oczekują możliwości szybkiego rozpoczęcia działalności. Najszybsza strona wzbudzi największe zaangażowanie.

Zarządzanie wynikami

Chrome zawiera świetny zestaw narzędzi dla programistów. Z tego artykułu dowiesz się, jak korzystać z tych narzędzi do profilowania witryny mobilnej. Jeśli znasz już Narzędzia deweloperskie w Chrome, świetnie. Jeśli nie, skorzystaj z tych przydatnych samouczków:

Teraz, gdy wiesz już wszystko, zobaczmy, jak przyspieszyć stronę mobilną za pomocą Narzędzi deweloperskich. Jeśli po raz pierwszy używasz Narzędzi deweloperskich w Chrome na Androida, zapoznaj się z przewodnikiem dla początkujących na końcu artykułu.

Zdalne korzystanie z Narzędzi deweloperskich w Chrome

Mieć urządzenie z Androidem połączone z komputerem. W Chrome na komputerze wejdź na http://localhost:9222 i na urządzeniu z Androidem otwórz witrynę. Na urządzeniu z Androidem wyświetli się lista kart otwartych. Wybierz stronę z listy „Strony możliwe do sprawdzenia”.

Strony możliwe do sprawdzenia

i otworzy się strona Chrome DevTools.

Zdalne narzędzia deweloperskie

Ach... ten dobrze Ci znany pasek narzędzi Chrome DevTools jest właśnie tam. Przede wszystkim musisz wiedzieć, że Narzędzia deweloperskie w Chrome to te same narzędzia deweloperskie, których używasz obecnie na komputerze. Jedyną różnicą jest to, że to urządzenie z Androidem odpowiada tylko za stronę, a komputer – za Narzędzia deweloperskie. Te same dane są zbierane i dostępne są te same funkcje.

Przykład: wszedłem na www.sfgate.com/movies na telefonie. Podczas używania Narzędzi deweloperskich w Chrome na komputerze najechałem kursorem na element div w narzędziu Elementy. Na urządzeniu z Androidem element div (jak na komputerze) jest wyróżniony.

Fragment kodu źródłowego.
Wyróżniony div.

Za pomocą narzędzia Elementy można też włączać i wyłączać style, co może być przydatne przy sprawdzaniu czasów renderowania.

Światło przy dostępie do sieci

Wydajność sieci jest importowana, a w przypadku internetu mobilnego jest jeszcze ważniejsza. Urządzenia mobilne są często łączone wolniej niż komputery stacjonarne czy laptopy. Aby mieć pewność, że wszystko działa, zrób zrzut ekranu. W tym celu otwórz narzędzie sieciowe i naciśnij przycisk nagrywania.

Narzędzie sieciowe.

Zrzut ekranu przedstawia ruch w sieci pochodzący z wyszukiwarki Google. Obserwuj żądania sieciowe wysyłane przez Twoją witrynę i znajdź sposoby na ich zminimalizowanie. Jeśli Twoja witryna wysyła do serwera żądania odpytywania, warto zwracać uwagę na aktywność użytkowników i unikać odpytywania, gdy użytkownik był nieaktywny. Narzędzie do sieci pozwala wyświetlić nieprzetworzone nagłówki HTTP, które mogą być przydatne, jeśli sieci komórkowe w ogóle je zmieniają.

Optymalizowanie czasów renderowania

Jednym z największych wąskich gardła w przeglądarkach mobilnych jest malowanie stron. Malowanie to proces rysowania elementów strony o określonym stylu. Jeśli jeden element jest kosztowny, spowalnia on renderowanie całej strony. Chrome próbuje buforować wcześniej namalowane elementy w buforze pozaekranowym. Jednak na urządzeniach mobilnych dostępna ilość pamięci RAM GPU jest ograniczona, co ogranicza liczbę elementów, które można buforować poza ekranem. Efektem ubocznym jest więcej wyrenderowań, a każda z nich trwa wolniej niż na komputerze. Jeśli chcesz, aby przewijanie było responsywne, musisz zminimalizować czas renderowania strony.

Chrome 25 udostępnia tryb ciągłego ponownego renderowania strony. Tryb ciągłego ponownego malowania strony nigdy nie zapisuje w pamięci podręcznej wyrenderowanych elementów, a zamiast tego maluje wszystkie elementy w każdej klatce. Wymuszając malowanie wszystkich elementów każdej klatki, można przeprowadzić testy A/B czasów renderowania poprzez włączanie i wyłączanie elementów, a także włączanie i wyłączanie stylów. Choć proces jest wykonywany ręcznie, jest to nieocenione narzędzie do śledzenia, jak kosztowne jest malowanie poszczególnych elementów na stronie. Pierwszą zasadą optymalizacji jest zmierzenie, co chcesz zoptymalizować. Przeanalizujmy prosty przykład.

Najpierw włącz tryb ciągłego ponownego renderowania strony:

Gdy włączysz tę funkcję, w prawym górnym rogu urządzenia z Androidem pojawi się wykres. Oś X na wykresie przedstawia czas podzielony na ramki. Oś Y wykresu pokazuje czas renderowania w milisekundach. Jak widać, renderowanie strony na moim urządzeniu zajmuje 14 milisekund. Widoczne są też minimalne i maksymalne czasy renderowania wraz z użytą pamięcią GPU.

Przed

W ramach eksperymentu ustawiłem styl wybranego elementu na display: none. Zobaczmy, ile kosztuje teraz pomalowanie strony.

Po.

Czas renderowania został skrócony z około 14 milisekund na klatkę do 4 milisekund na klatkę. Innymi słowy, malowanie tego elementu trwało około 10 milisekund. Proces włączania i wyłączania elementów oraz ich stylów pozwala szybko znaleźć kosztowne elementy strony. Pamiętaj, że szybsze malowanie oznacza krótszy czas wczytywania, dłuższy czas pracy na baterii i większe zaangażowanie użytkowników. Jeśli chcesz dowiedzieć się więcej, przeczytaj ten artykuł na temat trybu ciągłego ponownego malowania.

Funkcje zaawansowane

informacje:śledzenie

Wiele bardziej zaawansowanych funkcji dla programistów dostępnych w Chrome na komputery jest też dostępnych w Chrome na Androida. Dostępne są na przykład about:gpu-internals, about:appcache-internals i about:net-internals. Podczas badania szczególnie trudnego problemu czasami potrzebujesz więcej danych, aby znaleźć jego przyczynę. Na komputerze możesz używać adresu about:tracing. Jeśli nie wiesz, czym jest about:tracing, obejrzyj mój film o korzystaniu z narzędzia do profilowania about:tracing. Te same dane można przechwycić z Androida Chrome. Aby rozpocząć, wykonaj te czynności:

  1. Pobierz plik adb_trace.py
  2. Uruchom plik adb_trace.py z poziomu wiersza poleceń
  3. Korzystanie z Chrome na Androidzie
  4. Naciśnij Enter w wierszu poleceń, aby wyłączyć skrypt adb_trace.py.

Po zakończeniu operacji adb_trace.py uzyskasz plik JSON, który możesz załadować w przeglądarce Chrome about:tracing na komputerze.

Przewodnik dla początkujących

Po omówieniu funkcji zdalnych Narzędzi deweloperskich w Chrome przejdźmy do tego, jak rozpocząć sesję debugowania zdalnego. Jeśli jeszcze z nich nie korzystasz,przeczytaj szczegółowe instrukcje na początek. Jeśli już z nich korzystałeś, ale nie pamiętasz dokładnie, jak z nich korzystać, możesz też skorzystać z tych skróconych instrukcji.

1. Zainstaluj pakiet SDK na Androida

Być może zastanawiasz się, dlaczego musisz zainstalować pakiet SDK do Androida podczas tworzenia aplikacji w internecie. Pakiet SDK zawiera narzędzie adb (Android Debug Bridge). Komputer musi mieć możliwość komunikacji z urządzeniem z Androidem. Chrome nie komunikuje się bezpośrednio z urządzeniem z Androidem, tylko kieruje komunikację przez adb.

Mostek ADB.

2. Włącz debugowanie USB na urządzeniu

Włącz debugowanie USB

Opcję debugowania USB znajdziesz w Ustawieniach Androida. Włącz je.

3. Połącz z urządzeniem

Podłącz swoje urządzenie z Androidem do pulpitu przez USB (o ile nie zostało to jeszcze zrobione). Jeśli używasz debugowania USB po raz pierwszy, zobaczysz następujący komunikat:

Zezwalaj na debugowanie USB

Jeśli często przeprowadzasz zdalne sesje debugowania, polecamy opcję „Zawsze zezwalaj z tego komputera”.

4. Sprawdź, czy urządzenie jest prawidłowo połączone

Uruchom polecenie adb devices w wierszu poleceń. Urządzenie powinno być widoczne na liście.

5. Włączanie debugowania USB w Chrome

Otwórz Settings > Advanced > DevTools (Ustawienia > Zaawansowane > Narzędzia deweloperskie) i zaznacz opcję Włącz debugowanie sieci USB, jak pokazano poniżej:

Zezwalaj na debugowanie USB

6. Tworzenie połączenia Narzędzi deweloperskich z urządzeniem z Androidem

Uruchom to polecenie:

adb forward tcp:9222 localabstract:chrome_devtools_remote

tworzy most między komputerem stacjonarnym a urządzeniem z Androidem za pomocą narzędzia adb. Jeśli na tym etapie napotkasz jakieś problemy, zapoznaj się ze szczegółowymi instrukcjami konfiguracji tutaj.

7. Potwierdzam, że wszystko jest w porządku

Sprawdź, czy urządzenie jest prawidłowo połączone, otwierając Chrome na komputerze i przechodząc pod adres http://localhost:9222. Jeśli pojawi się błąd 404, inny błąd lub coś takiego:

Strony, które można sprawdzić.

Szczegółowe instrukcje konfiguracji znajdziesz tutaj.

Podsumowanie

Użytkownicy urządzeń mobilnych często się spieszą i muszą szybko uzyskać ważne informacje z Twojej strony. Jako twórca witryn mobilnych musisz zadbać o to, by strona wczytywała się szybko i działała dobrze na urządzeniach mobilnych. W przeciwnym razie zaangażowanie użytkowników spadnie. Zdalne Narzędzia deweloperskie w Chrome mają funkcjonalne odpowiedniki z komputerów. Interfejs jest na tyle podobny, że nie musisz uczyć się korzystania z nowego zestawu narzędzi. Innymi słowy, Twoja praca zostanie przeniesiona na inne. Pamiętaj, że problemy z wydajnością Facebooka nie są ograniczane, podobnie jak Twoja witryna. Skuteczne strony zwiększają zaangażowanie użytkowników.