43
flickr.com/photos/djbiesack/85833076/ High Performance HTML5 stevesouders.com/docs/html5-user-group-20110728.pptx Disclaimer: This content does not necessarily reflect the opinions of my employer.

High Performance HTML5 (SF HTML5 UG)

Embed Size (px)

DESCRIPTION

Tips for what to use (and avoid) in HTML5 for faster websites. This talk was for the San Francisco HTML5 User Group on July 28, 2011.

Citation preview

Page 1: High Performance HTML5 (SF HTML5 UG)

flickr.com/photos/djbiesack/85833076/

High Performance HTML5

stevesouders.com/docs/html5-user-group-20110728.pptxDisclaimer: This content does not necessarily reflect the opinions of my employer.

Page 2: High Performance HTML5 (SF HTML5 UG)

flickr.com/photos/bekahstargazing/318930460/

Cuzillion SpriteMeYSlow Hammerhead

Page 3: High Performance HTML5 (SF HTML5 UG)

2004

Page 4: High Performance HTML5 (SF HTML5 UG)

#1. Speed: “First and foremost, we believe that

speed is more than a feature. Speed is the most

important feature.”

carsonified.com/blog/business/fred-wilsons-10-golden-principles-of-successful-web-apps/

Page 5: High Performance HTML5 (SF HTML5 UG)

en.oreilly.com/velocity2009/public/schedule/detail/8523

Page 6: High Performance HTML5 (SF HTML5 UG)

en.oreilly.com/velocity2009/public/schedule/detail/8523

Page 7: High Performance HTML5 (SF HTML5 UG)

Yahoo!

0.4 sec slower

traffic 5-9%

slideshare.net/stoyan/yslow-20-presentationslideshare.net/stoyan/dont-make-me-wait-or-building-highperformance-web-applications

Page 8: High Performance HTML5 (SF HTML5 UG)

…shaved 2.2 seconds off the average page load

time and increased download conversions by

15.4%!

blog.mozilla.com/metrics/category/website-optimization/

Page 9: High Performance HTML5 (SF HTML5 UG)

blog.mozilla.com/metrics/category/website-optimization/

…shaved 2.2 seconds off the average page load

time and increased download conversions by

15.4%!

en.oreilly.com/velocity2009/public/schedule/detail/7709

Page 10: High Performance HTML5 (SF HTML5 UG)

en.oreilly.com/velocity2008/public/schedule/detail/3632

Page 11: High Performance HTML5 (SF HTML5 UG)

slideshare.net/EdmundsLabs/how-edmunds-got-in-the-fast-lane-80-reduction-in-page-load-time-in-3-simple-steps-6593377

Page 12: High Performance HTML5 (SF HTML5 UG)

Site speed in search rank

Screen shot of blog post…we've decided to take site speed into account in

our search rankings.

googlewebmastercentral.blogspot.com/2010/04/using-site-speed-in-web-search-ranking.html

Page 13: High Performance HTML5 (SF HTML5 UG)

drives traffic

improves UX

increases revenue

reduces costs flickr.com/photos/pedromourapinheiro/3123885534/

Web

Performance

OptimizationWPO

Page 14: High Performance HTML5 (SF HTML5 UG)

flickr.com/photos/djbiesack/85833076/

High Performance HTML5

http://www.w3.org/TR/html5/

Page 15: High Performance HTML5 (SF HTML5 UG)

Web Performance Working Group

chartered June 2010

Web Timing• Navigation Timing• User Timing• Resource Timing

Page Visibility

Script-based animations

Efficient script yieldinghttp://www.w3.org/2010/webperf/

Page 16: High Performance HTML5 (SF HTML5 UG)

flickr.com/photos/wwarby/3296379139/

Navigation Timingvar timing = performance.timing;var loadtime = timing.loadEventEnd – timing.navigationStart;

Chrome, IE9+http://blog.chromium.org/2010/07/do-you-know-how-

slow-your-web-page-is.html

Page 17: High Performance HTML5 (SF HTML5 UG)

flickr.com/photos/juditk/5024772809/

Resource Timing• DNS, redirects, etc.• security issues

User Timing• for web apps• mark, measure

Page 18: High Performance HTML5 (SF HTML5 UG)

flickr.com/photos/96221617@N00/51603550/

Page Visibilitydetect when page is visible

• stats• video & audio• polling, DHTML• performance: prefetching, prerendering

Chrome 13: • document.webkitHidden • webkitvisibilitychange

code.google.com/chrome/whitepapers/pagevisibility.html

Page 19: High Performance HTML5 (SF HTML5 UG)

script async & deferparsing doesn’t wait for script:

• async – executed when available• defer – executed when parsing finished

when is it downloaded?

missing:• download now, execute on demand• defer download AND execution

Chrome, Firefox, Safari 5.1, IE10flickr.com/photos/gevertulley/4771808965/

Page 20: High Performance HTML5 (SF HTML5 UG)

app cache

flickr.com/photos/india-nepal-iran/203982474/

Page 21: High Performance HTML5 (SF HTML5 UG)

yuiblog.com/blog/2007/01/04/performance-research-part-2/

