speed is essential for a great web experience

143
http://www.flickr.com/photos/barkaway/342359810 Speed is Essential for a Great Web Experience Andy Davies NCC Group

Upload: andy-davies

Post on 12-Jul-2015

5.170 views

Category:

Internet


1 download

TRANSCRIPT

Page 1: Speed is Essential for a Great Web Experience

http://www.flickr.com/photos/barkaway/342359810

Speed is Essential for a Great Web Experience

Andy Davies NCC Group

Page 2: Speed is Essential for a Great Web Experience
Page 3: Speed is Essential for a Great Web Experience

https://www.flickr.com/photos/joelhughes/8743984985

Page 4: Speed is Essential for a Great Web Experience

http://www.flickr.com/photos/randomidea/247994072

Performance isn’t always a priority

Page 5: Speed is Essential for a Great Web Experience

https://www.flickr.com/photos/sharynmorrow/643126727

“Has it loaded yet?”

Page 6: Speed is Essential for a Great Web Experience

100ms1s 10s

Response Time in Man-computer Conversational Transactions Robert B. Miller, 1968

Instan

tSea

mless

Yawn!

How we perceive response times

Page 7: Speed is Essential for a Great Web Experience

100ms1s 10s

Response Time in Man-computer Conversational Transactions Robert B. Miller, 1968

Instan

tSea

mless

Yawn!

How we perceive response times

Only 12% of the top 100 (US) retail sites rendered feature content in less than 3 seconds.

Page 8: Speed is Essential for a Great Web Experience

“50% more concentration when using badly performing web sites”

Foviance

http://www.flickr.com/photos/yourdon/3366991042

Page 9: Speed is Essential for a Great Web Experience

Abandonment rate over 200+ sites / 177+ million page views over 2 weeks - http://www.measureworks.nl / Gomez

Delay increases abandonment rate...

Page 10: Speed is Essential for a Great Web Experience

…and has a negative impact on brand perception

Tesco’s ‘Fast’

Tesco’s ‘Slow’

Mobile Web Stress: Understanding the Neurological Impact of Poor Performance, Tammy Everts, Radware

Page 11: Speed is Essential for a Great Web Experience

We’re more tolerant as we get further into funnels

Less Tolerant

More Tolerant

Page 12: Speed is Essential for a Great Web Experience

and suspicious if something’s too fast

Page 13: Speed is Essential for a Great Web Experience

and suspicious if something’s too fast

Page 14: Speed is Essential for a Great Web Experience

Reader panel (3,000 people) rated speed (fast page load time) as their second most important driver!

Speed had the highest percentage of people saying it was VERY important to them

Page 15: Speed is Essential for a Great Web Experience

Faster experiences improve conversion

Walmart 2012

Page 16: Speed is Essential for a Great Web Experience

increased conversions by 10%

http://www.slideshare.net/cliffcrocker/velocity-ny-how-to-measure-revenue-in-milliseconds

Shaved 1 second off median home page time!6 seconds off 98th percentile

Page 17: Speed is Essential for a Great Web Experience

Bing carried out some experiments

+1s - 2.8%

$/

Page 18: Speed is Essential for a Great Web Experience

Shopzilla cut page load time by 5 seconds!

http://velocityconf.com/velocity2009/public/schedule/detail/7709

$$$

+12% +25% -50%

Page 19: Speed is Essential for a Great Web Experience

Seatwave - below 4 secs vs. above 4 secs

http://www.slideshare.net/pdyball/velocity-eu-2013-what-is-the-velocity-of-an-unladen-swallow

+28% 2x 1/6

Page 20: Speed is Essential for a Great Web Experience

But I’m frustrated…

http://www.flickr.com/photos/sybrenstuvel/2468506922

Page 21: Speed is Essential for a Great Web Experience

The Web is Too Slow

http://www.flickr.com/photos/the_justified_sinner/3507390621

Page 22: Speed is Essential for a Great Web Experience
Page 23: Speed is Essential for a Great Web Experience
Page 24: Speed is Essential for a Great Web Experience

Too many sites are too slow

http://www.flickr.com/photos/the_justified_sinner/3507390621

Page 25: Speed is Essential for a Great Web Experience

and it’s getting worse!

Only 12% of the top 100 (US) retail sites rendered feature content in less than 3 seconds. !!

