steve souders [email protected] even faster themes disclaimer: this content does not necessarily...

28
Steve Souders [email protected] http://stevesouders.com/docs/wordcamp-20090530.ppt Even Faster Themes Disclaimer: This content does not necessarily reflect the opinions of my

Upload: jason-napier

Post on 26-Mar-2015

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Steve Souders souders@google.com  Even Faster Themes Disclaimer: This content does not necessarily reflect

Steve [email protected]

http://stevesouders.com/docs/wordcamp-20090530.ppt

Even Faster Themes

Disclaimer: This content does not necessarily reflect the opinions of my employer.

Page 2: Steve Souders souders@google.com  Even Faster Themes Disclaimer: This content does not necessarily reflect

17%

83%

iGoogle, primed cache

the importance of frontend performance

9% 91%

iGoogle, empty cache

Page 3: Steve Souders souders@google.com  Even Faster Themes Disclaimer: This content does not necessarily reflect

time spent on the frontend

Empty Cache

Primed Cache

www.aol.com 97% 97%

www.ebay.com 95% 81%

www.facebook.com 95% 81%

www.google.com/search

47% 0%

search.live.com/results 67% 0%

www.msn.com 98% 94%

www.myspace.com 98% 98%

en.wikipedia.org/wiki 94% 91%

www.yahoo.com 97% 96%

www.youtube.com 98% 97%April 2008

Page 4: Steve Souders souders@google.com  Even Faster Themes Disclaimer: This content does not necessarily reflect

14 RULES

1. MAKE FEWER HTTP REQUESTS

2. USE A CDN3. ADD AN EXPIRES HEADER4. GZIP COMPONENTS5. PUT STYLESHEETS AT THE

TOP6. PUT SCRIPTS AT THE

BOTTOM7. AVOID CSS EXPRESSIONS8. MAKE JS AND CSS

EXTERNAL9. REDUCE DNS LOOKUPS10.MINIFY JS11.AVOID REDIRECTS12.REMOVE DUPLICATE

SCRIPTS13.CONFIGURE ETAGS14.MAKE AJAX CACHEABLE

Page 5: Steve Souders souders@google.com  Even Faster Themes Disclaimer: This content does not necessarily reflect
Page 6: Steve Souders souders@google.com  Even Faster Themes Disclaimer: This content does not necessarily reflect

Sept 2007

Page 7: Steve Souders souders@google.com  Even Faster Themes Disclaimer: This content does not necessarily reflect

15% discount code: vel09cmb

Page 8: Steve Souders souders@google.com  Even Faster Themes Disclaimer: This content does not necessarily reflect
Page 9: Steve Souders souders@google.com  Even Faster Themes Disclaimer: This content does not necessarily reflect

June 2009

Page 10: Steve Souders souders@google.com  Even Faster Themes Disclaimer: This content does not necessarily reflect

Even Faster Web SitesSplitting the initial payloadLoading scripts without blockingCoupling asynchronous scriptsPositioning inline scriptsSharding dominant domainsFlushing the document earlyUsing iframes sparinglySimplifying CSS Selectors

Understanding Ajax performance..........Doug CrockfordCreating responsive web apps............Ben Galbraith, Dion

AlmaerWriting efficient JavaScript.............Nicholas ZakasScaling with Comet.....................Dylan SchiemannGoing beyond gzipping...............Tony GentilcoreOptimizing images...................Stoyan Stefanov, Nicole

Sullivan

Page 11: Steve Souders souders@google.com  Even Faster Themes Disclaimer: This content does not necessarily reflect

\sə-ler-ə-tē\nounswiftness, speedsupernatural quickness

possessed by vampires

theme: Carrington Blog

Page 12: Steve Souders souders@google.com  Even Faster Themes Disclaimer: This content does not necessarily reflect

empty cache primed cache

22 requests214K transferred2 scripts4 stylesheets14 background

images

22 requests8K transferred2 scripts4 stylesheets14 background

images

Page 13: Steve Souders souders@google.com  Even Faster Themes Disclaimer: This content does not necessarily reflect
Page 14: Steve Souders souders@google.com  Even Faster Themes Disclaimer: This content does not necessarily reflect

making Carrington Blog Faster

1. stylesheets• combine• avoid @import

2. scripts• combine• move to bottom• lazy load• no querystring

3. sprites4. optimize images5. gzip, future Expires6. preload big image

Page 15: Steve Souders souders@google.com  Even Faster Themes Disclaimer: This content does not necessarily reflect

Carrington Blog Faster1. stylesheets

combine stylesheets – fewer HTTP requests is faster• embed typography.css and carrington-