Page 22: High Performance HTML5 (SF HTML5 UG)

blaze.io/mobile/understanding-mobile-cache-sizes/

Page 23: High Performance HTML5 (SF HTML5 UG)

app cacheoffline apps, longer cache<!doctype html><html manifest=“myapp.appcache”>

myapp.appcache:

flickr.com/photos/india-nepal-iran/203982474/

CACHE MANIFEST

# Revision: 1.28

CACHE:

/images/logo.gif

NETWORK:

/login.html

FALLBACK:

/index.html /offline.htmlContent-Type: text/cache-manifest

Page 24: High Performance HTML5 (SF HTML5 UG)

app cache gotchashtml docs w/ manifest are cached

404 => nothing is cached

size: 5MB+

must rev manifest to update resources

update is served on 2nd reload (?!?!)

flickr.com/photos/97657657@N00/1918688483/

Page 25: High Performance HTML5 (SF HTML5 UG)

push app

logo.gif = 1user loads app

app cache is empty

fetch manifest

fetch logo.gif

app cache =

user sees

2

push app

logo.gif =

rev manifest

3user loads app

app cache =

user sees

fetch manifest

fetch logo.gif

app cache =

4user loads app again

app cache =

user sees

fetch manifest (304)

5

app cache

reload

Page 26: High Performance HTML5 (SF HTML5 UG)

flickr.com/photos/presley_m/5152304885/

window.applicationCache.addEventListener('updateready',

function(e) {

  if ( window.applicationCache.status ==

window.applicationCache.UPDATEREADY) {

if ( confirm(“Load new content?”) ) {

...

http://www.webdirections.org/blog/get-offline/

http://www.html5rocks.com/en/tutorials/appcache/beginner/

load twice workaround

Page 27: High Performance HTML5 (SF HTML5 UG)

localStoragewindow.localStorage:

setItem()getItem()removeItem()clear()

also sessionStorage

all popular browsers, 5MB maxhttp://dev.w3.org/html5/webstorage/http://diveintohtml5.org/storage.html

flickr.com/photos/bryanpearson/564703455/

Page 28: High Performance HTML5 (SF HTML5 UG)

localStorage as cache

1st doc: write JS & CSS blocks to localStorageJUX.UXBaseControls.252CB7BF: (function(){...JUX.FrameworkCore.A39F6425: (function(){...

set cookie with entries & versionRMSM=JUX.UXBaseControls.252CB7BF~ JUX.FrameworkCore.A39F6425~

later docs: read JS & CSS from localStoragescript.text = localStorage.getItem(JUX.UXBaseControls.252CB7BF)

http://stevesouders.com/blog/2011/03/28/storager-case-study-bing-google/

flickr.com/photos/nelsoncruz/431244400/

Page 29: High Performance HTML5 (SF HTML5 UG)

flickr.com/photos/typoatelier/4261455105/

@font-face

stevesouders.com/blog/2010/06/01/frontend-spof/

Worth delaying most important design elements? Or entire page?

* IE9 does not display a blank page, but does “flash” the element.

Page 30: High Performance HTML5 (SF HTML5 UG)

there’s moreCSS instead of images: border radius,

linear & radial gradients, drop shadow

SVG, inline SVG, and canvas

video tag

WebSockets

web workers

builtin controls: progress, datetime

flickr.com/photos/dualphoto/2609096047/

Page 31: High Performance HTML5 (SF HTML5 UG)

and morehistory –

http://www.kylescholz.com/blog/2010/04/html5_history_is_the_future.html

<a ping

requestAnimationFrame – not timers

native JSON parse/stringify

http://bit.ly/browserscope-modernizr

http://www.html5rocks.com/

flickr.com/photos/kaptainkobold/5741327207/

Page 32: High Performance HTML5 (SF HTML5 UG)

Thanks to…Max FirtmanTony GentilcorePaul IrishBrad NeubergKyle ScholzLindsey SimonAnnie Sullivan

flickr.com/photos/robertvega/3944132320/

Page 33: High Performance HTML5 (SF HTML5 UG)
Page 34: High Performance HTML5 (SF HTML5 UG)
Page 35: High Performance HTML5 (SF HTML5 UG)
Page 36: High Performance HTML5 (SF HTML5 UG)

bytes downloadedTop 100 vs Top 1000

Top 1000Top 100

Page 37: High Performance HTML5 (SF HTML5 UG)
Page 38: High Performance HTML5 (SF HTML5 UG)
Page 39: High Performance HTML5 (SF HTML5 UG)
Page 40: High Performance HTML5 (SF HTML5 UG)

http://code.google.com/speed/pss/

Page 41: High Performance HTML5 (SF HTML5 UG)
Page 42: High Performance HTML5 (SF HTML5 UG)

speed matters

WPWG

window.performance

async & defer

app cache, localStorage

! @font-face

takeaways

flickr.com/photos/myklroventine/4062102754/

Page 43: High Performance HTML5 (SF HTML5 UG)

Steve Souders

@souders

http://stevesouders.com/docs/html5-user-group-20110728.pptx