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.
Przechodzimy do kolejnego panelu niezwykle istotnego w
kontekście tworzenia stron internetowych a jest to panel network ten
panel pokazuje nam wszystkie zasoby jakie zostały pobrane
przez naszą stronę internetową i dla każdego z nich
możemy zobaczyć bardzo dokładne szczegóły czyli jakie
nagłówki zostały wysłane jakie otrzymaliśmy z powrotem jakie statusy i tak
dalej zaraz ci to wszystko będę chciał pokazać jak odświeżymy sobie naszą stronę
i tutaj jest zaznaczone nagrywanie teraz mogę zrobić stop recording ale
jeżeli zaznaczymy to na nagrywanie i odświeżę stronę zauważ że ona się bardzo szybko wczytała
ale to wynika głównie z tego że jest ona lokalnie u mnie na komputerze i
część rzeczy zostały wyczytane z pamięci tutaj mamy taki tak
zwany waterfall mogę za pomocą kółka na myszy sobie tutaj zawężać
i zauważ że również wszystkie zasoby które jest pokazane że się wczytały
pod spodem nam się tutaj zawężają czyli mogę zobaczyć w
takim małym czasie co wczytało a co w całym czasie jest to bardzo
tutaj przydatne natomiast warto zwrócić uwagę na to że zasoby wczytują
się w takiej kolejności jak tutaj widzimy czyli najpierw wczytał nam się dokument jest
jego podgląd ale dokładny tekst jaki otrzymaliśmy z serwera jest tutaj czyli
odpowiedź no i jak wiesz być może przeglądarka internetowa kiedy
otrzyma taki kod html zaczyna go parsować i kiedy zobaczy na przykład link
i widzisz że tutaj jakieś style musi pobrać wysyła po ten po te style zapytanie
więc widzimy że to zapytanie jest tutaj potem po kolejne po kolejne i tak
dalej parsuje dokument tworzy drzewo dom które widzieliśmy w panelu elements później dochodzi
na przykład do skryptów które są u dołu i też je będzie wczytywać gdybyśmy sobie
tutaj przefiltrowali na przykład kropka js zauważ że znajdzie nam
wszystkie skrypty które zostały pobrane warto również zauważyć że
tutaj można filtrować po typie na przykład javascript css obrazki
media tutaj mogą być na przykład wideo fonty i tak dalej z tym
że jak raz sobie coś tutaj zaznaczysz to zwracaj uwagę czy to jest zaznaczone bo możesz
później szukać tutaj czegoś innego nie widzisz tego bo zawęziłeś sobie wyniki tutaj
możemy z pomocą command lub control
zaznaczać kilka jak widzisz tych przycisków żeby
sobie to odpowiednia przefiltrować natomiast all zwraca nam wszystkie co
ten panel nam tutaj jeszcze dokładnie pokazuje otóż jeżeli sobie klikniemy
jakiś zasób który został pobrany to przede wszystkim co może być bardzo istotne widzimy
nagłówki http czyli mamy request headers a więc
te które przeglądarka wysłała do serwera prosząc go o ten zasób pod takim adresem powiedziała
co akceptuje jakie może być kodowanie czyli kompresja na
przykład gzip i tak dalej te nagłówki bardzo się przydają szczególnie wtedy kiedy
tworzysz również backend czyli piszesz kod serwerowy żeby zobaczyć co dokładnie
leci do serwera a także co dostajesz z powrotem czyli response headers
to jest to co odesłał nam serwer i to się może różnić w zależności od zasobu
i zależności od konkretnego serwera widzimy również status 304
not modified normalnie mielibyśmy tutaj status na przykład 200 to
by oznaczało taki taką standardową odpowiedź tutaj zostało
to nie zmodyfikowane więc taki nagłówek czy taki status został zwrócony preview
to jest taki podgląd który przeglądarka próbuję nam pokazać przy stylach może
to wyglądać tak natomiast samo response czasami wygląda to tak samo ale
samo response to będzie dokładnie odpowiedź na przykład tekst
który został przesłany z serwera tutaj mamy initiator
czyli kto rozpoczął to zapytanie w przypadku tego głównego dokumentu
tutaj nie ma to znaczenia ale w przypadku na przykład styli możesz dokładnie
zauważyć że ten pierwszy zasób rozpoczął pobieranie
drugiego zasobu czasem może być tak że to z poziomu skryptu javascript doładowujemy
jakieś zasoby i dzięki temu będziemy również mogli to zobaczyć następną
rzeczą jest timing i tutaj chciałbym ci pokazać ten timing na innym przykładzie
i wyjaśnijmy sobie co tutaj dokładnie się znajduje jesteśmy na tej stronie ajaxowej
gdzie wysyłamy zapytanie pod taki adres i będę ci mógł pokazać
jak ten timing działa więc po pierwsze w konsoli zaznaczymy sobie
log xml request wyślemy zapytanie i
to nam pozwala tutaj zobaczyć dokładnie coś takiego i teraz
mogę sobie to kliknąć przeniesie nas do panelu network lub mogłem w panelu network
zawęzić sobie to w ten sposób czyli jeżeli bym teraz jeszcze raz wysłał
takie zapytanie zauważ że ono się też tutaj pojawi albo pokazać wszystkie
i filtrować albo wybrać xhr i teraz jeżeli sobie tutaj przejdziemy
to chciałbym się skupić na tej zakładce timing w tej zakładce widzimy
dokładnie wszystkie czasy które tutaj się złożyły
na całkowity czas pobrania tego zasobu najpierw widzimy queueing i to
oznacza kolejkowanie tutaj było bardzo szybkie i o co tutaj chodzi otóż
że jeżeli serwer wykorzystuje protokół http 1 to
wtedy możemy pobierać jednocześnie tylko sześć plików więc jeżeli
przeglądarka ma do pobrania na przykład 10 plików css to 6 będzie pobierała
jednocześnie pozostałe będą kolejkowane i czas tego kolejkowania tutaj zobaczymy kiedy
1 się pobierze kolejny wskoczny na kolejkę przy protokole http 2
już tego problemu nie ma następnie tutaj widzimy stalled czyli
ile musieliśmy oczekiwać na rozpoczęcie tego połączenia i
teraz to co nas najbardziej interesuje to jest wysłanie tego zapytania widzimy
że ono było piekielnie szybkie następnie to co jest tutaj istotne jest
to waiting czyli oczekiwanie na odpowiedź serwera i TTFB oznacza time to first
byte a więc wysłaliśmy zapytanie i ile czasu upłynęło aż
serwer wysłał nam pierwszy bajt czyli w to się nie wlicza pobieranie dlatego
że pobieranie jest dalej i pobieranie zajęło jak widzisz jedną milisekunde
tak naprawdę bo tych danych nie było dużo ale serwer potrzebował ponad sekundy
na to aby nam w ogóle zacząć cokolwiek odsyłać dlaczego
to jest istotne jest to istotne choćby z tego powodu że dzięki temu możemy
zobaczyć że na przykład nasza strona działa powoli bo problemem jest serwer
a nie zasoby frontendowe jeżeli byśmy sobie tutaj przyszli do all i zobaczyli
to nasz główny dokument to on jak widzisz tutaj również bardzo szybko się wczytał bo jest
to z lokalnego serwera ale gdybyś wszedł teraz na dowolną stronę i zobaczył ile
tutaj jest waiting czyli time to first byte to zobaczyłbyś ile serwer potrzebuje
na przetworzenie takiego żądania i kiedy dopiero zaczyna nam cokolwiek
odsyłać natomiast content download to zawsze będzie pokazywało ile
zajęło przeglądarce pobranie tego zasobu oczywiście to zależy od wielkości zasobu i
szybkości połączenia tutaj jeszcze przy tym dokumencie możemy zobaczyć coś
takiego jak dns lookup i initial connection dns lookup to jest
wyszukiwanie adresu ip czyli jeżeli wejdziesz na przykład na stronę eduweb.pl to
przeglądarka najpierw musi znaleźć pod jakim adresem ip znajduje
się domena eduweb.pl to będzie widać właśnie tutaj i będziemy
tutaj mogli mieć również coś takiego jak ssl handshake czyli jeżeli będzie protokół https
to wtedy będziemy widzieli ile zajęło tak naprawdę ustalenie w
jaki sposób będzie to szyfrowanie przebiegać i tak dalej więc wszystko tutaj
w tej zakładce timing widać i dlatego ona jest tak bardzo przydatna właśnie
wtedy kiedy twoja strona na przykład działa powoli i chcesz znaleźć powód to
tyle w tej lekcji w kolejnej jeszcze pozostaniemy w zakładce network i pokażę ci kilka ciekawych rzeczy