optimera din sidladdning - en djupdykning i prestanda på webben

43

Upload: valtech-ab

Post on 01-Nov-2014

1.766 views

Category:

Technology


2 download

DESCRIPTION

Jesper Petersson, Valtech Jesper, som jobbar med prestanda på webben, reder ut begreppen och går till botten med hur vi kan optimera vår prestanda.

TRANSCRIPT

Page 1: Optimera din sidladdning - en djupdykning i prestanda på webben
Page 2: Optimera din sidladdning - en djupdykning i prestanda på webben

Optimera din sidladdningEn djupdykning i prestanda på webben

@PeterssonJesperJesper Petersson

Page 3: Optimera din sidladdning - en djupdykning i prestanda på webben

Varför bry sig?

Page 4: Optimera din sidladdning - en djupdykning i prestanda på webben
Page 5: Optimera din sidladdning - en djupdykning i prestanda på webben
Page 6: Optimera din sidladdning - en djupdykning i prestanda på webben
Page 7: Optimera din sidladdning - en djupdykning i prestanda på webben

• 25% lämnar sidan om laddningstiden > 3s

• 80% av de skulle inte komma tillbaka igen

• 40% av de skulle berätta för andra om den dåliga upplevelsen

http://www.strangeloopnetworks.com/web-performance-infographics/

Prestanda i siffror

Page 8: Optimera din sidladdning - en djupdykning i prestanda på webben

En studie om stress

• 95% av våra beslut bygger på känslor

• 4 olika hemsidor

• Ombads hitta en produkt och checka ut

• 500 ms fördröjning

• Visste ej om att prestanda studerades

Page 9: Optimera din sidladdning - en djupdykning i prestanda på webben

En studie om stress

• 95% av våra beslut bygger på känslor

• 4 olika hemsidor

Page 10: Optimera din sidladdning - en djupdykning i prestanda på webben
Page 11: Optimera din sidladdning - en djupdykning i prestanda på webben

Resultat

• 12-25% mer frustrerade

• No shit?

http://www.slideshare.net/Radware/velocity-mobile-webstressperformanceux

Page 12: Optimera din sidladdning - en djupdykning i prestanda på webben
Page 13: Optimera din sidladdning - en djupdykning i prestanda på webben

Agenda

• Nätverk

• Laddning av resurser

• Framtiden

Page 14: Optimera din sidladdning - en djupdykning i prestanda på webben

Hur snabbt behöver det gå?

Fördröjning Användarupplevelse

0-100 ms Omedelbar

100-300 ms Långsam, trög

300-1000 ms Datorn jobbar...

1000+ ms Börjar tänka på annat

Page 15: Optimera din sidladdning - en djupdykning i prestanda på webben

Hur snabbt går det?

0%

10%

20%

30%

40%

Sidladdning [s]

0-1 1-3 3-7 7-13 13-21 21-35 35-60 60+

Mobil Desktop

http://analytics.blogspot.se/2012/04/global-site-speed-overview-how-fast-are.html

Page 16: Optimera din sidladdning - en djupdykning i prestanda på webben

Det löser sig, right?

Page 17: Optimera din sidladdning - en djupdykning i prestanda på webben

Sidl

addn

ing

[ms]

0

800

1600

2400

3200

Bandbredd [Mbps]

1 2 3 4 5 6 7 8 9 10

http://www.akamai.com/stateoftheinternet/

Bandbredd

Page 18: Optimera din sidladdning - en djupdykning i prestanda på webben

Sidl

addn

ing

[ms]

0

1000

2000

3000

4000

RTT [ms]

240 220 200 180 160 140 120 100 80 60 40 20 0

http://www.akamai.com/stateoftheinternet/

Responstid

Page 19: Optimera din sidladdning - en djupdykning i prestanda på webben

Minimera laddningstid• Stockholm - New York

• Förbättra bandbredden?

• “Enkelt” - Gräv en kabel till

• Förbättra responstiden?

• Ljusets hastighet begränsar oss

• ~21 ms

• Ljusets hastighet i fiber ~ 0,6c

Page 20: Optimera din sidladdning - en djupdykning i prestanda på webben

Mobila nätverk

• 802.11 a/b/g/n/ac/ad (Wifi)

• W-CDMA, UMTS (3G)

• HSPA, HSPA+, LTE (3.5G)

• LTE advanced, HSPA+ rev 11 (4G)

• ...

Page 21: Optimera din sidladdning - en djupdykning i prestanda på webben

Wifi

• RAC - Random Access Channel

• 1. Är det ledigt?

• 2. Skicka data

• 3. Vänta på ACK

• Fungerar bra för ett mindre antal klienter

• Inga garantier

Page 22: Optimera din sidladdning - en djupdykning i prestanda på webben

3G, 3.5G, 4G

• Annan designfilosofi

• Nödsamtal, prioriterad data, batteritid

• RRC (Radio Resource Controller)

Page 23: Optimera din sidladdning - en djupdykning i prestanda på webben

3G, 3.5G, 4G

• Annan designfilosofi

• Nödsamtal, prioriterad data, batteritid

• RRC (Radio Resource Controller)

En förenklad bild av verkligheten

Page 24: Optimera din sidladdning - en djupdykning i prestanda på webben

GET /index.html HTTP/1.1

Webbläsare! Webbserver

<html>...</html>

