78
Frontend Performance Jakob Schröter 20.01.2012 @ Hochschule der Medien Stuttgart

Frontend Performance @ Hochschule der Medien Stuttgart

Embed Size (px)

DESCRIPTION

Vortrag zum Thema Frontend Performance vom 20.01.2012 an der Hochschule der Medien Stuttgart

Citation preview

Page 1: Frontend Performance @ Hochschule der Medien Stuttgart

Frontend Performance

Jakob Schröter

20.01.2012 @ Hochschule der Medien Stuttgart

Page 2: Frontend Performance @ Hochschule der Medien Stuttgart

Bachelor of Computer Science in Media Master of Computer

Science and Media

Kajona CMS

Frontend Engineer

Schlagzeuger

Wanderer

Page 3: Frontend Performance @ Hochschule der Medien Stuttgart
Page 4: Frontend Performance @ Hochschule der Medien Stuttgart

PERFORMANCE

Page 5: Frontend Performance @ Hochschule der Medien Stuttgart
Page 6: Frontend Performance @ Hochschule der Medien Stuttgart

FRONTEND PERFORMANCE

Page 7: Frontend Performance @ Hochschule der Medien Stuttgart
Page 8: Frontend Performance @ Hochschule der Medien Stuttgart

Spalte2 LADEZEIT?

50 ms

100 ms

500 ms

1000 ms

Page 9: Frontend Performance @ Hochschule der Medien Stuttgart
Page 10: Frontend Performance @ Hochschule der Medien Stuttgart

Einfluss der Ladezeit

Glückliche User Mehr User

Mehr Umsatz

Kurze Ladezeit

Page 11: Frontend Performance @ Hochschule der Medien Stuttgart

Einfluss der Ladezeit

Amazon +100 ms 1 % weniger Verkäufe1

Yahoo +400 ms 5-9 % weniger Zugriffe1

Google +500 ms 20 % weniger Zugriffe1

Bing +2000 ms 4,3 % weniger Umsatz/Nutzer2

Shopzilla -5000 ms 25 % mehr Zugriffe

7-12 % mehr Umsatz

50 % weniger Hardware3

Mozilla -2200 ms 15,4 % mehr Downloads4

1 http://www.websiteoptimization.com/speed/tweak/psychology-web-performance/ 2 http://www.slideshare.net/dyninc/the-user-and-business-impact-of-server-delays-additional-bytes-and-http-chunking-in-web-search-presentation 3 http://radar.oreilly.com/2009/07/velocity-making-your-site-fast.html 4 http://blog.mozilla.com/metrics/category/website-optimization/

Page 12: Frontend Performance @ Hochschule der Medien Stuttgart

User Experience

Empfohlene Ladezeit:

– vor 2006: unter 8 Sekunden Jupiter research

– 2006: unter 4 Sekunden Jupiter research

– 2009: unter 2 Sekunden Forrester Research

„Jede Website, deren Ladezeit eine Sekunde überschreitet, tut dem Benutzer weh.“ Jakob Nielsen

http://www.stevesouders.com/blog/2010/05/07/wpo-web-performance-optimization/

Page 13: Frontend Performance @ Hochschule der Medien Stuttgart

10 Golden Principles of Successful Web Apps

Speed Instant Utility

Software is Media

Less is More

Make it Programmable

Make it Personal

RESTful

Discoverabilty

Clean

Playful

http://thinkvitamin.com/web-apps/fred-wilsons-10-golden-principles-of-successful-web-apps/

Page 14: Frontend Performance @ Hochschule der Medien Stuttgart

SEO -> WPO

• Ist Search Engine Optimization ist ein Thema von gestern?

• Performance beeinflusst Google Ranking seit April 2010

Page 15: Frontend Performance @ Hochschule der Medien Stuttgart

„Das Internet ist nicht schneller geworden“

http://docs.google.com/a/chromium.org/viewer?a=v&pid=sites&srcid=Y2hyb21pdW0ub3JnfGRldnxneDoxMzcyOWI1N2I4YzI3NzE2

Page 16: Frontend Performance @ Hochschule der Medien Stuttgart

PERFORMANCE OPTIMIEREN Messen: z.B. JMeter

Bottlenecks finden: Profiling des Backends

Code optimieren / mehr Server-Hardware / bessere Server-Anbindung

Page 17: Frontend Performance @ Hochschule der Medien Stuttgart