blog.css in style.css (fix image URLs)• inline ie.css when necessary

avoid @import – causes stylesheets to be loaded sequentially

Page 16: Steve Souders souders@google.com  Even Faster Themes Disclaimer: This content does not necessarily reflect

Carrington Blog Faster2. scripts

combine scripts – fewer HTTP requests is faster• concatenate jquery.js and carrington.js

move inline script to the bottom – don't breakup parallel downloads• don't put inline scripts between stylesheet and

other resources

lazy load external script (big!) – avoid blocking visible resources, onload fires fasterdon't use querystring – breaks proxy caching

Page 17: Steve Souders souders@google.com  Even Faster Themes Disclaimer: This content does not necessarily reflect

Carrington Blog Faster3. sprites

combine CSS background images into sprites – fewer HTTP requests is faster• easiest: non-repeating, top left

−comment.gif, header-texture.jpg(?), ndash.gif, rss-button.gif, sidebar-background.gif, watermark-light.gif

• bit harder: center or bottom, same height−divider-ornament.gif, divider-ornament-wide.gif,

divider-ornament-wide-dark.gif

http://spritegen.website-performance.org/pain in the a#%!

Page 18: Steve Souders souders@google.com  Even Faster Themes Disclaimer: This content does not necessarily reflect

Carrington Blog Faster4. optimize images

grey-to-white-gradient.png – 1x60, 480 bytes of data, 46K file size!

smushit.com – runs in YSlow

Page 19: Steve Souders souders@google.com  Even Faster Themes Disclaimer: This content does not necessarily reflect

Carrington Blog Faster5. gzip, future Expires

~80% of page views have a primed cachecreate .htaccess under blog/# Add a far future Expires header<FilesMatch "\.(png|gif|jpg|js|css|ico)$"> ExpiresActive On ExpiresDefault "access plus 10 years" Header set ETag ""</FilesMatch>

# Compress html, XML, css and jsAddOutputFilterByType DEFLATE text/html

text/plain text/xml text/css application/x-javascript application/javascript

Page 20: Steve Souders souders@google.com  Even Faster Themes Disclaimer: This content does not necessarily reflect

Carrington Blog Faster6. preload big image

big sprite.png blocks parallel downloadsif only we could load it above style.csspreload it!new Image().src = "http://webcelerity.com/blog/wp-

content/themes/carrington-blog-faster/images/sprite.png";

Page 21: Steve Souders souders@google.com  Even Faster Themes Disclaimer: This content does not necessarily reflect

empty cache – before & after

22 requests214K transferred2 scripts4 stylesheets14 background

images

11 requests243K transferred(?!)1 script1 stylesheet8 background

images

After:

Page 22: Steve Souders souders@google.com  Even Faster Themes Disclaimer: This content does not necessarily reflect

22 requests8K transferred2 scripts4 stylesheets14 background

images

primed cache – before & after

After:1 request3K transferred

Page 23: Steve Souders souders@google.com  Even Faster Themes Disclaimer: This content does not necessarily reflect

Even Faster Themes

popular themes http://wordpress.org/extend/themes/browse/

popular/

Carrington Blog – 58K downloads

themes are GPLhttp://svn.automattic.com/wpcom-themes/

think of the impact

Page 24: Steve Souders souders@google.com  Even Faster Themes Disclaimer: This content does not necessarily reflect

takeaways

focus on the frontend

run YSlow: http://developer.yahoo.com/yslow

speed matters

Page 25: Steve Souders souders@google.com  Even Faster Themes Disclaimer: This content does not necessarily reflect

impact on revenue

Google:

Yahoo:

Amazon:

1 http://home.blarg.net/~glinden/StanfordDataMining.2006-11-29.ppt2 http://www.slideshare.net/stoyan/yslow-20-presentation

+500 ms -20% traffic1

+400 ms -5-9% full-page traffic2

+100 ms -1% sales1

Page 26: Steve Souders souders@google.com  Even Faster Themes Disclaimer: This content does not necessarily reflect

cost savings

hardware – reduced load

bandwidth – reduced response size

http://billwscott.com/share/presentations/2008/stanford/HPWP-RealWorld.pdf

Page 27: Steve Souders souders@google.com  Even Faster Themes Disclaimer: This content does not necessarily reflect

if you want better user experience more revenue reduced operating expenses

the strategy is clear

Even Faster Web Sites

Page 28: Steve Souders souders@google.com  Even Faster Themes Disclaimer: This content does not necessarily reflect

Steve [email protected]

http://stevesouders.com/docs/wordcamp-20090530.ppt