Wydajne Tworzenie Stron WWW
2 godz. 2 min · Full-stack i Programowanie
Piotr PalarzWeb DeveloperNiezależnie od tego jak skomplikowana jest dana strona czy aplikacja internetowa, zawsze składa się ona z przynajmniej dwóch komponentów - struktury opisanej w HTML i wyglądu nadanego w CSS. Praca z tymi językami może czasami przyprawić o ból głowy, szczególnie wtedy, gdy tracimy czas na szukanie powodu "rozjeżdżającego się" layoutu lub złej wielkości fontu i miejsca, w którym został on nadpisany. W takich sytuacjach Chrome DevTools to nieoceniona pomoc. Dzięki temu narzędziu w mgnieniu oka znajdziesz zbyt szeroki element, zmienisz jego style "na żywo" i upewnisz się, że problem został rozwiązany. W kursie poznasz wszystkie techniki pracy z HTML i CSS, których wykorzystanie znacznie przyspieszy i uprości Twoją pracę.
Przygotowywanie stron na urządzenia mobilne nie należy do najłatwiejszych zadań. Składa się na to przede wszystkim fakt, iż do czynienia mamy z bardzo wieloma rozdzielczościami telefonów czy tabletów. W kursie zobaczysz, w jaki sposób skalować swoją stronę odwzorowując różne urządzenia, wyświetlać Media Queries czy emulować sensory ruchu. Dowiesz się również jak symulować wolniejsze połączenie internetowe, z którym mamy często do czynienia w mobilnych sieciach, a także jak spowolnić procesor, aby odwzorować słabszy sprzęt, jakim bez wątpienia są urządzenia mobilne.
Współczesne strony internetowe to nie tylko HTML i CSS. To także JavaScript - a nawet... sporo JavaScriptu. Z tego powodu narzędzia deweloperskie przeglądarek oferują i na tym polu wiele możliwości. Jedną z nich jest konsola, która pozwala wykonywać kod JavaScript w obrębie aktualnie otwartej strony. To właśnie tam możemy eksperymentować, podglądać logi czy błędy. Kiedy jednak stajemy przed rozwiązaniem trudniejszego problemu, często niezbędne jest skorzystanie z tzw. debuggera. Z kursu dowiesz się jak debugować swoje aplikacje, aby proces ich tworzenia był jak najprzyjemniejszy. Poznasz sposoby wykonywnania kodu linijka po linijce, gdzie na każdym etapie uzyskasz wgląd we wszystkie dane niezbędne do znalezienia problemu lub przetestowania tworzonego rozwiązania.
Nim dowolna strona internetowa zostanie wyświetlona, musi najpierw zostać do przeglądarki przesłana z serwera w formie kodu. Początkowo to tylko kod HTML, chwilę później CSS, JavaScript, fonty, obrazki, multimedia. Wszystkie te zasoby mają wpływ na szybkość ładowania się strony, a także jej renderowania. Tworząc serwis, bardzo łatwo "przesadzić" i stracić kontrolę nad wydajnością tego procesu.Tutaj z pomocą przychodzi panel Network, który omówimy w kursie. To tam znajdziemy wszystkie zapytania wysłane do serwera, dokładne dane na temat czasu pobierania każdego zasobu, statusy odpowiedzi ciasteczka i wiele więcej.
Choć zarówno komputery osobiste jak i urządzenia mobilne z roku na rok stają się coraz wydajniejsze, to i technologie tworzenia aplikacji internetowych idą do przodu. Oznacza to tylko tyle, że coraz bardziej zaawansowane aplikacje, wymagają do płynnego działania, coraz mocniejszych urządzeń. Trend ten można jednak w pewnym stopniu zatrzymać, skupiając się na tym, czy aby na pewno tworzone przez nas rozwiązania są dobrze przemyślane i wolne od błędów, które mogą powodować nadmierne zużycie pamięci czy czasu procesora. W kursie zobaczysz jak badać wydajność naszego kodu w kontekście CPU i pamięci RAM oraz na jakie pułapki zwracać szczególną uwagę.
Kurs ten jest dla wszystkich osób tworzących strony i aplikacje internetowe. Nieważne czy dopiero rozpoczynasz swoją przygodę z Web Developmentem czy jesteś już weteranem w tej branży. Materiał ten pokaże Ci nowoczesne techniki pracy, które przyspieszą i uproszczą proces tworzenia i testowania stron WWW. Kurs został podzielony w taki sposób, aby zarówno osoby znające wyłącznie HTML i CSS, jak i te korzystające już z języka JavaScript, znalazły porady odnośnie tych tematów.
W tej lekcji przyjdziemy sobie do zakładki performance która nie
ukrywam że jest bardzo zaawansowana i ona się może przydać w bardzo specyficznych
momentach to znaczy jeżeli tworzysz aplikację która musi być bardzo wydajna
która ma dużo animacji to na pewno ta zakładka będzie dla ciebie przydatna
lub jeżeli będziesz chciał sprawdzić jak sobie radzi twoja strona czy aplikacja na
przykład na urządzeniach ze słabszym procesorem takich jak na przykład telefony komórkowe
ale chwilkę chciałbym zrobić wstępu żebyśmy wiedzieli o czym mówimy otóż
pamiętajmy że to jest kod html który przylatuje z serwera
do przeglądarki internetowej nie ma znaczenia czy na urządzeniu mobilnym czy na komputerze przeglądarka
musi sparsować cały ten kod stworzyć drzewo dokumentu pobrać
wszystkie style i co bardzo ważne pobrać i wykonać również skrypty więc
taki skrypt jak sobie pobierze jak tutaj to musi go sparsować następnie
musi go skopiować i wykonać no i oczywiście te wszystkie czynności
polegają na procesorze danego urządzenia więc jeżeli my na codzień
testujemy sobie strony internetowe na bardzo szybkich komputerach to nie do końca
mamy odzwierciedlenie tego jak taka strona będzie szczególnie taka która ma dużo javascriptu
i dużo styli jak ona będzie się zachowywać na urządzeniach mobilnych i o to tutaj chodzi
żebyśmy mogli tak stworzyć nasze aplikację lub tak je zbadać z użyciem panelu
performance abyśmy widzieli gdzie są jakieś potencjalne wąskie
gardła pierwszą rzeczą którą chciałbym żebyśmy zrobili to jest tutaj będąc
w tej zakładce wciśnięcie escape przejście tutaj do rendering
i zaznaczanie paint flashing bo chciałbym ci pokazać jedną rzecz za
każdym razem kiedy przeglądarka musi coś malować od nowa na ekranie oczywiście możesz
sobie wyobrazić że ona musi wszystko wyliczyć od nowa namalować te piksele i tak
dalej jest również obciążające i mam taki przykład tutaj z animacją
w css3 ale najpierw tutaj jest animacja
którą robi jQuery w taki sposób można powiedzieć stary
kiedy jeszcze nie było css3 czyli przypisuje style i zmienia
je po trochę zwróć uwagę tutaj jak ja kliknę na przesuń obraz co się
dzieje tutaj w zasadzie chodzi o to left to jest przesuwane
odświeżę jeszcze raz ci pokażę widzimy że
tutaj po troszkę to 400 jest przesuwane czyli za każdym razem jak to zmieniamy to my mówimy
przeglądarce narysuj od nowa to co widzisz teraz z kolei chciałbym żebyś się skupił
na tym ekranie i wszystko co będzie migać na zielono to są te pola
te miejsca gdzie przeglądarka musi coś wyrenderować od nowa więc odświeżam zrobię
jeszcze raz i zauważ że tutaj cały ten obrazek musiała renderować
od nowa na szczęście tylko ten obrazek czasami będziemy tutaj mieli znacznie większe
elementy które będą zmieniane znacznie większe
obszary chciałem powiedzieć więc tak to wygląda natomiast teraz
mam drugi przykład jeżeli tutaj wpiszemy finish który już wykorzystuje
animację w css3 a więc z użyciem transform i transition
jeżeli tutaj kliknę zauważ że przeglądarka nie musiała tego malować być może zauważyłeś
zróbmy jeszcze raz raz migło na zielono i drugi raz czyli pomiędzy nie musiała tego
malować i ta animacja jest po prostu dużo bardziej wydajna i chciałem ci teraz
pokazać i jak te dwie animacje można zobaczyć w panelu
performance jak to rzeczywiście wygląda więc mamy tutaj taki oto panel
i pierwsze co będę chciał zrobić to zaznaczyć sobie jeszcze CPU throttling
dlatego że mam dosyć szybki komputer i nie będzie dużych różnic pomiędzy tymi
dwoma animacjami ale jeżeli sobie zasymulujemy słabsze urządzenie jak na przykład
telefon komórkowy i powiedzmy że chciałbym zwolnić mój procesor sześciokrotnie
w komputerze tak to zasymulować to już wtedy będzie widać różnicę
w tym panelu będziemy chcieli sobie nagrać fragment tego co dzieje się
na naszej stronie i ważne jest to żeby tutaj nagrywać krótkie fragmenty żebyśmy
mogli to przeanalizować więc nacisnę tutaj record następnie przesuń obraz
i zatrzymamy nagranie więc zróbmy to teraz record przesuń
obraz i zatrzymuję i teraz będziemy mieli
taki dosyć skomplikowany widok który jednak jeżeli się wgryziemy w szczegóły to sporo
nam powie po pierwsze różnymi kolorami jak widzisz zaznaczone są różne
można powiedzieć akcje czyli najwięcej czasu tutaj zajęło scripting i jeszcze
wspomnę o tym że tutaj spowolniliśmy sobie
procesor więc normalnie byłoby to trochę szybciej
i to pokazuje że dosyć sporo zasobów procesora
było potrzebne na wykonanie skryptów javascript które umożliwiły
nam przesunięcie tego obrazka tutaj jest użyte po prostu jQuery która jest dosyć sporą biblioteką
następnie renderingi i to zajęło również sporo czasu przeglądarka
musiała renderować obraz od nowa i również go malować więc na
to warto zwrócić uwagę szczególnie jeżeli będziesz miał więcej animacji na stronie uwierz
mi że nawet bardzo mocne komputery potrafią lagować zacinać te animacje
jeżeli nie są one odpowiednio przygotowane i to można sprawdzić na przykład tutaj i
mamy teraz tutaj taki wycinek od momentu jak wcisnąłem sobie record
oraz stop który możemy sobie zawężać jeżeli będziemy potrzebowali i wtedy
wszystkie statystyki pod spodem też będą się zmieniać niemniej jednak wciąż widzimy że
szczególnie na tym odcinku kiedy dużo było rysowania widzisz podgląd
tutaj że przesuwał się ten obrazek to sporo uwagi było poświęcone na rendering
i widzimy że to jest potencjalne wąskie gardło chociaż jeżeli tutaj sobie zerkniemy
na frame to widzimy że udało nam się to utrzymać w okolicach 58
60 klatek na sekundę co przy odświeżaniu współczesnych wyświetlaczy
czyli 60 Hz daje nam płynne animacje natomiast zapewniam
cię że gdybyśmy mięli 10 jakichś obrazków które na raz się animują już by nam się nie udało
tego utrzymać właśnie w takim krótkim czasie więc na jedną klatkę mamy
około 16 milisekund jeżeli nasz kod będzie się wykonywał dłużej
to wtedy mamy do czynienia z tak zwanym framedroping czyli
będziemy widzieć takie lagowanie tej strony bo nie wszystkie klatki
zdążę na czas się wyrenderować ok
no i teraz co my tutaj możemy poprawić jeżeli już znajdziemy że wąskim gardłem u
nas w tym przypadku nie jest jakiś problem ale jeżeli wąskim gardłem zobaczymy że u
nas jest na przykład renderowanie to wtedy należy się zastanowić co robi nasz
kod że strona musi na przykład często się renderować
być może nie korzystamy z css3 i tak dalej tutaj te rzeczy będziemy
mogli znaleźć jeżeli jeszcze będziemy się wgryzać w te szczegóły natomiast w tym
przypadku nie ma takiej potrzeby bo ja wiem jaki jest tutaj problem i chciałem tylko
sygnalizować że taki panel tutaj jest który jak wspomniałem jest dosyć zaawansowany
teraz chciałem ci pokazać jak to się zmieni kiedy
wykorzystamy animacje w css3 którą ja mam tutaj tutaj jest
zwykła animacja wykonana przez
jQuery animate a w tym skrypcie skończony mamy transition która wykorzystuje
css3 więc przejdę sobie teraz do przykładów finish
i wyczyścimy sobie to co tutaj mamy i znowu będę chciał nagrać przesunąć
obraz i zatrzymać i teraz jak sobie zerkniemy
to zauważysz że mamy już zdecydowanie mniej renderingu renderingu
ale na pewno dużo mniej Paintingu tutaj z kolei Scripting teraz
zajął więcej czasu z jakiegoś powodu oczywiście
to również może się zmieniać przybliżmy sobie
zatem dokładnie w to miejsce które mieliśmy wcześniej ok ten scripting tutaj
już jest zdecydowanie mniejszy teraz i jeszcze
zawęzimy z tej strony czy dokładnie tutaj na tym zielonym gdzie ja widzę ten paint i
widzimy teraz że tego parkingu jest zdecydowanie mniej bo ta animacja była
po prostu bardziej wydajna i teraz jak sobie przeskoczymy po tych klatkach widzimy że tutaj
podobnie około tych 60 udało się utrzymać w tym przykładzie może
nie jest to aż tak bardzo widoczne ale zapewniam cię
że jak masz problemy z tym że na przykład twoja
strona laguje to włącz sobie nagrywanie powiedzmy przescrolluj stronę
bo być może masz jakieś infinite scroll lub tego typu rzeczy zatrzymaj
i spróbuj przeanalizować czego tutaj jest najwięcej czy najwięcej jest wykonywania skryptów
czy może renderingu czy malowania jeżeli tego renderingu
jest najwięcej to oznacza to że w tych skryptach bardzo
mocno modyfikuje layout twojej strony a czasami nie jest to po prostu konieczne
można te skrypty po prostu lepiej zoptymalizować lub wykorzystać na przykład css3
do jakichś animacji i będzie to wyglądało dużo lepiej