SlideShare une entreprise Scribd logo
1  sur  78
Télécharger pour lire hors ligne
Bartek Miś, Studio Sidekicks (Bigger Picture) / Web Dev Insider
Frontendowe optymalizacje
wydajności na 2023
Przykłady, nowości, rekomendacje
2020
2023
RUM, CrUX, Google Search Console
Realni użytkownicy,
a nie wyniki labowe
Realny użytkownik
= interakcje
Jestem Bartek Miś.
• CEO / CTO @ Studio Sidekicks (Bigger Picture)
• Full-stack developer ze szczególnym zamiłowaniem do frontendu
• Specjalizuję się w optymalizacji wydajności stron i aplikacji
Slajdy: webdevinsider.pl/4developers
Klikasz i…
• Nic się nie dzieje długi czas
• Czuć, że strona jest „zamrożona”, ma „laga”
• Irytacja, frustracja, negatywy odbiór strony/aplikacji
https://frontend-perf-tests.vercel.app/inp-tests/test-a.html
Interaction to Next Paint
(INP)
INP
• Mierzy czas wykonania interakcji, aż do wizualnej zmiany na stronie
(kliknięcia, „tap” na mobile, wpisywania tekstu w inputach)
• Cel: sprawna responsywność strony;
użytkownik coś robi na stronie i szybko otrzymuje to, czego oczekuje
Jak mierzyć INP
• DevTools -> Performance (nagrywanie interakcji)
Jak mierzyć INP
• Wstrzyknięcie kodu biblioteki web-vitals
(np. poprzez DevTools Overrides)
Jak mierzyć INP
Jak mierzyć INP
CrUX (treo.sh)
Jak optymalizować
Jak optymalizować
Jak optymalizować
https://frontend-perf-tests.vercel.app/inp-tests/test-b.html
Jak optymalizować
Jak optymalizować
Porównanie
Jak optymalizować
• Pokazuj wizualną zmianę użytkownikowi tak szybko, jak to możliwe
• Zasobożerne operacje pozwól przeglądarce zaplanować (setTimeout)
• Wskaż użytkownikowi, że coś się wykonuje; otwórz menu od razu, a
zmiany w DOM zrób później
Jak optymalizować
• Prześledź zdarzenia w głównym wątku w momencie interakcji
Jak optymalizować
• Trackowanie kliknięć
Jak optymalizować
• Trackowanie kliknięć
Jak optymalizować
• W momencie kliknięcia, rejestrujmy dane o kliknięciu
np. w LocalStorage
• Po załadowaniu docelowej strony, odczytujmy informacje z
LocalStorage i wysyłajmy eventy dopiero w tym momencie (idle)
INP a FID
Uważaj, jak piszesz CSS
Inwalidacja
Inwalidacja
DevTools - invalidation tracking
DevTools - invalidation tracking
DevTools - invalidation tracking
Przykład
Renderowanie w przeglądarce
Przykład
Liczba inwalidacji
Rekalkulacja styli - przykład
14992 elementów
https://twitter.com/iamakulov/status/1635277519627898887
Rekalkulacja styli - przykład
https://twitter.com/iamakulov/status/1635277519627898887
Rekalkulacja styli - przykład
Edge DevTools
https://css-tricks.com/the-truth-about-css-selector-performance/
Edge DevTools
https://css-tricks.com/the-truth-about-css-selector-performance/
Co wyzwala rekalkulację style/layout
• dodanie klasy CSS do elementu
• innerText
• o
ff
setWidth
• getBoundingClientRect
• Naprzemienne i częste operacje READ/WRITE na DOM
• Przykład: odczytywanie wartości poprzez getBoundingClientRect
i aktualizacja styli poprzez element.style.width
Layout Trashing
• unikaj sporej ilości node’ów DOM, zwłaszcza zagnieżdżonych
• unikaj inwalidacji globalnego CSS
CSSowe/DOMowe porady
• shadow DOM
• content-visibility (CSS containment)
• wymagające selektory (np. .className > a, [style*=])
• testuj interakcje
bfcache
(back/forward cache)
Przykład z bfcache
Przykład bez bfcache
• Jak to włączyć? Co zrobić, by działało? Prawdopodobnie nic.
bfcache
• Użycie eventu unload i beforeunload
bfcache - dlaczego nie działa?
• Użycie nagłówka Cache-Control: no-store, który blokuje użycie
jakiegokolwiek cache'a
• Pełna lista przyczyn:
https://docs.google.com/spreadsheets/d/
1li0po_ETJAIybpaSX5rW_lUN62upQhY0tH4pR5UPt60/edit?pli=1#gid=0
• Usprawnione ładowanie stron (UX)
bfcache
• Usprawnienie metryki CLS
Frameworki JS
a strony contentowe
Historia zatoczyła koło?
MPA —> SPA —> MPA
• Najpopularniejszy, community, React, zorientowany na wydajność
Next.js
• Problem hydracji, rozmiar JS, problemy TBT => interaktywność
Framework prawdziwie zorientowany
na wydajność w 2023:
Astro
• To nie jest nowy framework, którego musimy się uczyć, znać nowy syntax
Astro
• Optymalizacyjny fundament pod strony contentowe, nadal pisząc
komponenty w ulubionym frameworku (React, Vue, Svelte)
• Podejście HTML-
fi
rst, zero-JS
Astro: architektura wysp
https://docs.astro.build/en/concepts/islands/
https://docs.astro.build/en/concepts/islands/
Demo
Next.js
Astro
Demo
https://astro-dev-tests.vercel.app/
https://nextjs-dev-tests.vercel.app/
Waterfall Next.js vs. Astro
Next.js
Astro
Brak JS!
Interaktywny komponent <Tabs />
• Oparty o React (zarówno w projekcie Next.js jak i Astro)
Interaktywny komponent <Tabs />
• <Tabs client:visible /> w Astro
Interaktywny komponent <Tabs />
Waterfall Next.js vs. Astro #2
Next.js
Astro
client:load
Porównanie wydajności
Next.js
Astro
client:load
• Wydajność interakcji na stronie = super ważna rzecz (click, tap, bfcache)
Podsumowanie
• Wąskie gardło (najczęściej) = JS
• INP
• Usuwajmy JS, gdzie można (HTML-
fi
rst)
• Astro, React Server Components, Qwik
• Inwalidacje style/layout - zwracaj na nie uwagę
• Realni użytkownicy i UX
Dzięki za uwagę!
Oceń prezkę na Eventory.
www.webdevinsider.pl

