wydajność stron internetowych - budzis · 100 ms gdy komputer zareaguje na naszą akcję w czasie...

50
Wydajność stron internetowych Co można zoptymalizować na stronie?

Upload: others

Post on 05-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Wydajność stron internetowychCo można zoptymalizować na stronie?

Page 2: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Jak definiować szybkość?Co jest wolne a co szybkie?

Page 3: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Jakob Nielsen

Od początku lat 90. Jakob Nielsen zajmuje się użytecznością serwisów internetowych.

W swojej publikacji “Usability Engineering” w 1994 roku wydzielił trzy odstępy czasu które można rozróżnić podczas pracy człowieka z maszyną.

Page 4: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

100 msGdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi.

Wow ale szybko się załadowało!

Page 5: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

1 000 msŁadowanie strony w okolicy jednej sekundy nie jest uciążliwe lecz bez problemu zauważalne.

Widziałem! Ładowało się!

Page 6: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

10 000 ms10 sekund to bardzo uciążliwy czas. Szansa na to, aby użytkownik poczekał na wczytywanie strony w takim czasie się bardzo nikłe.

Wszędzie widzę loadery!

Zaraz zasnę. Idę zrobić herbatę!

Page 7: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Jak mierzyć szybkość?

Narzędzia developerskie

Page 8: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Dev tools / networkZwracaj uwagę na

Load

DOMContentLoaded

Page 9: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Lighthouse

Narzędzie do testowania stron oraz aplikacji internetowych. Zlicza czas wczytywania strony oraz wykonywania skryptów JS po załadowaniu strony.

Testuje najpopularniejsze błędy i wskazuje proponowane rozwiązania.

Page 10: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

LighthouseChrome devtools / audits

Google Page Speed

NPMGdzie znajdziemy?

Page 11: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Lighthouse

stwórz miniaturki dla obrazków

ustaw cache

minifikuj pliki JS

minifikuj CSSa

dodaj kompresję (gzip)Najważniejsze wskazówki

Page 12: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Optymalizacje czas zacząć

Page 13: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Jak wczytuje się strona ? ● pobiera kod html

● analizuje pobrany kod● pobiera pliki css i js● analizuje pliki css i wykonuje

skrypty JavaScript● pobiera pliki do których

odnośniki były zaszyte w arkuszach stylu lub skryptach js

Przeglądarka

Page 14: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Wydajność CSS !CSSa też można optymalizować

Page 15: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Unikaj wczytywania plików w CSS

Zamiast @import w css używaj znaczników <link> w html

@import “./files/style.css”;

<link href=”./files/style.css” rel="stylesheet" />

Page 16: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Unikaj wczytywania plików w CSS

Pliki graficzne staraj się wczytywać w stylach umieszczonych w HTML poprzez style=”” lub <style>

.class { background: url(‘./files/img.png’);}

Page 17: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Jak czytamy selektory?

Wyszukujemy wszystkie znaczniki <span> na stronie

Szukamy tych które są w znaczniku <p>

Następnie sprawdzamy czy znaczniki <p> są dziećmi elementu o klasie myClass

.myClass p span { [...]}

Page 18: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Jak czytamy selektory?

.myClass p span { [...]}

.myClass_element { [...]}

Page 19: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

SelektoryJak optymalnie wyszukiwać elementy

Unikaj zagnieżdżonych selektorów

Twórz reużywalne selektory klasowe

Unikaj selektora *

Korzystaj z BEM !

Page 20: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Animacje w CSSTa animacja nie jest płynna. Czas wymienić komputer?

Page 21: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Kroki podczas renderowania CSSa

Obliczanie układu

W tym kroku zawsze będziemy bazować na wartościach :● margin● padding● width● height● i innych wpływających na układ.

Page 22: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Kroki podczas renderowania CSSa

Obliczanie układu Renderowanie

Tworzymy graficzną interpretację elementów na stronie

Page 23: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Kroki podczas renderowania CSSa

Obliczanie układu Renderowanie Kompozycja

Łączymy je w całość biorąc pod uwagę takie właściwości jak :● z-index● transform● perspective

Page 24: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Kroki podczas renderowania CSSa

Obliczanie układu Renderowanie Kompozycja

Animacja

opacitytransform

pointer-event: none;

Page 25: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Kroki podczas renderowania CSSa

Obliczanie układu Renderowanie Kompozycja

Animacja

https://csstriggers.com/

marginpaddingwidthheight

Page 26: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Animacjeco zrobić aby były płynne