Year-on-year the median page has slowed down by 23%

Tammy Everts - Radware State of the Union Fall 2014

Page 26: Speed is Essential for a Great Web Experience

“We’re not being deliberate about performance”! Tim Kadlec

https://www.flickr.com/photos/lukew/7382528728

Page 27: Speed is Essential for a Great Web Experience

But only if we build it that way…

http://3.bp.blogspot.com/-0RqujOyE1ro/Up9HF7bPxbI/AAAAAAAAAbM/Ijudm6uq-dg/s1600/This+is+for+Everyone.jpg

Page 28: Speed is Essential for a Great Web Experience

We need to understand our fundamental building blocks

https://www.flickr.com/photos/ogimogi/2253657555

Page 29: Speed is Essential for a Great Web Experience

Everyone has fast broadband now… Right?

https://www.flickr.com/photos/98640399@N08/9287370881

Page 30: Speed is Essential for a Great Web Experience

Spee

d (M

bps)

0

2

4

6

8

10

12

14

16

18

Nov 08

Apr 09

Nov 10

May 10

Nov 10

May 11

Nov 11

May 12

Nov 12

May 13

Nov 13

UK Broadband speeds are rising…

Ofcom

Page 31: Speed is Essential for a Great Web Experience

Vis

itors

(%

)

Load Time (s)

1 2 3 4 5 6 7 8 9 10

1%3%3%

2%

6%

8%

13%

27%

8%

6%

But ‘Real Users’ experience varies

Page 32: Speed is Essential for a Great Web Experience

Vis

itors

(%

)

Load Time (s)

1 2 3 4 5 6 7 8 9 10 > 10

24%

1%3%3%

2%

6%

8%

13%

27%

8%

6%

Vis

itors

(%

)

Load Time (s)

1 2 3 4 5 6 7 8 9 10 > 10

But ‘Real Users’ experience varies

Page 33: Speed is Essential for a Great Web Experience

and bandwidth (often) isn’t the bottleneck

news.bbc.co.uk tested via webpagetest.org throttled at 1.5Mbps (bursts over 1.5Mbps are artefact of testing)

10s0s 5s

0.5

1.0

1.5

2.0

Page 34: Speed is Essential for a Great Web Experience

Which will be faster?

1Mbps 10Mbps

Page 35: Speed is Essential for a Great Web Experience

Which will be faster?

1Mbps 10Mbps

Page 36: Speed is Essential for a Great Web Experience

Which will be faster?

1Mbps 10Mbps/ 28ms RTT / 280ms RTT

Page 37: Speed is Essential for a Great Web Experience

We often think of the network as a pipe

https://www.flickr.com/photos/63567936@N00/4181042889

Page 38: Speed is Essential for a Great Web Experience

that’s sometimes really bad

https://www.flickr.com/photos/chesh2000/4487000196

Page 39: Speed is Essential for a Great Web Experience

but the reality is closer to

http://1m0esx2939yhjwld8419obqhyb.wpengine.netdna-cdn.com/wp-content/uploads/2014/06/DSC_0492.jpg

Page 40: Speed is Essential for a Great Web Experience

“More Bandwidth Doesn’t Matter (much)” Mike Belshe

Page

Loa

d T

ime

Bandwidth (Mbps)

1 2 3 4 5 6 7 8 9 10

1.36s1.37s1.38s1.39s1.41s1.44s1.50s1.63s

1.95s

3.11s

Page 41: Speed is Essential for a Great Web Experience

Latency has linear impact on user experiencePa

ge L

oad

Tim

e (s

)

1

2

3

4

Round Trip Time (ms)

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

Page 42: Speed is Essential for a Great Web Experience

http://www.vectortemplates.comBT Backbone roundtrip times from London: http://ippm.bt.net/hour/europe/lo.shtml

Latency increases with distance

Page 43: Speed is Essential for a Great Web Experience

http://www.vectortemplates.comBT Backbone roundtrip times from London: http://ippm.bt.net/hour/europe/lo.shtml

Latency increases with distance

81ms

201ms

156ms

266ms

232ms

28ms

Page 44: Speed is Essential for a Great Web Experience

There’s the last mile latency too (and routers, other networking kit, mobile latencies too)

https://www.flickr.com/photos/kiwanja/3170292282

Page 45: Speed is Essential for a Great Web Experience

