Wke2016

52
Marc Hinse @mademyday #wke2016 Blog-Redesign mit Performance-Budget 200kB und 1 Sekunde Time to Render

Transcript of Wke2016

Page 1: Wke2016

Marc Hinse @mademyday #wke2016

Blog-Redesign mit Performance-Budget 200kB

und 1 Sekunde Time to Render

Page 2: Wke2016

Marc Hinse @mademyday #wke2016

Frontend Performance

Page 3: Wke2016

Marc Hinse @mademyday #wke2016

Was heißt Performance?

Page 4: Wke2016

Marc Hinse @mademyday #wke2016

“Zeit, die es braucht, bis der Nutzer was sieht

und mit dem Interagieren der Seite

beginnen kann.”

Page 5: Wke2016

Marc Hinse @mademyday #wke2016

Anders gesagt:

“Zeit bis endlich was geht”

Page 6: Wke2016

Marc Hinse @mademyday #wke2016

Volles WLAN

Kein Text

Social Media Gerümpel ist aber – na klar – da.

Page 7: Wke2016

Marc Hinse @mademyday #wke2016

Hui!

Page 8: Wke2016

Marc Hinse @mademyday #wke2016

Page 9: Wke2016

Marc Hinse @mademyday #wke2016

“It’s hard, if not impossible, to deny that performance is by far one of the most critical aspects

of any decent web project”Harry Roberts

Page 10: Wke2016

Marc Hinse @mademyday #wke2016

Warum ist das wichtig?

Page 11: Wke2016

Marc Hinse @mademyday #wke2016

Conv

ersi

on R

ate

Load time

0s 1s 2s 3s 4s 5s 6s 7s

Conversion Rate vs. Load Time

Quelle: Tammy Everts

Page 12: Wke2016

Marc Hinse @mademyday #wke2016

Conv

ersi

on R

ate

Load time

0s 1s 2s 3s 4s 5s 6s 7s

Conversion Rate vs. Load Time

Quelle: Tammy Everts

Page 13: Wke2016

Marc Hinse @mademyday #wke2016

Aber: “Load time” ist nicht alles…

Page 14: Wke2016

Marc Hinse @mademyday #wke2016

“load” heißt nicht

“bis was geht”!

Page 15: Wke2016

Marc Hinse @mademyday #wke2016

“The secret is that ’page weight’, broadly defined as the simple total file size of a page and all of it's sub-resources

(images, CSS, JS, etc), isn't the problem. Bandwidth is not the problem, and the performance of the web will not improve as broadband access becomes more

widespread.

The problem is latency.“Nate Berkopec

Page 16: Wke2016

Marc Hinse @mademyday #wke2016

WAS MACHT DER BROWSER EIGENTLICH DA?

Page 17: Wke2016

Marc Hinse @mademyday #wke2016

Im Ponyhofland: Browser öffnet Verbindung und regelt

den DNS/TCP/SSL-Kram

Browser lädt HTML runter

Wenn HTML fertig, lädt Browser zugehöriges CSS/JS/Fonts (gleichzeitig)

runter

Browser parst das Dokument und baut es zusammen

Page 18: Wke2016

Marc Hinse @mademyday #wke2016

Die Realität: Browser öffnet Verbindung und regelt den DNS/TCP/SSL-Kram

Browser lädt HTML runter

Browser Fängt an zu parsen, lädt zugehöriges CSS/JS runter, hört aber

mit Parsen Jedes Mal auf bis jede einzelne Ressource geladen und

ausgeführt ist und irgendwann

baut der Browser alles zusammen

Page 19: Wke2016

Marc Hinse @mademyday #wke2016

(ach ja, nur 6-8 Verbindungen gleichzeitig pro Domain)

Page 20: Wke2016

Marc Hinse @mademyday #wke2016

remember?

Page 21: Wke2016

Marc Hinse @mademyday #wke2016

Was können wir tun?

Page 22: Wke2016

