client-side performance optimizations

44

Upload: jakob-schroeter

Post on 05-Dec-2014

3.162 views

Category:

Technology


1 download

DESCRIPTION

Was kann im Frontend bei Webseite optimiert werden, um die vom Nutzer wahrgenommene Ladezeit zu verkürzen? 30 Minuten Einführung in Client-Side Performance Optimization im Rahmen der Veranstaltung "StudiVZ, Xing und Co - Die Langsamen werden verlassen" an der Hochschule der Medien Stuttgart (http://www.hdm-stuttgart.de/view_news?ident=news20100122085221)

TRANSCRIPT

Page 1: Client-side Performance Optimizations
Page 2: Client-side Performance Optimizations

Client-side Performance Optimizations

Jakob Schröter

22.01.2010

Page 3: Client-side Performance Optimizations

80%

20%

Page 4: Client-side Performance Optimizations

Wahrgenommene Ladezeiteiner Webseite

80%

20%

Page 5: Client-side Performance Optimizations

Wahrgenommene Ladezeiteiner Webseite

80%

20%

Client

Server

Page 6: Client-side Performance Optimizations

Wahrgenommene Ladezeiteiner Webseite

80%

20%

Client

Server

Page 7: Client-side Performance Optimizations

Jakob SchröterBachelor of Computer

Science in Media

Master of ComputerScience and Media

Kajona³ CMS

Frontend Engineer

BESTTRICK.COM

Schlagzeuger

Page 8: Client-side Performance Optimizations

Spalte2LADEZEIT?

50 ms

100 ms

500 ms

1000 ms

Page 9: Client-side Performance Optimizations

Einfluss der Ladezeit

Amazon: +100 ms = 1 % weniger Verkäufe

Yahoo: +400 ms = 5-9 % weniger Anfragen

Google: +500 ms = 20 % weniger Anfragen

Glückliche UserMehr UserMehr Geld

KurzeLadezeit

Page 10: Client-side Performance Optimizations

WAS PASSIERT IM BROWSER?

Page 11: Client-side Performance Optimizations

Your best friends

• Firebug

• Yahoo YSlow

• Google PageSpeed

• Speed limiter: Webscarab

Page 12: Client-side Performance Optimizations

HTML (Server) Ressources (Client)

Page 13: Client-side Performance Optimizations

ANZAHL DER REQUESTS REDUZIERENHTTP Requests are expensive!

Page 14: Client-side Performance Optimizations

HTTP Requests reduzieren

• Redirects vermeiden

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

– master.css, dashboard.css, lightbox.css

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

button_active.png, …

Page 15: Client-side Performance Optimizations

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 16: Client-side Performance Optimizations

Intelligentes Browser-Caching

• Achtung, ETag!

Server Client

GET File

File

Server Client

GET File, if modified

File304 not modified

Use HTTPs potential!

Weniger Daten, aber trotzdem ein Request!

Page 17: Client-side Performance Optimizations

Intelligentes Browser-Caching

• Besser: Expires-Header

Server Client

GET File

File

Server Client

File

Expires 01.01.2011

Kein Request! Erst wieder ab 02.01.2011

Page 18: Client-side Performance Optimizations

Cache busters

…um ein Neuladen zu erzwingen

• (Expire-Header vorher anpassen)

• base-12.js

• styles.css?67

• /890/background.png

Page 19: Client-side Performance Optimizations

REQUESTS VERKLEINERNHTTP Requests are expensive!

Page 20: Client-side Performance Optimizations

Compression & Minifying

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

• Compression

– mod_deflate / mod_gzip

• Minifying

Page 21: Client-side Performance Optimizations
Page 22: Client-side Performance Optimizations

Compression & Minifyinghdm-stuttgart.de

Original Minified KomprimiertKomprimiert+ 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 23: Client-side Performance Optimizations

IMAGEOPTIMIZATION

Page 24: Client-side Performance Optimizations

Image Optimization

JPG PNG (GIF)

• „Für Web speichern“

• CSS-Sprites

Farbanzahl

Page 25: Client-side Performance Optimizations

smushit.com

130 x 86 px

hdm-stuttgart.de

Page 26: Client-side Performance Optimizations

HDM-STUTTGART.DE

x 200.000.000 Unique Visitors= -82 TB/Monat

-325 KB-97 KB

-422 KB

Compression & Minifying

Image Optimization

Facebook

-49%

Page 27: Client-side Performance Optimizations

REIHENFOLGE DER REQUESTSHTTP Requests are expensive!

Page 28: Client-side Performance Optimizations

Order of loading ressources

• Achtung <script>!

– blockiert weitere Downloads

• JS/CSS nicht doppelt einbinden

Page 29: Client-side Performance Optimizations

Order of loading ressources

CSSZwingend

notwendige Scripts Grafiken ErgänzendeScripts

DOM-ready

master.css base.js background.jpgbutton.png

dragndrop.jslightbox.js

onLoad

Page 30: Client-side Performance Optimizations

PRELOADING

Page 31: Client-side Performance Optimizations

Preloading

• Z.B. Loginseite

Page 32: Client-side Performance Optimizations

LAZY-LOADING

Page 33: Client-side Performance Optimizations

Post-loading

Page 34: Client-side Performance Optimizations

Domain sharding / CDN

• Parallele Downloads (für ältere Browser)

– nur 2 Requests per Host

• Schnellere Antwortzeiten/Übertragungsraten

– Schlanker Webserver

– Cookie-free Domain

static.ak.studivz.net

Page 35: Client-side Performance Optimizations

NOCH NICHT SCHNELL GENUG?

Page 36: Client-side Performance Optimizations

JS performance

• Passende AJAX-Bibliothek wählen

• Aktionen bei window.onload reduzieren

• Best practices

Page 37: Client-side Performance Optimizations

CSS performance

• Selektoren

#myElement > li {}

.myElement-li {}

• Best practices

Page 38: Client-side Performance Optimizations

Chrome Speed Tracer

Page 39: Client-side Performance Optimizations

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

Client-Side Performance Optimization

Page 40: Client-side Performance Optimizations

Vieles lässt sich automatisieren

Integration in den Deployment-Prozess

– JS/CSS-Dateien kombinieren

– Compression & Minifying

– Cache busters

– Image optimization

Page 41: Client-side Performance Optimizations
Page 42: Client-side Performance Optimizations

Client-sidematters!

EnormeAuswirkungen Oft einfach

Von Anfang an Grundregeln

beachten & ggf. weiter optimieren

Direkte Verbesserungfür die Nutzer

Kostenersparnis

don‘t fiddle – analyse first

Entlastet auchdie Server

Page 43: Client-side Performance Optimizations

Weiterführend

• Steve Souders: High Performance Websites

• Steve Souders: Even Faster Websites

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

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

Page 44: Client-side Performance Optimizations

Client-side Performance Optimizations

Jakob Schröter

xing.com/profile/Jakob_Schroeter