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.
Pozostajemy jeszcze w panelu network dlatego że chciałbym ci pokazać jeszcze
kilka funkcji które się tutaj znajdują przyjdziemy sobie przede
wszystkim do tego głównego widoku tutaj można nacisnąć x żeby wrócić do tej listy
wszystkich zasobów jakie się w czytały widzimy wszystkich statusy i teraz
zauważ jedną rzecz tutaj mamy coś takiego jak rozmiar gdzie też swoją drogą możemy posortować
po największych zasobach po najmniejszych i tak dalej ale mamy również
tutaj jeszcze coś takiego jak memory cashe i teraz co to oznacza to
oznacza tylko tyle że dany zasób nie został pobrany z serwera ale
został wczytany z pamięci podręcznej przeglądarki i to ogólnie jest dobra rzecz że przeglądarki
pobierają zasoby raz a później serwują je z pamięci podręcznej przeglądarki
natomiast czasami jest tak że chcemy albo zobaczyć
dokładnie ile zajuje jakiś plik bo tutaj sobie to badamy albo chcemy
co jest częstsze wymusić pobranie wszystkich zasobów od nowa dlaczego
otóż dlatego że powiedzmy zmieniamy sobie coś w naszym skrypcie odświeżamy stronę i to nie działa i
czasami można się naprawdę bardzo sfrustrowac dlaczego na naszej stronie nie zostały
odzwierciedlone zmiany które wpisaliśmy w kodzie i tak może dziać się dlatego że
przeglądarka po prostu wczytuje ten kod z pamięci podręcznej wtedy wystarczy
że zaznaczymy tutaj opcję disable cache i po odświeżeniu strony wszystkie
zasoby będą musiały się pobrać od nowa natomiast tylko wtedy kiedy chrome
devtools jest otwarty dlatego ja zazwyczaj tę opcję mam zaznaczoną jeżeli tutaj
to zamknę wtedy to nie ma znaczenia mogę chodzić normalnie po internecie wszystko
wczytuje się szybko bo przeglądarka ignoruje to ustawienie natomiast w momencie
w którym otworzę chrome devtools to to ustawienie jest brane pod uwagę
odświeżam i jak widzisz wszystko się pobrało od nowa i dzięki temu mogę
zobaczyć dokładnie ile dany zasób po prostu zajmował i tutaj na pierwszy rzut oka
pokazuje nam na przykład 64 kilobajty to oznacza że tyle zostało przetransferowane
przez sieć ale to nie znaczy że zasób docelowo tyle zajmuje bo jeżeli
na przykład zobaczymy te fonty z google fonts to zauważ że tutaj 680
bajtów musieliśmy tylko pobrać a ten zasób zajmuje 4,9
kilobajta i to wynika z tego że tutaj została zastosowana kompresja
jeżeli sobie klikniemy to będziemy mogli zobaczyć w odpowiedzi serwera że mamy
content-encoding gzip czyli to mówi przeglądarce że zostało to skompresowane
gzipem i przeglądarka może to rozpakować bo ta z kolei wysyłając
zapytanie czyli tutaj request headers powiedziała że akceptuje
taki encoding gzip czyli rozumie o co w tym chodzi serwer odesłał zasób mówiąc
jak jest on skompresowany można go teraz po prostu rozpakować i
dzięki temu zaoszczędzić na ruchu sieciowym kolejną rzeczą którą
chciałbym ci pokazać takim trikiem jest to że w tym filtrze możemy wpisać sobie larger
than czyli większa od i wpisać na przykład 100 kilobajtów
zauważ że wtedy nam pokaże wszystko większe od 100 kilobajtów gdybyśmy wpisali na przykład
1 m to jest to 1 megabajt a jeżeli wpiszemy po prostu
100 to jest to 100 bajtów czyli w ten sposób możesz przefiltrować sobie
na przykład obrazki klikając tutaj na img na tej stronie tutaj nie mieliśmy żadnego
obrazka na to wygląda i możemy przefiltrować większe od i
wtedy po prostu zobaczyć na przykład które obrazki zajmują zbyt dużo miejsca
następnym trikiem który tutaj mamy który jest bardzo przydatny
przy testowaniu aplikacji jest ograniczenie prędkości zauważ że teraz
jesteśmy po pierwszym na localhoscie ale nawet gdyby ta aplikacja ta strona
była gdzieś w internecie to ona wczytywał aby się bardzo bardzo szybko bo mam dobre
połączenie internetowe i zazwyczaj tak właśnie testujemy nasze strony a jest
to niestety błędem dlatego że na urządzeniach mobilnych ten internet zazwyczaj
nie jest już tak dobry więc jeżeli chcesz sobie zasymulować urządzenie mobilne albo
jakiś słabszy internet możesz tutaj wybrać z online zmienić na
przykład na fast 3g slow 3g czy nawet custom jeżeli wybierzemy slow
3g to nasza strona wczyta się dużo wolniej swoją drogą zauważ
że jeżeli tutaj jeszcze wybiorę all to widzimy że nasza strona żeby się wczytać musiała wykonać
siedemnaście zapytań przetransferować 492 kilobajty natomiast
po rozpakowaniu te zasoby zajęły 516 kilobajtów i wszystko
trwało tutaj 5,92 sekundy więc teraz wygląda
na to że po prostu coś wczytywało się dłużej z jakiegoś powodu normalnie byłoby to
znacznie szybciej zobaczymy okej
niektóre zasoby wczytują się teraz dłużej ale to wynika z kolei z tego że zaznaczyłem
slow 3g i to nam pozwala zasymulować w jaki
sposób ta strona internetowa wczytywałaby się na powolnym połączeniu zauważ że
teraz zajęło to 15 sekund i to jest bardzo istotne
żeby sobie to zaznaczyć tutaj network nam będzie pokazywało że pamiętaj że coś tutaj zmieniłeś
zmień to później na online i to nam pozwala
jak widzisz zasymulować wolniejsze połączenie ale nie zawsze
na stronie będziemy widzieli jak ona była wczytywana przy tym wolniejszym połączeniu dlatego
jeszcze jedną rzeczą która nam tutaj pomoże będą screenshoty
i teraz pokażę ci jak możemy do nich przyjść klikniemy sobie tutaj i
wybierzemy capture screenshots odśnieżymy jeszcze raz stronę przy tym
wolniejszym połączeniu 3g i ta strona nam się wczytuje
a tutaj będą za moment pojawiały screenshoty czyli jak
ta strona jest renderowana przez przeglądarkę kiedy przeglądarka robi
kolejne painty czyli maluje tą stronę to będziemy mogli dokładnie jak widzisz tutaj
podejrzeć to jest bardzo bardzo przydatna rzecz mogę sobie kliknąć ten
pierwszy screenshot rzepichy dwukrotnie to nam się pokaże i widzimy że po
77 milisekundach przeglądarka już tyle była w stanie wyrenderować jeżeli
kliknę dalej widzimy że kolejny został zrobiony w piątej sekundzie brakowało
nam tutaj jeszcze jakiegoś obrazka kolejny w siódmej i tak
sobie możemy przeskakiwać aż zobaczymy jak
to wszystko było wczytywane to jest oczywiście troszkę bardziej przydatne kiedy testujemy
już stronę która jest w internecie niemniej jednak możesz dokładnie zobaczyć na
danym połączeniu tutaj na slow 3g jak ta strona by się pokazywała
i wszystko będzie zależało od tego jakie masz zasoby jeżeli na przykład ikonki są
osobnym zasobem powiedzmy z font awesome tak jak mamy tutaj to
zauważ że w dziewiątej sekundzie jeszcze ich nie było on dopiero później nam wskoczyły
kiedy ten zasób się pobrał no i oczywiście teraz gdybyśmy sobie zerknęli
na wszystkie rzeczy które tutaj są czyli
przejdziemy sobie powiedzmy tutaj zauważ że widzimy jakie
skrypty jakie zasoby już były wdczytane to każdy z nich będziemy mogli sobie zerknąć
ile czasu trwało jego pobranie przy
tym właśnie ograniczonym połączeniu sieciowym czyli samo content download przy takim
slow 3g zauważ że zajęło tutaj ponad 5 sekund i
ostatnim trikiem który chciałbym ci pokazać w panelu network tutaj sobie wrócimy do online
wczytamy to wszystko jak widzisz teraz to się wczytuje bardzo szybko ostatnim
trikiem który chciałbym ci tutaj pokazać wyłączymy sobie również te screenshoty jest możliwość kopiowania
linku abyśmy mogli pod niego sobie wysłać zapytanie czyli na przykład mamy style css
mogę kliknąć prawym przyciskiem i wybrać copy okej
w ten sposób to trzeba zrobić i mamy coś takiego jak link address to nam skopiuje
cały taki adres pokażę ci jak on wygląda w ten sposób ale
możemy również skopiować as fetch i to jest fajne bo to
nam skopiuję to w ten sposób czyli pozwoli nam funkcją fetch
która jest przeglądarkach dostępna pobrać sobie taki sposób albo możemy sobie
kliknąć copy as curl w ten sposób
i to jest przydatne jeżeli na przykład korzystasz z linuxa czy z maca i
masz dostępne curl możesz przejść do terminala i wkleić sobie całe takie
zapytanie curl ono będzie
wyglądać w ten sposób i możesz się bezpośrednio odwołać do tego zasobu
pobrać sobie go do testowania i tak dalej więc warto również na to zwrócić
uwagę tutaj jest jeszcze kilka innych opcji