Contenu connexe

Similaire à 4Developers 2023: frontendowe optymalizacje wydajności / Bartek Miś / Web Dev Insider

Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)Dariusz Kacban
 
SEO na etapie programowania - Meetup#3 Bydgoszcz
SEO na etapie programowania - Meetup#3 BydgoszczSEO na etapie programowania - Meetup#3 Bydgoszcz
SEO na etapie programowania - Meetup#3 BydgoszczPaweł Rabinek
 
Responsive Web Design - kto mało pyta, nie błądzi
Responsive Web Design - kto mało pyta, nie błądziResponsive Web Design - kto mało pyta, nie błądzi
Responsive Web Design - kto mało pyta, nie błądziJakub Wiśniewski
 
Najlepsze wtyczki WordPress, które każdy developer powinien mieć
Najlepsze wtyczki WordPress, które każdy developer powinien miećNajlepsze wtyczki WordPress, które każdy developer powinien mieć
Najlepsze wtyczki WordPress, które każdy developer powinien miećMaciej Swoboda
 
Projektowanie stron www dla ngo i projektow eko - case study
Projektowanie stron www dla ngo i projektow eko - case studyProjektowanie stron www dla ngo i projektow eko - case study
Projektowanie stron www dla ngo i projektow eko - case studyKrakweb
 
Dostosowanie I Personalizacja Aplikacji Web
Dostosowanie I Personalizacja Aplikacji WebDostosowanie I Personalizacja Aplikacji Web
Dostosowanie I Personalizacja Aplikacji WebMaciej Zbrzezny
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowychTomasz Borowski
 
Struktura i własności systemu zarządzania treścią Drupal
Struktura i własności systemu zarządzania treścią DrupalStruktura i własności systemu zarządzania treścią Drupal
Struktura i własności systemu zarządzania treścią DrupalGrzegorz Bartman
 
Zasady technicznej organizacji projektów programistycznych
Zasady technicznej organizacji projektów programistycznychZasady technicznej organizacji projektów programistycznych
Zasady technicznej organizacji projektów programistycznychsztywny
 
Patterns for organic architecture
Patterns for organic architecturePatterns for organic architecture
Patterns for organic architectureJaroslaw Palka
 
Bootstrap w Joomla - modyfikować, rozszerzać, nadpisywać oraz czy 
w ogól...
Bootstrap w Joomla - modyfikować, rozszerzać, nadpisywać oraz czy 
w ogól...Bootstrap w Joomla - modyfikować, rozszerzać, nadpisywać oraz czy 
w ogól...
Bootstrap w Joomla - modyfikować, rozszerzać, nadpisywać oraz czy 
w ogól...Bartłomiej Krztuk
 
Motywy WooCommerce dla początkujących
Motywy WooCommerce dla początkującychMotywy WooCommerce dla początkujących
Motywy WooCommerce dla początkującychMaciej Swoboda
 
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp SilesiaJak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp SilesiaTomasz Dziuda
 