TCP and the Lower Bound of Web Performance John Rauser

Larger downloads == more round trips

71kB

143kB

214kB

285kB

1 2 3 4 5 6 7 8 9 10 11

(TCP Segments)

Round Trips

Size

Page 46: Speed is Essential for a Great Web Experience

Latency is one of our greatest enemies

https://www.flickr.com/photos/jjvaca/728072059

Page 47: Speed is Essential for a Great Web Experience

We can cheat the latency penalty (sometimes)

https://speakerdeck.com/mikeyk/secrets-to-lightning-fast-mobile-design

Page 48: Speed is Essential for a Great Web Experience
Page 49: Speed is Essential for a Great Web Experience

User gets feedback

Page 50: Speed is Essential for a Great Web Experience

User gets feedback

Network request still in progress

Page 51: Speed is Essential for a Great Web Experience

But there’s plenty of recipes to work around it

Page 52: Speed is Essential for a Great Web Experience

Some of the optimisations are hacks!

https://www.flickr.com/photos/rocketnumber9/13695281

Page 53: Speed is Essential for a Great Web Experience

Browsers support more parallel connections

Old browsers - 2 parallel connections

Today’s browsers - 4 plus connections

Page 54: Speed is Essential for a Great Web Experience

We split resources across domains

www.bbc.co.uk!static.bbci.co.uk!news.bbcimg.co.uk!node1.bbcimg.co.uk

Page 55: Speed is Essential for a Great Web Experience

DataURIs

url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAMAAADzN3VRAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAZQTFRF/wAAAAAAQaMSAwAAABJJREFUeNpiYBgFo2AwAIAAAwACigABtnCV2AAAAABJRU5ErkJggg==)

=

Page 56: Speed is Essential for a Great Web Experience

DataURIs

url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAMAAADzN3VRAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAZQTFRF/wAAAAAAQaMSAwAAABJJREFUeNpiYBgFo2AwAIAAAwACigABtnCV2AAAAABJRU5ErkJggg==)

=

Larger downloads (needs gzip)!Overrides browser priorities

Page 57: Speed is Essential for a Great Web Experience

Create CSS and JavaScript bundles

++++

= =

Page 58: Speed is Essential for a Great Web Experience

Create CSS and JavaScript bundles

++++

= =More to download and parse

Page 59: Speed is Essential for a Great Web Experience

Create CSS and JavaScript bundles

++++

= =More to download and parse x+!

!

Whole bundle is invalidated if a

single file changes

Page 60: Speed is Essential for a Great Web Experience

CSS Sprites

Page 61: Speed is Essential for a Great Web Experience

CSS Sprites

To get just one sprite …

Page 62: Speed is Essential for a Great Web Experience

CSS Sprites

Browser must download and decode the whole image

To get just one sprite …

Page 63: Speed is Essential for a Great Web Experience

There’s a tension between development and delivery

https://www.flickr.com/photos/domiriel/7376397968

Page 64: Speed is Essential for a Great Web Experience

Build tools and optimisation services help plug gaps

and won’t be going away…

Page 65: Speed is Essential for a Great Web Experience

But couldn’t we be more efficient?

https://www.flickr.com/photos/belsymington/4102783610

Page 66: Speed is Essential for a Great Web Experience

HTTP/2(Evolved from Google’s SPDY)

Page 67: Speed is Essential for a Great Web Experience

Single multiplexed connection to host

HTTP/1.1

HTTP/2

Page 68: Speed is Essential for a Great Web Experience

Multiplexing offers interesting possibilities

Page 69: Speed is Essential for a Great Web Experience

How much of an image do we need to make it usable - 5%?

Experiment by John Mellor at Google

Page 70: Speed is Essential for a Great Web Experience

How much of an image do we need to make it usable - 15%?

Page 71: Speed is Essential for a Great Web Experience

How much of an image do we need to make it usable - 25%?

Page 72: Speed is Essential for a Great Web Experience

How much of an image do we need to make it usable - 80%?

Page 73: Speed is Essential for a Great Web Experience

There are some questions over the user experience with progressive images

How much of an image do we need to make it usable - 80%?

Page 74: Speed is Essential for a Great Web Experience

HTTP/1.1 - browser sets priorities

Page 75: Speed is Essential for a Great Web Experience