Marc Hinse @mademyday #wke2016

CDN?

Ein Stück weit

Page 23: Wke2016

Marc Hinse @mademyday #wke2016

+ Verteilt die 6 Connections pro Domain

+ Potenziell näher an User

+ Besseres (weil spezielleres) Caching

- geringer Speicher für Cache

- Kostet Latenz (DNS Lookup etc)

Page 24: Wke2016

Marc Hinse @mademyday #wke2016

Inline?

Page 25: Wke2016

Marc Hinse @mademyday #wke2016

+Gut für first Render

+Kein zusätzlicher Request

- Kein Caching (ohne Trickserei)

Page 26: Wke2016

Marc Hinse @mademyday #wke2016

async?

<script src=“myscript” async defer>

Page 27: Wke2016

Marc Hinse @mademyday #wke2016

+ macht was es soll - Reihenfolge schwierig (Dependencies)

* den Browser am Parsen hindern

Page 28: Wke2016

Marc Hinse @mademyday #wke2016

Webfonts*

* irgendwie speziell

Page 29: Wke2016

Marc Hinse @mademyday #wke2016

CSS 2 eingeführt (’97)

CSS 2.1 entfernt

* IE4 schon ’98 eingeführt, scheißt (hier zum Glück) auf Specs.

Page 30: Wke2016

Marc Hinse @mademyday #wke2016

FLASH OF UNSTYLED TEXT (FOUT)

Page 31: Wke2016

Marc Hinse @mademyday #wke2016

FLASH OF INVISIBLE TEXT (FOIT)

Page 32: Wke2016

Marc Hinse @mademyday #wke2016

Was ist jetzt mit dem Redesign?

Page 33: Wke2016

Marc Hinse @mademyday #wke2016

Redesign.

Page 34: Wke2016

Marc Hinse @mademyday #wke2016

Performance Bugdet?

Page 35: Wke2016

Marc Hinse @mademyday #wke2016

Page 36: Wke2016

Marc Hinse @mademyday #wke2016

Page 37: Wke2016

Marc Hinse @mademyday #wke2016

Page 38: Wke2016

Marc Hinse @mademyday #wke2016

Page 39: Wke2016

Marc Hinse @mademyday #wke2016

Page 40: Wke2016

Marc Hinse @mademyday #wke2016

Desirable Design.

Page 41: Wke2016

Marc Hinse @mademyday #wke2016

Page 42: Wke2016

Marc Hinse @mademyday #wke2016

Is’ okay.**aber dann is halt kacke.

Page 43: Wke2016

Marc Hinse @mademyday #wke2016

Bilder

Page 44: Wke2016

Marc Hinse @mademyday #wke2016

Sobald eine Redaktion Bilder 1:1

in ein System lädt und diese so

ausgeliefert werden, sollten Sie

den Verantwortlichen feuern.

Page 45: Wke2016

Marc Hinse @mademyday #wke2016

oder/und erstmal gar nicht laden?

Mittel und Wege<picture> und <img srcset>

imageoptim

lazyload

Vernünftiges CMS

Page 46: Wke2016

Marc Hinse @mademyday #wke2016

Webfonts*

* Filament Group Scott Jehl

Page 47: Wke2016

Marc Hinse @mademyday #wke2016

Critical Path*

* Above the Fold inline

Page 48: Wke2016

Marc Hinse @mademyday #wke2016

Page 49: Wke2016

Marc Hinse @mademyday #wke2016

Page 50: Wke2016

Marc Hinse @mademyday #wke2016

Nur ein Prototyp, aber ein Anfang.

* mademyday.de/optimiert

Page 51: Wke2016

Marc Hinse @mademyday #wke2016

Lange nicht Schluss* Caching in Offline Storage* Cookies for cached resources* DNS Prefetch* Preconnect* Prefetch* Prerender

Page 52: Wke2016

Marc Hinse @mademyday #wke2016

danke 😘