Unikaj animowania właściwości wpływających na przeliczanie układu: margin, padding, width, height

Preferuj opacity, transform

Page 27: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

HTTP/2Najszybsza optymalizacja do wykonania!

Page 28: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

HTTP/2Co nowego względem HTTP/1.1

Kompresuje nagłówki

Tworzy jedno stałe połączenie z serwerem

Wymaga certyfikatu SSL

Dodano “Server Push”

Page 29: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

HTTP/1.1HTTP/2Server Push

● wysyłamy zapytanie o plik html

● otrzymuje plik html

● analizuje pobrany kod

● pobiera pliki css i js

● analizuje pobrany kod

● wyświetla stronę

● wysyłamy zapytanie o plik html

● otrzymuje plik html, css, js

● analizuje pobrany kod

● wyświetla stronę

Page 30: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Service workerLokalne proxy ?

Page 31: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Service worker

Przeglądarka Serwersw.js

API Cache Indexed DB

Page 32: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Service worker

Przeglądarka Serwersw.js

API Cache Indexed DB

Page 33: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Service worker

Przeglądarka Serwersw.js

API Cache Indexed DB

Page 34: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Service worker

Przeglądarka Serwersw.js

API Cache Indexed DB

Page 35: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Service worker

Przeglądarka Serwersw.js

API Cache Indexed DB

Page 36: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Service worker

Przeglądarka Serwersw.js

API Cache Indexed DB

Page 37: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Service worker

Przeglądarka Serwersw.js

API Cache Indexed DB

Page 38: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Service worker

Przeglądarka Serwersw.js

API Cache Indexed DB

Page 39: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Service worker

Przeglądarka Serwersw.js

API Cache Indexed DB

Page 40: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Service workerlokalne “proxy”

Piszemy własny skrypt który obsługuje eventy w tle.

Zapewnia możliwość tworzenie stron offline.

Umożliwia zaprogramować własny system cache, który nie musi wymieniać nagłówków z serwerem.

Page 41: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Server side renderingUżywając React, Angular, VUE generuj DOM na serwerze!

Page 42: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Server side rendering

Nie musimy renderować HTMLa na serwerze! Robot Google już sobie radzi z wykonywaniem

JavaScript

A co z szybkością strony?

Page 43: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Renderowanie w przeglądarce

Side server rendering

● pobiera plik html

● otrzymuje ‘pusty’ plik html

● pobiera plik JS

● renderuje znaczniki html

● wyświetla stronę

● pobiera plik html

● wyświetla stronę

● pobiera plik JS

● analizuje znaczniki html

● podpina eventy

Page 44: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Side server rendering

korzyści

Szybciej wyświetlona treść.

Unikanie łańcucha zapytań o pliki.

SEO nie tylko pod Google

Page 45: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

AMPAccelerated Mobile Pages

Page 46: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Accelerated Mobile Pages

Gdy przeglądamy wyniki Google nasza strona jest już wczytywana.

Nasza strona jest pobierana z serwerów CDN Google dzięki czemu pobiera się błyskawicznie w każdej części świata.

Nasza strona wyróżnia się poprzez znaczek AMP już w wynikach wyszukiwania.

Plusy:

Page 47: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Accelerated Mobile PagesMożemy posiadać wersję AMP dodatkowo nie rezygnując z obecnej wersji nasze strony.

<link rel="amphtml" href="http://budzis.pl/amp/">

<link rel="canonical" href="http://budzis.pl/">

Page 48: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Accelerated Mobile PagesMinusy:

Podwójny “pasek przeglądarki”.

W głównym pasku przeglądarki adres google.com

Małe różnice w szybkości gdy odwiedzamy stronę we własnej domenie.

Ograniczenia wynikające z używania JavaScriptów tylko stworzonych w projekcie AMP

Page 49: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

AMP

Przyspiesza wczytanie strony z wyników wyszukiwania Google.

Może stanowić osobną wersję tylko kilku podstron serwisu.

Nakłada wiele ograniczeń aby strona zawsze działała sprawnie.

Zamieszanie z paskami przeglądarki, które zabiera dużo miejsca na ekranie.

Page 50: Wydajność stron internetowych - Budzis · 100 ms Gdy komputer zareaguje na naszą akcję w czasie poniżej 100 ms mamy wrażenie natychmiastowej odpowiedzi. Wow ale szybko się

Czas na pytania!

Rafał Budzis

github.com/Bajdzis

budzis.pl

[email protected]