Server-Side-Rendered Selective Resumable Hydration
HTML Website mit CSS JavaScript als Progressive Enhancement
Slide 12
Progressive Enhancement bei ZEIT Online
HTML vom Server
CSS dazu
JavaScript optional
Slide 13
Aspekte von
Aus Usersicht
Website
schnell / schlank / ruckelt nicht
Performance Browser / Technologien HTML / CSS / Bilder / JavaScript / Schriften / Video / Audio Priorisierung im Netzwerk und im Browser
Build / Server Bildformate / Komprimierung / CDN, Cloud / Caching / Netzwerk
Wirkung Objektive Zahlen / Subjektive Wahrnehmung / Gemessene Realität von Google
Kontrolle Messung / Testing / Monitoring / SEO Einfluss
Slide 14
Drei Säulen von Website Performance
A
R
O
Slide 15
Drei Säulen von Website Performance
A
R
O
AVOID
REDUCE
OPTIMIZE
Slide 16
Drei Säulen von Website Performance
A
R
O
AVOID
REDUCE
OPTIMIZE
Benutzen wir alles?
Cachen,
Ladeverhalten und
Brauchen wir alles?
Komprimieren,
Priorisierung.
Minimieren.
Slide 17
Drei Fünf Säulen von Website Performance
A
R
O
M
A
AVOID
REDUCE
OPTIMIZE
MEASURE
ATTITUDE
Benutzen wir alles?
Cachen,
Ladeverhalten und
Tooling und
Performance
Brauchen wir alles?
Komprimieren,
Priorisierung
Monitoring
Culture
Minimieren.
Slide 18
Drei Fünf Säulen von Website Performance
A
R
O
M
A
AVOID
REDUCE
OPTIMIZE
MEASURE
ATTITUDE
Benutzen wir alles?
Cachen,
Ladeverhalten und
Tooling und
Performance
Brauchen wir alles?
Komprimieren,
Priorisierung
Monitoring
Culture
Minimieren.
Slide 19
AVOID
Slide 20
Avoid Stuff: ungenutzte Sachen finden
Browser DevTools
Avoid Stuff: ungenutzte Sachen finden
Browser DevTools
Request Maps
Slide 23
Avoid Request Maps • requestmap.webperf.tools • requestmap.pages.dev Gute Visualisierung, wenn die Request-Liste in den DevTools nicht ausreicht. Oder um Stakeholder zu beeindrucken!
Slide 24
Avoid Request Maps • requestmap.webperf.tools • requestmap.pages.dev Gute Visualisierung, wenn die Request-Liste in den DevTools nicht ausreicht. Oder um Stakeholder zu beeindrucken!
Slide 25
Avoid Request Maps • requestmap.webperf.tools • requestmap.pages.dev Gute Visualisierung, wenn die Request-Liste in den DevTools nicht ausreicht. Oder um Stakeholder zu beeindrucken!
Slide 26
Avoid Stuff: ungenutzte Sachen finden
Browser DevTools Request Maps
Google Tag Manager ausmisten
Slide 27
Avoid Stuff: ungenutzte Sachen finden
Browser DevTools Request Maps Google Tag Manager ausmisten
Unused CSS/JS via DevTools
Slide 28
Unused CSS/JS
Slide 29
Unused CSS/JS
Slide 30
Unused CSS/JS
Slide 31
Unused CSS/JS
Slide 32
Unused CSS/JS vermeiden durch situatives Laden von Code •
Aufteilung nach Seitentypen (centerpage.css, article.css)
•
Vorhandensein von Elementen checken
Slide 33
Avoid Code: System Features nutzen
Slide 34
Avoid Code: System Features nutzen
Summary / Details
Slide 35
Summary / Details: HTML Reveal Element
Slide 36
Summary / Details: HTML Reveal Element
Slide 37
Avoid Code: System Features nutzen
Summary / Details
Dialog / Modal Feature
Slide 38
Slide 39
Slide 40
Slide 41
Slide 42
Avoid Code: System Features nutzen
Summary / Details Dialog / Modal Feature
Karusselle und Slider
Slide 43
Karusselle und Slider: auch selfmade!
Slide 44
Avoid Code: System Features nutzen
Summary / Details Dialog / Modal Feature Karusselle und Slider
… you get the Point.
Slide 45
Drei Fünf Säulen von Website Performance
A
R
O
M
A
AVOID
REDUCE
OPTIMIZE
MEASURE
ATTITUDE
Benutzen wir alles?
Cachen,
Ladeverhalten und
Tooling und
Performance
Brauchen wir alles?
Komprimieren,
Priorisierung
Monitoring
Culture
Minimieren.
Slide 46
Reduce
Slide 47
Reduce
Caching
Slide 48
Caching und CDN / Proxy Cache • deutliches Alarmsignal • wird dir von jedem Testing Tool um die Ohren gehauen • kurze Cache-Zeiten sollten gut begründet sein • immutable nutzen!
Slide 49
Caching und CDN / Proxy Cache • deutliches Alarmsignal • wird dir von jedem Testing Tool um die Ohren gehauen • kurze Cache-Zeiten sollten gut begründet sein • immutable nutzen!
Slide 50
Caching und CDN / Proxy Cache • deutliches Alarmsignal • wird dir von jedem Testing Tool um die Ohren gehauen • kurze Cache-Zeiten sollten gut begründet sein • immutable nutzen! • TESTEN!
Slide 51
Reduce
Caching
Caching via ServiceWorker
Slide 52
Browser
Caching via Service Worker
HTTP Cache
CDN
Server
Slide 53
Browser
Service Worker
HTTP Cache
CDN
TabletGothic.woff2 Franziska.woff2
Caching via Service Worker
Der Service Worker ist wie ein programmierbarer Proxy Server, mit dem sich Requests und Responses per JavaScript modifizieren lassen. Er verfügt über einen eigenen Cache.
Server
Slide 54
Browser
Service Worker
HTTP Cache
CDN
TabletGothic.woff2 Franziska.woff2
Caching via Service Worker
Der Service Worker ist wie ein programmierbarer Proxy Server, mit dem sich Requests und Responses per JavaScript modifizieren lassen. Er verfügt über einen eigenen Cache. Dieser Cache ist theoretisch schneller(praktisch nicht). Dieser Cache speichert deutlich länger bei gleicher TTL.*
Server
Slide 55
Browser
Service Worker
HTTP Cache
CDN
TabletGothic.woff2 Franziska.woff2
Caching via Service Worker
Der Service Worker ist wie ein programmierbarer Proxy Server, mit dem sich Requests und Responses per JavaScript modifizieren lassen. Er verfügt über einen eigenen Cache. Dieser Cache ist theoretisch schneller(praktisch nicht). Dieser Cache speichert deutlich länger bei gleicher TTL.*
Server
Slide 56
Reduce
Caching Caching via ServiceWorker
Komprimierung
Slide 57
Slide 58
Komprimierung: gzip, brotli •
Gzip als default, drop-in-Lösung
•
brotli komprimiert 15–30% besser, aber •
geringerer Browser-Support (93%)
•
dynamische Komprimierung dauert länger
•
Tweaking der 9 gzip und 11 brotli Stufen
😬
Slide 59
Komprimierung: gzip, brotli •
Gzip als default, drop-in-Lösung
•
brotli komprimiert 15–30% besser, aber •
geringerer Browser-Support (93%)
•
dynamische Komprimierung dauert länger
•
😬 Tweaking der 9 gzip und 11 brotli Stufen 🤯
Slide 60
Reduce
Caching Caching via ServiceWorker Komprimierung
Bildformate
Reduce
Caching Caching via ServiceWorker Komprimierung Bildformate Responsive Images
Schriften: woff2 Format
Slide 75
Schriften: Woff 2 Format 200
198
• Vergesst andere Formate!
150
• 100
• Kompatibilität mit alten
80 61
50 0
ttf Format
woff Format
✅ Browser-Support
woff2 Format
Browsern wollen wir nicht.
Slide 76
Reduce
Caching Caching via ServiceWorker Komprimierung Bildformate Responsive Images Schriften: woff2 Format
Schriften: Subsetting
Slide 77
Reduce Schriften: Subsetting • https://wakamaifondue.com für Schriften-Eigenschaften
Slide 78
Reduce Schriften: Subsetting • https://wakamaifondue.com für Schriften-Eigenschaften • https://everythingfonts.com/ subsetter als Subsetting-GUI
150 80
100
61
50
13
Su bs et La tin of f2
w of f2
Fo rm at
0
w of fF or m at
• https://transfonter.org/
200
tt fF or m at
198
Slide 79
Avoid Code System Fonts nutzen Vielleicht kannst du auf Webfonts verzichten. Die System-Schriften auf den Betriebssystemen sind vielfältig.
• https://modernfontstacks.com/ • https://gist.github.com/ don1138/5761014
• https://meowni.ca/ font-style-matcher/
Fünf Säulen von Website Performance
A
R
O
M
A
AVOID
REDUCE
OPTIMIZE
MEASURE
ATTITUDE
Benutzen wir alles?
Cachen,
Ladeverhalten und
Tooling und
Performance
Brauchen wir alles?
Komprimieren,
Priorisierung
Monitoring
Culture
Minimieren.
Slide 82
Slide 83
Optimize
Lazy Loading
Slide 84
Lazy Loading
Slide 85
Lazy Loading via JavaScript
Slide 86
Lazy Loading via JavaScript
Slide 87
Lazy Loading via JavaScript
Slide 88
Lazy Loading nativ
Natives Lazyloading im Browser:
Slide 89
Lazy Loading nativ
Natives Lazyloading im Browser:
Slide 90
Lazy Loading
Mit
loading=lazy übergibt man die Kontrolle an den Browser.
Und der macht vielleicht Dinge, die man nicht möchte.
nativ Zum Beispiel wird mehr vorgeladen, wenn die Internetverbindung langsam ist!
kein Throttling: 2 Bilder
fast 3G: 7 Bilder
slow 3G: 16 Bilder
Slide 91
Lazy Loading bei ZEIT Online: handmade
•
force HighResolution •
•
Infografiken
avoid HighResolution •
DataSaver
•
langsames Netzwerk
•
Pixelperfect auf den Container zugeschnitten
•
zuverlässiges Rescaling
Slide 92
Lazy Loading bei ZEIT Online
•
force HighResolution •
•
Infografiken
avoid HighResolution •
DataSaver
•
langsames Netzwerk
•
Pixelperfect auf den Container zugeschnitten
•
zuverlässiges Rescaling
Slide 93
Optimize
Lazy Loading
Fassaden
Slide 94
Fassaden
Slide 95
Fassaden
Slide 96
Fassaden
Slide 97
Fassaden
Slide 98
Fassaden •
Videos (youtube/vimeo-lite)
•
Social Media Widgets
•
Chats, Support-Messenger
•
Spiele, Interaktives
•
Dashboards in Apps
•
Formular-Logik
Slide 99
Fassaden •
Videos (youtube/vimeo-lite)
•
Social Media Widgets
•
Chats, Support-Messenger
•
Spiele, Interaktives
•
Dashboards in Apps
•
Formular-Logik
Slide 100
Optimize
Lazy Loading Fassaden
Rel=Preload
Slide 101
Hero-Image preloaden Manchmal werden wichtige Bilder erst spät geladen – weil andere Sachen vorher im HTML stehen, weil die Bilder erst im CSS erwähnt werden, oder weil sie per JavaScript geladen werden.
Slide 102
Preload
Mit Preload-Links können wir im Head einer HTML-Seite dem Browser schon Hinweise geben auf Ressourcen, die während dem Rendern gebraucht werden. Unterstützt: Bilder, Videos, CSS, JS. Schriften!
Cumulative Layout Shift Der Cumulative Layout Shift (CLS) ist eine Maßeinheit für unerwartetes Verschieben des Layouts einer Website.
CLS ist einer der Core Web Vitals von Google und fließt mit in das Google-Ranking ein!
Slide 107
Slide 108
Slide 109
Platz freihalten gegen Layout-Shift
aspect-ratio definiert für Box-Elemente automatisch die Höhe anhand der Breite.
Der Wert ist eine Dezimalzahl, die man aber auch durch einen Bruch angeben kann.
Layout Shift durch Werbung Lösung ist auch hier das Freihalten von Platz. Aber wie viel? • mobil: Maximum + sticky • Desktop: aktuell nichts, aber es gibt Ideen: • Minimum oder mittlerer Wert verringern den CLS zumindest.
Fünf Säulen von Website Performance
A
R
O
M
A
AVOID
REDUCE
OPTIMIZE
MEASURE
ATTITUDE
Benutzen wir alles?
Cachen,
Ladeverhalten und
Tooling und
Performance
Brauchen wir alles?
Komprimieren,
Priorisierung
Monitoring
Culture
Minimieren.
Measure Speedcurve • kontinuierliches Monitoring • Real User Monitoring
speedcurve.com
Slide 125
Measure Speedcurve • kontinuierliches Monitoring • Real User Monitoring • Empfehlungen
speedcurve.com
Slide 126
Measure Speedcurve • kontinuierliches Monitoring • Real User Monitoring • Empfehlungen • Benchmarks
speedcurve.com
Slide 127
Measure Speedcurve • kontinuierliches Monitoring • Benchmark mit Konkurrenz
speedcurve.com
Slide 128
Fünf Säulen von Website Performance
A
R
O
M
A
AVOID
REDUCE
OPTIMIZE
MEASURE
ATTITUDE
Benutzen wir alles?
Cachen,
Ladeverhalten und
Tooling und
Performance
Brauchen wir alles?
Komprimieren,
Priorisierung
Monitoring
Culture
Minimieren.
Slide 129
“Performance Culture” bei ZEIT Online •
Buy-in: Chefetage und SEO!
•
Performance als Non-Functional Requirement wie A11y
•
Performance-Probleme sind BUGs!
•
Persönliche Motivation der EntwicklerInnen
•
Konkurrenz-Benchmarks und Web Vitals
Slide 130
Third
Party
Slide 131
Party
Slide 132
Slide 133
Challenge: Third-Party Inhouse Third-Party
Externe Third-Party
• Dashboards
• Werbung
• Scrollytelling
• Tracking
• Eigenwerbung für zB. Veranstaltungen
• Dienste, Social Media
Slide 134
Challenge: Third-Party Inhouse Third-Party
Externe Third-Party
• Dashboards
• Werbung
• Scrollytelling
• Tracking
• Eigenwerbung für zB. Veranstaltungen
• Dienste, Social Media
Was tun ?
• Code Reviews • Dashboards • bisschen Fatalismus
Slide 135
Challenge: Third-Party Inhouse Third-Party
Externe Third-Party
• Dashboards
• Werbung
• Scrollytelling
• Tracking
• Eigenwerbung für zB. Veranstaltungen
• Dienste, Social Media
Was tun ?
Was tun?
• Code Reviews
• “Fassaden”
• Dashboards
• Kontakt suchen, oder Alternativen
• bisschen Fatalismus
• viel Fatalismus