SYN

SYN+ACK

Page 25: Optimera din sidladdning - en djupdykning i prestanda på webben

TCP slow start

• Hur mycket data ska vi skicka?

• Nätverket kan vara överbelastat

• Lösning: Congestion control

Page 26: Optimera din sidladdning - en djupdykning i prestanda på webben

TCP slow start

0

10

20

30

40

50

60

70

Page 27: Optimera din sidladdning - en djupdykning i prestanda på webben

TCP slow start

• cwnd kontrolleras på servern

• Ökning från 4 till 10 i 2.6.39

• Från ~5,8 kB till ~14,6 kB

• Uppdatera kerneln på servern!

Page 28: Optimera din sidladdning - en djupdykning i prestanda på webben

Laddning av resurser

• Ordningen spelar roll

• CSS i <head>

• Javascript precis innan </body>

• Modernizr inline i <head>

Page 29: Optimera din sidladdning - en djupdykning i prestanda på webben

Laddning av resurser<!DOCTYPE html>!<html>!! <head>!! ! <link rel="stylesheet" href="style.css" type="text/css" />!! ! <script src="modernizr.js"></script>!! ! <script src="main.js"></script>!! </head>!! <body>!! ! <img src="dog.jpg" />!! </body>!</html>!

Page 30: Optimera din sidladdning - en djupdykning i prestanda på webben

Laddning av resurser

• Ordningen spelar roll

• CSS i <head>

• Javascript precis innan </body>

• Modernizr inline i <head>

<!DOCTYPE html>!<html>!! <head>!! ! <link rel="stylesheet" href="style.css" type="text/css" />!! ! <script> window.Modernizr = …</script>!! </head>!! <body>!! ! <img src="dog.jpg" />!! ! <script src="main.js"></script>!! </body>!</html>!

Page 31: Optimera din sidladdning - en djupdykning i prestanda på webben

Quick fixes

• Konkatenering av Javascript / CSS

• Minifiering av Javascript / CSS / HTML

• Spriting av bilder

• base64-enkodning av bilder

• gzip

• (LZ77 + huffmankodning)

Page 32: Optimera din sidladdning - en djupdykning i prestanda på webben

Quick fixes

• Konkatenering av Javascript / CSS

• Minifiering av Javascript / CSS / HTML

• Spriting av bilder

• base64-enkodning av bilder

• gzip

• (LZ77 + huffmankodning)

<html></html>!!

A = html>!<A</A

Page 33: Optimera din sidladdning - en djupdykning i prestanda på webben

Hämtning av resurser

• Cache-headers

• Cookie-fria domäner

• CDN

• Max 6 parallella requests per domän

• Domain sharding

• Extra DNS-uppslag som straff

Page 34: Optimera din sidladdning - en djupdykning i prestanda på webben

Hämtning av resurser

• Cache-headers

• Cookie-fria domäner

• CDN

• Max 6 parallella requests per domän

• Domain sharding

• Extra DNS-uppslag som straff

Page 35: Optimera din sidladdning - en djupdykning i prestanda på webben

Att mäta prestanda

• Tid till rendering bör prioriteras!

• Mät i RTTs istället för sekunder

Page 36: Optimera din sidladdning - en djupdykning i prestanda på webben

Att mäta prestanda

RTT

TCP handshake 1

TLS/SSL handshake 2

Data ln2(1 +S

14.6)

S - Storlek i kB av datan som skall överföras

Page 37: Optimera din sidladdning - en djupdykning i prestanda på webben

Framtiden

Page 38: Optimera din sidladdning - en djupdykning i prestanda på webben

HTTP 2.0

• Använder en enda TCP-anslutning

• Pusha ut resurser

• Ingen konkatenering av CSS/JS

• Inga mer sprites

• Ingen domain-sharding

Page 39: Optimera din sidladdning - en djupdykning i prestanda på webben

• IE11+ (~56%) *

• Alla webbläsartillverkare gillar det!

• Planeras vara klart november 2014

• Google, Facebook, Twitter, m.fl. använder det redan

* http://caniuse.com/#feat=spdy

HTTP 2.0

Page 40: Optimera din sidladdning - en djupdykning i prestanda på webben

Nya bildformat

• I snitt 1 MB bilder per sida *

• Nuvarande bildformat är från 90-talet

• Nya bildformat

• Webp och JPEG XR

http://httparchive.org/interesting.php#bytesperpage

Page 41: Optimera din sidladdning - en djupdykning i prestanda på webben

Webp JPEG XR

Storlek relativt JPG ~30% mindre ~40% mindre

Lossless (tänk png) Ja Ja

Lossy (tänk jpg) Ja Ja

Animationer Ja (wohoo!) Nej

Progressiv dekodning Nej Ja

WebbläsarstödChrome och Opera!

(~40% *)IE (9+)!

(~16% **)

* http://caniuse.com/#feat=webp

** http://caniuse.com/#feat=jpegxr

Nya bildformat

Page 42: Optimera din sidladdning - en djupdykning i prestanda på webben

• Webp + JPEG XR = Sant

• Accept image/webp

• ~56% tillsammans, tappar Firefox och mobile Safari

• Abstrahera logik till CDN

• Akamai stödjer redan detta

Nya bildformat

Page 43: Optimera din sidladdning - en djupdykning i prestanda på webben

FramtidenNutiden