Was wollen wir messen?

Wahrgenommene Wartezeit!

= Inhalt ist für den Nutzer sichtbar

= Nutzer denkt, er kann interagieren

Page 18: Frontend Performance @ Hochschule der Medien Stuttgart

Performance messen #1

• HTML-Seite generiert und geladen

• DOM-Ready-Event DOM ist aufgebaut, Inhalt evtl. sichtbar

• OnLoad-Event alle Ressourcen wurden geladen, Inhalt evtl. sichtbar

• Definiertes DOM-Element sichtbar

• „Above the Fold“ (AFT) keine Änderungen mehr am sichtbaren Inhalt

Page 19: Frontend Performance @ Hochschule der Medien Stuttgart

Performance messen #2

• verschiedene Clients

• verschiedene Locations

• verschiedenen Anbindungen

• Performance kontinuierlich messen…

Page 20: Frontend Performance @ Hochschule der Medien Stuttgart

80%

20%

Page 21: Frontend Performance @ Hochschule der Medien Stuttgart

Wahrgenommene Ladezeit einer Webseite

80%

20%

Page 22: Frontend Performance @ Hochschule der Medien Stuttgart

Wahrgenommene Ladezeit einer Webseite

80%

20%

Client

Server

Page 23: Frontend Performance @ Hochschule der Medien Stuttgart

Wahrgenommene Ladezeit einer Webseite

80%

20%

Client

Server

Page 24: Frontend Performance @ Hochschule der Medien Stuttgart

WAS PASSIERT IM BROWSER?

Page 25: Frontend Performance @ Hochschule der Medien Stuttgart

Your best friends

• „F12“-Tools

• Firebug

• Yahoo YSlow

• Google PageSpeed

• Speed limiter: Webscarab

• WebPageTest.org

• ShowSlow.com

Page 26: Frontend Performance @ Hochschule der Medien Stuttgart

HTML (Server) Resources (Client)

Page 27: Frontend Performance @ Hochschule der Medien Stuttgart

ANZAHL DER REQUESTS REDUZIEREN HTTP Requests are expensive!

Page 28: Frontend Performance @ Hochschule der Medien Stuttgart

HTTP Requests reduzieren

• Redirects vermeiden

• Dateien sinnvoll kombinieren – base.js, dragndrop.js, upload.js, …

– base.css, dashboard.css, lightbox.css

• Auch Grafiken – CSS Sprites – button.png, button_hover.png,

button_active.png, …

Page 29: Frontend Performance @ Hochschule der Medien Stuttgart

CSS Sprites

.button {

width: 10px; height: 10px;

background-image: url(sprites.png); background-position: 100px 40px;

}

.button:hover {

background-position: 110px 40px;

}

sprites.png

110px

40px

Page 30: Frontend Performance @ Hochschule der Medien Stuttgart

Intelligentes Browser-Caching

• Achtung, ETag!

Server Client

GET File

File

Server Client

GET File, if modified

File 304 not modified

Use HTTPs potential!

Page 31: Frontend Performance @ Hochschule der Medien Stuttgart

Intelligentes Browser-Caching

• Besser: Expires-Header

Server Client

GET File

File

Server Client

File

Expires 01.01.2013 00:00

Page 32: Frontend Performance @ Hochschule der Medien Stuttgart

Supercache: Gemeinsames CDN

• Google CDN – //ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js

• Aber: Single Point Of Failure

– Asynchron laden

– Lokales Fallback

Page 33: Frontend Performance @ Hochschule der Medien Stuttgart

Cache busters

• base-12.js

• styles-67.css

• background-890.png

• 890/background.png

• background.png?890

Page 34: Frontend Performance @ Hochschule der Medien Stuttgart

REQUESTS VERKLEINERN HTTP Requests are expensive!

Page 35: Frontend Performance @ Hochschule der Medien Stuttgart

Compression & Minifying

• alles was geht: HTML, CSS, JS, JSON, XML, …aber keine Bilder, PDFs, SWFs, …

• Komprimieren

– mod_deflate

• Minimieren

– YUICompressor, UglifyJS, ...

Page 36: Frontend Performance @ Hochschule der Medien Stuttgart
Page 37: Frontend Performance @ Hochschule der Medien Stuttgart

Compression & Minifying hdm-stuttgart.de

Original Minified Komprimiert Komprimiert + Minified