DevOps - what I have learnt so far
DevOps - what I have learnt so far DevOps - what I have learnt so far
DevOps - what I have learnt so far Wojciech Barczyński
 
Daj się wyręczyć - Joomla Day Polska 2014
Daj się wyręczyć - Joomla Day Polska 2014Daj się wyręczyć - Joomla Day Polska 2014
Daj się wyręczyć - Joomla Day Polska 2014Tomasz Dziuda
 
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...Infoshare
 
Skok na naderwanym bungee, czyli agile bez automatyzacji
Skok na naderwanym bungee, czyli agile bez automatyzacjiSkok na naderwanym bungee, czyli agile bez automatyzacji
Skok na naderwanym bungee, czyli agile bez automatyzacjiWitold Bołt
 
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacjiInfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacjiJIT Solutions
 

Similaire à 4Developers 2023: frontendowe optymalizacje wydajności / Bartek Miś / Web Dev Insider (20)

Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
 
SEO na etapie programowania - Meetup#3 Bydgoszcz
SEO na etapie programowania - Meetup#3 BydgoszczSEO na etapie programowania - Meetup#3 Bydgoszcz
SEO na etapie programowania - Meetup#3 Bydgoszcz
 
Responsive Web Design - kto mało pyta, nie błądzi
Responsive Web Design - kto mało pyta, nie błądziResponsive Web Design - kto mało pyta, nie błądzi
Responsive Web Design - kto mało pyta, nie błądzi
 
Najlepsze wtyczki WordPress, które każdy developer powinien mieć
Najlepsze wtyczki WordPress, które każdy developer powinien miećNajlepsze wtyczki WordPress, które każdy developer powinien mieć
Najlepsze wtyczki WordPress, które każdy developer powinien mieć
 
Projektowanie stron www dla ngo i projektow eko - case study
Projektowanie stron www dla ngo i projektow eko - case studyProjektowanie stron www dla ngo i projektow eko - case study
Projektowanie stron www dla ngo i projektow eko - case study
 
Dostosowanie I Personalizacja Aplikacji Web
Dostosowanie I Personalizacja Aplikacji WebDostosowanie I Personalizacja Aplikacji Web
Dostosowanie I Personalizacja Aplikacji Web
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
Struktura i własności systemu zarządzania treścią Drupal
Struktura i własności systemu zarządzania treścią DrupalStruktura i własności systemu zarządzania treścią Drupal
Struktura i własności systemu zarządzania treścią Drupal
 
Od zera do Automattica
Od zera do AutomatticaOd zera do Automattica
Od zera do Automattica
 
Zasady technicznej organizacji projektów programistycznych
Zasady technicznej organizacji projektów programistycznychZasady technicznej organizacji projektów programistycznych
Zasady technicznej organizacji projektów programistycznych
 
Patterns for organic architecture
Patterns for organic architecturePatterns for organic architecture
Patterns for organic architecture
 
Long Tail SEO w e-commerce
Long Tail SEO w e-commerceLong Tail SEO w e-commerce
Long Tail SEO w e-commerce
 
Bootstrap w Joomla - modyfikować, rozszerzać, nadpisywać oraz czy 
w ogól...
Bootstrap w Joomla - modyfikować, rozszerzać, nadpisywać oraz czy 
w ogól...Bootstrap w Joomla - modyfikować, rozszerzać, nadpisywać oraz czy 
w ogól...
Bootstrap w Joomla - modyfikować, rozszerzać, nadpisywać oraz czy 
w ogól...
 
Motywy WooCommerce dla początkujących
Motywy WooCommerce dla początkującychMotywy WooCommerce dla początkujących
Motywy WooCommerce dla początkujących
 
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp SilesiaJak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
Jak tworzyć motywy przyjazne użytkownikom i programistom - WordUp Silesia
 
DevOps - what I have learnt so far
DevOps - what I have learnt so far DevOps - what I have learnt so far
DevOps - what I have learnt so far
 
Daj się wyręczyć - Joomla Day Polska 2014
Daj się wyręczyć - Joomla Day Polska 2014Daj się wyręczyć - Joomla Day Polska 2014
Daj się wyręczyć - Joomla Day Polska 2014
 
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
 
Skok na naderwanym bungee, czyli agile bez automatyzacji
Skok na naderwanym bungee, czyli agile bez automatyzacjiSkok na naderwanym bungee, czyli agile bez automatyzacji
Skok na naderwanym bungee, czyli agile bez automatyzacji
 
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacjiInfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji
 

4Developers 2023: frontendowe optymalizacje wydajności / Bartek Miś / Web Dev Insider