HTTP/2 - browser hints priorities server can override them

Page 76: Speed is Essential for a Great Web Experience

Adds header compression too

Page 77: Speed is Essential for a Great Web Experience

Google and Mozilla will only support over HTTPS

http://www.flickr.com/photos/forsytht/4553656244

Page 78: Speed is Essential for a Great Web Experience

HTTP/2 rollouts will start next year - we still have a lot to learn

http://www.flickr.com/photos/atoach/6014917153

Page 79: Speed is Essential for a Great Web Experience

???

Page 80: Speed is Essential for a Great Web Experience

Covert HTML …<html> <head> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <link href="styles.css" rel="stylesheet"> <script src="script.js"></script> <title>HTML Example</title> </head> <body> <h1>Title</h1> <p>Some introductory text and picture! <img src="image.jpg"/></p> </body> </html>

Page 81: Speed is Essential for a Great Web Experience

… into Document Object Model (DOM)

html

head body

meta link script title h1 p

img

Page 82: Speed is Essential for a Great Web Experience

Convert CSS …

body { font-size: 16px } h1 { text-decoration: underline} p { font-weight: bold } p > span { color: #000 } img { border: 1px solid #ccc }

Page 83: Speed is Essential for a Great Web Experience

… into CSS Object Model (CSSOM)

body

h1 p

span

font-size: 16px

font-size: 16px text-decoration: underline

font-size: 16px font-weight: bold

font-size: 16px font-weight: bold color: #000

imgfont-size: 16px border: 1px solid #ccc

Page 84: Speed is Essential for a Great Web Experience

Combine DOM and CSSOM to build Render Tree

body

h1 p

img

font-size: 16px text-decoration: underline

font-size: 16px font-weight: bold border: 1px solid #ccc

font-size: 16px font-weight: bold

Page 85: Speed is Essential for a Great Web Experience

Render the Page

HTML

CSS

DOM

CSSOM

Render!Tree

Layout Paint

Page 86: Speed is Essential for a Great Web Experience

But what about JavaScript?

HTML

CSS

DOM

CSSOM

Render!Tree

Layout PaintJavaScript

Page 87: Speed is Essential for a Great Web Experience

HTML

CSS

DOM

CSSOM

Render!Tree

Layout PaintJavaScript

DOM

CSSOM

JavaScript

JavaScript blocks DOM construction!CSSOM construction blocks JavaScript execution

But what about JavaScript?

Page 88: Speed is Essential for a Great Web Experience

Let’s pretend we’re a browser (with the preloader switched off)

https://www.flickr.com/photos/mozillaeu/11171168996

Page 89: Speed is Essential for a Great Web Experience

Two key rules to remember

Constructing CSS Object Model (CSSOM) blocks JavaScript execution!!

JavaScript blocks DOM construction

Page 90: Speed is Essential for a Great Web Experience

GET example.html HTTP/1.1

Page 91: Speed is Essential for a Great Web Experience

GET example.html HTTP/1.1

Page 92: Speed is Essential for a Great Web Experience

GET example.html HTTP/1.1

Page 93: Speed is Essential for a Great Web Experience

<html> <head> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <link href="styles.css" rel="stylesheet"> <link href="more-styles.css" rel="stylesheet"> <script src="script.js"></script> <script src="another-script.js"></script> <title>HTML Example</title> </head> <body> <h1>Title</h1> <p>Some introductory text and picture! <img src="image.jpg"/></p> <p>Some more text and another picture! <img src="image-2.jpg"/></p> </body> </html>

example.html

Page 94: Speed is Essential for a Great Web Experience

<html> <head> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <link href="styles.css" rel="stylesheet"> <link href="more-styles.css" rel="stylesheet"> <script src="script.js"></script> <script src="another-script.js"></script> <title>HTML Example</title> </head> <body> <h1>Title</h1> <p>Some introductory text and picture! <img src="image.jpg"/></p> <p>Some more text and another picture! <img src="image-2.jpg"/></p> </body> </html>

example.html

Page 95: Speed is Essential for a Great Web Experience

<html> <head> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <link href="styles.css" rel="stylesheet"> <link href="more-styles.css" rel="stylesheet"> <script src="script.js"></script> <script src="another-script.js"></script> <title>HTML Example</title> </head> <body> <h1>Title</h1> <p>Some introductory text and picture! <img src="image.jpg"/></p> <p>Some more text and another picture! <img src="image-2.jpg"/></p> </body> </html>

example.html

GET /styles.css HTTP/1.1

Page 96: Speed is Essential for a Great Web Experience

<html> <head> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <link href="styles.css" rel="stylesheet"> <link href="more-styles.css" rel="stylesheet"> <script src="script.js"></script> <script src="another-script.js"></script> <title>HTML Example</title> </head> <body> <h1>Title</h1> <p>Some introductory text and picture! <img src="image.jpg"/></p> <p>Some more text and another picture! <img src="image-2.jpg"/></p> </body> </html>

example.html

Page 97: Speed is Essential for a Great Web Experience

<html> <head> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <link href="styles.css" rel="stylesheet"> <link href="more-styles.css" rel="stylesheet"> <script src="script.js"></script> <script src="another-script.js"></script> <title>HTML Example</title> </head> <body> <h1>Title</h1> <p>Some introductory text and picture! <img src="image.jpg"/></p> <p>Some more text and another picture! <img src="image-2.jpg"/></p> </body> </html>

example.html

GET /more-styles.css HTTP/1.1

Page 98: Speed is Essential for a Great Web Experience

<html> <head> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <link href="styles.css" rel="stylesheet"> <link href="more-styles.css" rel="stylesheet"> <script src="script.js"></script> <script src="another-script.js"></script> <title>HTML Example</title> </head> <body> <h1>Title</h1> <p>Some introductory text and picture! <img src="image.jpg"/></p> <p>Some more text and another picture! <img src="image-2.jpg"/></p> </body> </html>

example.html

Page 99: Speed is Essential for a Great Web Experience

<html> <head> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <link href="styles.css" rel="stylesheet"> <link href="more-styles.css" rel="stylesheet"> <script src="script.js"></script> <script src="another-script.js"></script> <title>HTML Example</title> </head> <body> <h1>Title</h1> <p>Some introductory text and picture! <img src="image.jpg"/></p> <p>Some more text and another picture! <img src="image-2.jpg"/></p> </body> </html>

example.html

GET /script.js HTTP/1.1

Page 100: Speed is Essential for a Great Web Experience

<html> <head> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <link href="styles.css" rel="stylesheet"> <link href="more-styles.css" rel="stylesheet"> <script src="script.js"></script> <script src="another-script.js"></script> <title>HTML Example</title> </head> <body> <h1>Title</h1> <p>Some introductory text and picture! <img src="image.jpg"/></p> <p>Some more text and another picture! <img src="image-2.jpg"/></p> </body> </html>

example.html

Page 101: Speed is Essential for a Great Web Experience

<html> <head> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <link href="styles.css" rel="stylesheet"> <link href="more-styles.css" rel="stylesheet"> <script src="script.js"></script> <script src="another-script.js"></script> <title>HTML Example</title> </head> <body> <h1>Title</h1> <p>Some introductory text and picture! <img src="image.jpg"/></p> <p>Some more text and another picture! <img src="image-2.jpg"/></p> </body> </html>

example.html

Page 102: Speed is Essential for a Great Web Experience

<html> <head> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <link href="styles.css" rel="stylesheet"> <link href="more-styles.css" rel="stylesheet"> <script src="script.js"></script> <script src="another-script.js"></script> <title>HTML Example</title> </head> <body> <h1>Title</h1> <p>Some introductory text and picture! <img src="image.jpg"/></p> <p>Some more text and another picture! <img src="image-2.jpg"/></p> </body> </html>

example.html

Must wait for:!1. CSS download and OM construction!2. JS download and execution

Page 103: Speed is Essential for a Great Web Experience

<html> <head> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <link href="styles.css" rel="stylesheet"> <link href="more-styles.css" rel="stylesheet"> <script src="script.js"></script> <script src="another-script.js"></script> <title>HTML Example</title> </head> <body> <h1>Title</h1> <p>Some introductory text and picture! <img src="image.jpg"/></p> <p>Some more text and another picture! <img src="image-2.jpg"/></p> </body> </html>

example.html

Page 104: Speed is Essential for a Great Web Experience

<html> <head> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <link href="styles.css" rel="stylesheet"> <link href="more-styles.css" rel="stylesheet"> <script src="script.js"></script> <script src="another-script.js"></script> <title>HTML Example</title> </head> <body> <h1>Title</h1> <p>Some introductory text and picture! <img src="image.jpg"/></p> <p>Some more text and another picture! <img src="image-2.jpg"/></p> </body> </html>

example.html

GET /another-script.js HTTP/1.1

Page 105: Speed is Essential for a Great Web Experience

<html> <head> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <link href="styles.css" rel="stylesheet"> <link href="more-styles.css" rel="stylesheet"> <script src="script.js"></script> <script src="another-script.js"></script> <title>HTML Example</title> </head> <body> <h1>Title</h1> <p>Some introductory text and picture! <img src="image.jpg"/></p> <p>Some more text and another picture! <img src="image-2.jpg"/></p> </body> </html>

example.html

Page 106: Speed is Essential for a Great Web Experience

<html> <head> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <link href="styles.css" rel="stylesheet"> <link href="more-styles.css" rel="stylesheet"> <script src="script.js"></script> <script src="another-script.js"></script> <title>HTML Example</title> </head> <body> <h1>Title</h1> <p>Some introductory text and picture! <img src="image.jpg"/></p> <p>Some more text and another picture! <img src="image-2.jpg"/></p> </body> </html>

example.html

Page 107: Speed is Essential for a Great Web Experience

<html> <head> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <link href="styles.css" rel="stylesheet"> <link href="more-styles.css" rel="stylesheet"> <script src="script.js"></script> <script src="another-script.js"></script> <title>HTML Example</title> </head> <body> <h1>Title</h1> <p>Some introductory text and picture! <img src="image.jpg"/></p> <p>Some more text and another picture! <img src="image-2.jpg"/></p> </body> </html>

example.html

Must wait for:!1. JS download and execution

Page 108: Speed is Essential for a Great Web Experience

<html> <head> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <link href="styles.css" rel="stylesheet"> <link href="more-styles.css" rel="stylesheet"> <script src="script.js"></script> <script src="another-script.js"></script> <title>HTML Example</title> </head> <body> <h1>Title</h1> <p>Some introductory text and picture! <img src="image.jpg"/></p> <p>Some more text and another picture! <img src="image-2.jpg"/></p> </body> </html>

example.html

Page 109: Speed is Essential for a Great Web Experience

<html> <head> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <link href="styles.css" rel="stylesheet"> <link href="more-styles.css" rel="stylesheet"> <script src="script.js"></script> <script src="another-script.js"></script> <title>HTML Example</title> </head> <body> <h1>Title</h1> <p>Some introductory text and picture! <img src="image.jpg"/></p> <p>Some more text and another picture! <img src="image-2.jpg"/></p> </body> </html>

example.html

GET /image.jpg HTTP/1.1

Page 110: Speed is Essential for a Great Web Experience

<html> <head> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <link href="styles.css" rel="stylesheet"> <link href="more-styles.css" rel="stylesheet"> <script src="script.js"></script> <script src="another-script.js"></script> <title>HTML Example</title> </head> <body> <h1>Title</h1> <p>Some introductory text and picture! <img src="image.jpg"/></p> <p>Some more text and another picture! <img src="image-2.jpg"/></p> </body> </html>

example.html

Page 111: Speed is Essential for a Great Web Experience

<html> <head> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <link href="styles.css" rel="stylesheet"> <link href="more-styles.css" rel="stylesheet"> <script src="script.js"></script> <script src="another-script.js"></script> <title>HTML Example</title> </head> <body> <h1>Title</h1> <p>Some introductory text and picture! <img src="image.jpg"/></p> <p>Some more text and another picture! <img src="image-2.jpg"/></p> </body> </html>

example.html

GET /image-2.jpg HTTP/1.1

Page 112: Speed is Essential for a Great Web Experience

http://www.flickr.com/photos/nozzer/3990622685

Pre-loader hides some of the latency penalty So our pages load 20% faster

Page 113: Speed is Essential for a Great Web Experience

Structure pages for the browser’s critical path

HTML

CSS

DOM

CSSOM

Render!Tree

Layout PaintJavaScript

Page 114: Speed is Essential for a Great Web Experience

Get the <head> straight<!doctype html> <html> <head> <meta charset="utf-8"> <title>This is my title<title> !

<link rel="stylesheet" href="styles.css" type="text/css" /> !

<script src="script.js"></script> . . . </head>

CSS before JS!Ideally one file

Only JS needed for page load

Page 115: Speed is Essential for a Great Web Experience

!

. . . !

<script src="restofscript.js"></script> !

</body> </html> One file or many?

Load remaining JavaScript late as possible

Page 116: Speed is Essential for a Great Web Experience

Use async attribute to avoid blocking DOM

!

<script async src="myscript.js"></script>

http://caniuse.com/script-async

Widely supported (82%) doesn’t incur delays of using inline script to load other scripts e.g. Google Analytics snippet

Page 117: Speed is Essential for a Great Web Experience

HTML

CSS

DOM

CSSOM

Render!Tree

Layout PaintJavaScript Render!Tree

Page 118: Speed is Essential for a Great Web Experience

HTML

CSS

DOM

CSSOM

Render!Tree

Layout PaintJavaScript Render!Tree

Fonts and background images discovered

when render tree builds

Page 119: Speed is Essential for a Great Web Experience

And we all hate this… right?

Page 120: Speed is Essential for a Great Web Experience

Use font foundries that prioritise our visitor’s experience

http://www.flickr.com/photos/splorp/4951916342

Page 121: Speed is Essential for a Great Web Experience

https://www.flickr.com/photos/steveweaver/2915792034

Browsers pull resources from the server but …

Page 122: Speed is Essential for a Great Web Experience

https://www.flickr.com/photos/christian_bachellier/582457911

What if the server could push them?

Page 123: Speed is Essential for a Great Web Experience

Browser Server

Server builds page

GET index.html

<html><head>…

Loading a web page

Request other page resources

Page 124: Speed is Essential for a Great Web Experience

Browser Server

Server builds page

GET index.html

<html><head>…

Network Idle

Request other page resources

Loading a web page

Page 125: Speed is Essential for a Great Web Experience

Browser Server

Server builds page

GET index.html

<html><head>…

Server Push

Request other page resources

Push critical resource e.g. CSS

Page 126: Speed is Essential for a Great Web Experience

Browser Server

Server builds page

GET index.html

<html><head>…

Request other page resources

Push critical resource e.g. CSS

Server Push

Page 127: Speed is Essential for a Great Web Experience

Browser Server

Server builds page

GET index.html

<html><head>…

Request other page resources

Push critical resource e.g. CSS

Server Push

Browser can reject push

Page 128: Speed is Essential for a Great Web Experience

We need to be deliberate, to design for performance

https://www.flickr.com/photos/9760699@N08/3748770917

Page 129: Speed is Essential for a Great Web Experience

http://www.flickr.com/photos/communityfriend/2342578485

Set performance budgets

Page 130: Speed is Essential for a Great Web Experience

Setting a budget

An event that matters to the visitor!within a set time!under defined network conditions

Page 131: Speed is Essential for a Great Web Experience

“Usable within 10 seconds on GPRS connection”!BBC News

Page 132: Speed is Essential for a Great Web Experience

“SpeedIndex under 1000”!Paul Irish

Page 133: Speed is Essential for a Great Web Experience

Could use page size or number of objects but…

Page 134: Speed is Essential for a Great Web Experience

…how well would they work here?

Page 135: Speed is Essential for a Great Web Experience

Measure frequently - during build and in live

http://www.flickr.com/photos/chandramarsono/4324373384

Page 136: Speed is Essential for a Great Web Experience

Make performance visible

Lara Hogan, Etsy

Page 137: Speed is Essential for a Great Web Experience

������ ����������������!��������� ���������������������������

Lara Hogan, Etsy

Page 138: Speed is Essential for a Great Web Experience

http://lafikl.github.io/perfBar

Page 139: Speed is Essential for a Great Web Experience

Compare against competitors

Page 140: Speed is Essential for a Great Web Experience

The Guardian display their performance on a monitor by FD’s office

Page 141: Speed is Essential for a Great Web Experience

Remember the constraints of our medium

https://www.flickr.com/photos/33649815@N03/3367739514

Page 142: Speed is Essential for a Great Web Experience

https://www.flickr.com/photos/basheertome/4762529213

Page 143: Speed is Essential for a Great Web Experience

http://www.flickr.com/photos/nzbuu/4093456029

Thank You!

@andydavies [email protected]