HTML 101 KB 97 KB 17 KB 16 KB

CSS 90 KB 68 KB 19 KB 14 KB

JS 243 KB 195 KB 73 KB 63 KB

434 KB 360 KB 109 KB 93 KB

-341 KB ≈ -79%!

Page 38: Frontend Performance @ Hochschule der Medien Stuttgart

Compression & Minifying laut.fm

Page 39: Frontend Performance @ Hochschule der Medien Stuttgart

Compression & Minifying netflix.com

“Adopting a single optimization, gzip compression, resulted in a 13-25% speedup and cut their outbound network traffic by 50%.”

http://www.stevesouders.com/blog/2010/05/07/wpo-web-performance-optimization/

Page 40: Frontend Performance @ Hochschule der Medien Stuttgart

IMAGE OPTIMIZATION

Page 41: Frontend Performance @ Hochschule der Medien Stuttgart

Image Optimization

JPG PNG GIF

• Richtige Abmessungen + „Für Web speichern“

• CSS-Sprites

Farbanzahl

Page 42: Frontend Performance @ Hochschule der Medien Stuttgart

smushit.com

130 x 86 px

hdm-stuttgart.de

Page 43: Frontend Performance @ Hochschule der Medien Stuttgart

smushit.com spiegel.de

Page 44: Frontend Performance @ Hochschule der Medien Stuttgart

smushit.com koeln.de

Page 45: Frontend Performance @ Hochschule der Medien Stuttgart

smushit.com laut.de

Page 46: Frontend Performance @ Hochschule der Medien Stuttgart

smushit.com laut.fm

Page 47: Frontend Performance @ Hochschule der Medien Stuttgart

HDM-STUTTGART.DE

-325 KB -97 KB

-422 KB

Compression & Minifying

Image Optimization

-49%

Page 48: Frontend Performance @ Hochschule der Medien Stuttgart

REIHENFOLGE DER REQUESTS HTTP Requests are expensive!

Page 49: Frontend Performance @ Hochschule der Medien Stuttgart

Order of loading resources

<script> blockiert weitere Downloads <script> blockiert Rendering -> Reihenfolge beachten -> defer/async-Attribute bzw. Loading-Tools nutzen

Page 50: Frontend Performance @ Hochschule der Medien Stuttgart

Order of loading resources

CSS Zwingend

notwendige Scripts Sichtbare Grafiken

Ergänzende Scripts

Pre-/Lazy-Loading

DOM-ready

base.css modernizr.min.js background.jpg button.png

dragndrop.js lightbox.js

onLoad

<head> <body> Dynamisch per JS

Page 51: Frontend Performance @ Hochschule der Medien Stuttgart

PRELOADING

Page 52: Frontend Performance @ Hochschule der Medien Stuttgart

Preloading

• Z.B. Loginseite

Page 53: Frontend Performance @ Hochschule der Medien Stuttgart

LAZY-LOADING

Page 54: Frontend Performance @ Hochschule der Medien Stuttgart

Post-loading

Page 55: Frontend Performance @ Hochschule der Medien Stuttgart

Asynchrone Requests

• Inhalte per AJAX nachladen

• Testen! ;-)

Page 56: Frontend Performance @ Hochschule der Medien Stuttgart

Domain sharding / CDN

• Schnellere Antwortzeiten/Übertragungsraten

– Schlanker Webserver

– Cookie-freie Domain

• Parallele Downloads (für ältere Browser) – nur 2 Requests per Host

s-static.ak.facebook.com

Page 57: Frontend Performance @ Hochschule der Medien Stuttgart

Usability

• Kann die Nutzerführung optimiert werden?

• Kann der Nutzer bereits etwas tun, während er warten muss?

Page 58: Frontend Performance @ Hochschule der Medien Stuttgart

NOCH NICHT SCHNELL GENUG? Advanced WPO

Page 59: Frontend Performance @ Hochschule der Medien Stuttgart

Rendering optimieren

• Progressive Rendering / Early Flushing

• Anzahl der DOM-Element reduzieren

• Reflow optimieren

Page 60: Frontend Performance @ Hochschule der Medien Stuttgart

JavaScript optimieren

• JavaScript Best Practices • DOM-Manipulationen • Memory Leaks fixen

• Verzögertes Parsen / Ausführen

<script>

/*

function weNeedThisLater () {}

var weNeedThisLater2 = 123;

*/

</script>

Page 62: Frontend Performance @ Hochschule der Medien Stuttgart

Chrome Speed Tracer

Page 63: Frontend Performance @ Hochschule der Medien Stuttgart

Strangeloop Site Optimizer

Fokus auf der vom Nutzer wahrgenommenen Ladezeit. Analysiert Nutzerverhalten und lädt Ressourcen bereits vor.

Page 64: Frontend Performance @ Hochschule der Medien Stuttgart

„IST JA GANZ SCHÖN AUFWÄNDIG…“

Web Performance Optimization

Page 65: Frontend Performance @ Hochschule der Medien Stuttgart

Sehr gute Tools verfügbar

• Yahoo YSlow

• Google PageSpeed

• Dynatrace AJAX Edition

• WebPageTest.org

Page 66: Frontend Performance @ Hochschule der Medien Stuttgart

Vieles lässt sich automatisieren

Integration in den Deployment/Build-Prozess

– JS/CSS-Dateien kombinieren

– Compression & Minifying

– Caching und Cache busters

– Bildoptimierung

– Verteilung auf CDN

Page 67: Frontend Performance @ Hochschule der Medien Stuttgart

Auf dem Server

• On-the-fly

– Mod_deflate

– Mod_pagespeed

– WEBO Site SpeedUp (PHP)

Page 68: Frontend Performance @ Hochschule der Medien Stuttgart

Externe (kommerzielle) Services

• On-the-fly in der Cloud

– blaze.io

– strangeloop.com

– Google Page Speed Service

• Monitoring

– Gomez

Page 69: Frontend Performance @ Hochschule der Medien Stuttgart

HTML 5 + CSS 3 + JavaScript

• CSS 3 – CSS statt Grafiken – Canvas

• HTML 5

– Network Timing API – Web Storage statt Cookies – Web Workers – Web Sockets

• JavaScript!!!

Page 70: Frontend Performance @ Hochschule der Medien Stuttgart

GOOGLE + CHROME SPDY Was Google hat, was wir (noch) nicht haben…

~50% reduction in page load time

Multiplexed streams

Request prioritization

HTTP header compression

Server push & hint

An experimental protocol for a faster web

use

Page 71: Frontend Performance @ Hochschule der Medien Stuttgart
Page 72: Frontend Performance @ Hochschule der Medien Stuttgart

Frontend Performance matters!

Enorme Auswirkungen

Basics sind einfach

Best Practices beachten &

weiter optimieren

Direkte Verbesserung für die Nutzer

don‘t fiddle – analyse first

Entlastet auch die Server

Kosten/Nutzen abwägen

Mobiles Internet

RIA

Page 73: Frontend Performance @ Hochschule der Medien Stuttgart

Weiterführend

• Bücher:

– Steve Souders: High Performance Websites

– Steve Souders: Even Faster Websites

• Test-Webseite: http://stevesouders.com/cuzillion

• http://developer.yahoo.com/performance/

• http://code.google.com/intl/de-DE/speed/

Page 74: Frontend Performance @ Hochschule der Medien Stuttgart

Beispiele aus der Praxis

Page 75: Frontend Performance @ Hochschule der Medien Stuttgart

Dynamische Bildauslieferung

• /image.php?src=image.jpg&width=200

• Standard:

– Kein Client-seitiges Caching

– Evtl. Server-seitiges Caching

– PHP wird ausgeführt

– Evtl. Session + Datenbank-Verbindung

Page 76: Frontend Performance @ Hochschule der Medien Stuttgart

Dynamische Bildauslieferung

• /image/w200/11259834/hdm-stuttgart.jpg

• Optimale Lösung: – Server-seitiges Caching

– Client-seitiges Caching • Cache Header + Expires Header + HTTP 304 Not Modified

• Cache buster + Redirect für alte URLs

– PHP nur wenn wirklich benötigt • Mod_rewrite

Page 77: Frontend Performance @ Hochschule der Medien Stuttgart

Best practices

• Nicht alles muss neu erfunden werden – HTML5 Boilerplate verwenden

• data-URLs

• http://caniuse.com/

• Memory Leaks im Client

• Messen was auf dem Client passiert

Page 78: Frontend Performance @ Hochschule der Medien Stuttgart

Frontend Performance

Jakob Schröter

[email protected]