SlideShare a Scribd company logo
High Performance Web Sites Tenni Theurer, Yahoo! Engineering Manager http://developer.yahoo.com/performance CSDN-Dr.Dobbs Software Development 2.0 Conference 2007
slow   crawl   boring   snail   stagnant   unexceptional   yawn   unresponsive   impatient   delay   moderate   blah   subdue   drag   apathetic   prolong   slack   load   sluggish   sleepy   late   unexciting   reduced   lag   complex  heavy   unmemorable   obscure   why  wait   perceived response time what is the end user’s experience? performance  speed  enjoyable  urgent   instant   accelerate   perception  snap  achievement  better   improve   action  pleasant  pace quick  promote   swift   cool   maximum   drive   prompt  advance  fast  hurry   rush   satisfying  feel  exceptional   brisk   rapid  exciting
Exceptional Performance quantify and improve the performance of all Yahoo! products worldwide center of expertise build tools, analyze data gather, research, and evangelize best practices
Evolution of Performance quantify ->  profile ->  research,   case studies ->  best practices ->  evangelize ->  codify   ->  rollout   ->  publicize
Today's Checklist perspective on performance turned upside down 3+ actionable takeaways empowered to make everyone's web experience better
The Importance of Front-End Performance Back-end =  5% Front-end =  95% Even here, front-end =  88%
The Performance Golden Rule 80-90% of the end-user response time is spent on the front-end. Start there. Greater potential for improvement Simpler Proven to work
Agenda Performance Research 14 Rules Case Studies Evangelism
Performance Research
http://yuiblog.com/blog/2006/11/28/performance-research-part-1/
Empty vs. Primed Cache   empty cache 2.4 seconds   primed cache 0.9 seconds 83% fewer bytes 90% fewer HTTP requests
http://yuiblog.com/blog/2007/01/04/performance-research-part-2/
Browser Cache Experiment Add a new image to your page <img src= &quot; image/blank.gif &quot;  height= &quot; 1 &quot;  width= &quot; 1 &quot; /> with the following response headers: Expires: Thu, 15 Apr 2004 20:00:00 GMT Last-Modified: Wed, 28 Sep 2006 23:49:57 GMT } 1  px
Surprising Results 40-60%  ~20%  page views with empty cache users with empty cache
Experiment Takeaways The empty cache user experience is more prevalent than you think! Optimize for both primed cache  and  empty cache experience.
http://yuiblog.com/blog/2007/03/01/performance-research-part-3
Impact of Cookies on Response Time 80 ms delay dialup users +78 ms 156 ms 3000 bytes +63 ms 141 ms 2500 bytes +47 ms 125 ms 2000 bytes +31 ms 109 ms 1500 bytes +16 ms 94 ms 1000 bytes +1 ms 79 ms 500 bytes 0 ms 78 ms 0 bytes Delta Time Cookie Size keep sizes low
.yahoo.com cookie sizes
http://yuiblog.com/blog/2007/04/11/performance-research-part-4/
Parallel Downloads Two components in parallel per hostname HTTP/1.1 GIF GIF GIF GIF GIF GIF
Maximizing Parallel Downloads response time (seconds) aliases
Maximizing Parallel Downloads response time (seconds) rule of thumb: use at least two but no more than four aliases
Summary What the 80/20 Rule Tells Us about Reducing HTTP Requests http://yuiblog.com/blog/2007/04/11/performance-research-part-4/ Browser Cache Usage – Exposed! http://yuiblog.com/blog/2007/01/04/performance-research-part-2/ When the Cookie Crumbles http://yuiblog.com/blog/2007/01/04/performance-research-part-2/ Maximizing Parallel Downloads in the Carpool Lane http://yuiblog.com/blog/2007/04/11/performance-research-part-4/
14 Rules
14 Rules Make fewer HTTP requests Use a CDN Add an Expires header Gzip components Put stylesheets at the top Move scripts to the bottom Avoid CSS expressions Make JS and CSS external Reduce DNS lookups Minify JS Avoid redirects Remove duplicate scripts Configure ETags Make AJAX cacheable
Rule 1: Make fewer HTTP requests CSS sprites combined scripts, combined stylesheets image maps inline images
CSS Sprites – Preferred size of combined image is less not supported in Opera 6 http://alistapart.com/articles/sprites  <span style=&quot; background-image: url('sprites.gif'); background-position: -260px -90px;&quot;> </span>
Combined Scripts,  Combined Stylesheets 3 7 youtube.com 1.5 6.5 Average 1 4 yahoo.com 1 3 wikipedia.org 2 2 myspace.com 1 9 msn.com 1 1 froogle.google.com 2 7 ebay.com 2 11 cnn.com 1 18 aol.com 1 3 amazon.com Stylesheets Scripts
Combined Scripts, Combined Stylesheets combining six scripts into one eliminates five HTTP requests challenges:  develop as separate modules number of possible combinations vs. loading more than needed maximize browser cache one solution: dynamically combine and cache
Rule 2: Use a CDN distribute your static content before distributing your dynamic content youtube.com Akamai yahoo.com wikipedia.org Akamai, Limelight myspace.com SAVVIS msn.com google.com Akamai, Mirror Image ebay.com cnn.com Akamai aol.com Akamai amazon.com
Rule 3: Add an Expires header  not just for images 26 days 0% 0/7 0/3 0/32 youtube.com 100% 75% 0% 80% 4% 55% 1% 48% 0% % n/a 4/4 1/1 23/23 yahoo.com 1 day 2/3 1/1 6/8 wikipedia.org 1 day 0/2 0/2 0/18 myspace.com 34 days 3/9 1/1 32/35 msn.com 454 days 0/1 0/1 1/23 froogle.google.com 140 days 0/7 0/2 16/20 ebay.com 227 days 2/11 0/2 0/138 cnn.com 217 days 6/18 1/1 23/43 aol.com 114 days 0/3 0/1 0/62 amazon.com Median Age Scripts Stylesheets Images
Rule 4: Gzip components  you  can  affect users' download times 90%+ of browsers support compression
Gzip: not just for HTML gzip scripts, stylesheets, XML, JSON (not images, PDF) some some x youtube.com x x x yahoo.com x x x wikipedia.org x x x myspace.com deflate deflate x msn.com x x x froogle.google.com x ebay.com cnn.com some some x aol.com x amazon.com Stylesheets Scripts HTML
Gzip Edge Cases  <1% of browsers have problems with gzip IE 5.5:  http://support.microsoft.com/default.aspx?scid=kb;en-us;Q313712 IE 6.0: http://support.microsoft.com/default.aspx?scid=kb;en-us;Q31249 Netscape 3.x, 4.x http://www.schroepl.net/projekte/mod_gzip/browser.htm consider adding  Cache-Control: Private remove ETags (Rule 13) hard to diagnose; problem getting smaller
Rule 5: Put stylesheets at the top  stylesheets block rendering in IE http://stevesouders.com/examples/css-bottom.php solution: put stylesheets in HEAD (per spec) avoids Flash of Unstyled Content use LINK (not @import)
Slowest is Fastest  CSS at the bottom: resources load faster, but nothing renders CSS at the top: resources take longer, but render progressively @import at the top: same problems as bottom  right choice
Rule 6: Move scripts to the bottom  scripts block parallel downloads across all hostnames scripts block rendering of everything below them in the page IE and FF http://stevesouders.com/examples/js-middle.php
Rule 6: Move scripts to the bottom  script defer  attribute is not a solution blocks rendering and downloads in FF slight blocking in IE solution: move them as low in the page as possible
Rule 7: Avoid CSS expressions  used to set CSS properties dynamically in IE width: expression(  document.body.clientWidth < 600 ?  “ 600px” : “auto” ); problem: expressions execute many times mouse move, key press, resize, scroll, etc. http://stevesouders.com/examples/expression-counter.php
Rule 8: Make JS and CSS external  inline: HTML document is bigger external: more HTTP requests, but cached variables page views per user (per session) empty vs. primed cache stats component re-use external is typically better home pages may be an exception
Post-Onload Download inline in front page download external files after onload window.onload = downloadComponents; function downloadComponents() { var elem = document.createElement(&quot;script&quot;); elem.src = &quot;http://.../file1.js&quot;; document.body.appendChild(elem); ... } speeds up secondary pages
Dynamic Inlining start with post-onload download set cookie after components downloaded server-side:  if cookie, use external else, do inline with post-onload download cookie expiration date is key speeds up all pages
Rule 9: Reduce DNS lookups  typically 20-120 ms block parallel downloads OS and browser both have DNS caches
Rule 10: Minify JavaScript minify inline scripts, too no yes no no yes yes yes no no no Minify External? no www.youtube.com yes www.yahoo.com no www.wikipedia.org no www.myspace.com yes www.msn.com yes froogle.google.com no www.ebay.com no www.cnn.com no www.aol.com no www.amazon.com Minify Inline?
Minify vs. Obfuscate minify – it's safer http://crockford.com/javascript/jsmin http://dojotoolkit.org/docs/shrinksafe not much difference Dojo Savings JSMin Savings Original 21K (25%) 17K (21%) 85K Average 10K (29%) 8K (22%) 34K www.youtube.com 16K (38%) 14K (34%) 42K www.wikipedia.org 24K (28%) 23K (27%) 88K www.myspace.com 24K (25%) 19K (20%) 98K www.cnn.com 4K (10%) 4K (10%) 44K www.aol.com 48K (24%) 31K (15%) 204K www.amazon.com
Rule 11: Avoid redirects 3xx status codes – mostly 301 and 302 HTTP/1.1 301 Moved Permanently Location: http://stevesouders.com/newuri add Expires headers to cache redirects worst form of blocking http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
Redirects no yes – secondary page yes – secondary page yes – secondary page yes – initial page no yes – secondary page yes – initial page yes – secondary page no Redirects www.youtube.com www.yahoo.com www.wikipedia.org www.myspace.com www.msn.com froogle.google.com www.ebay.com www.cnn.com www.aol.com www.amazon.com
Rule 12: Remove duplicate scripts hurts performance extra HTTP requests (IE only) extra executions atypical? 2 of 10 top sites contain duplicate scripts team size, # of scripts
Rule 13: Configure ETags unique identifier returned in response ETag: &quot;c8897e-aee-4165acf0&quot; Last-Modified: Thu, 07 Oct 2004 20:54:08 GMT used in conditional GET requests If-None-Match: &quot;c8897e-aee-4165acf0&quot; If-Modified-Since: Thu, 07 Oct 2004 20:54:08 GMT if ETag doesn't match, can't send 304
The Problem with ETags ETag format Apache:  inode -size-timestamp IIS:  Filetimestamp: ChangeNumber ETag for a single entity differs across servers, by default Sites with >1 server return too few 304s ((n-1)/n)% wasted downloads Remove them Apache:  FileETag none IIS:  http://support.microsoft.com/kb/922703/
Rule 14: Make AJAX cacheable  XHR, JSON, iframe, dynamic scripts can still be cached (and minified, and gzipped) a personalized response should still be cacheable for that person
AJAX Example: Yahoo! Mail Beta address book XML request ->  GET /yab/[...]&r=0.5289571053069156 HTTP/1.1 Host: us.xxx.mail.yahoo.com ←  HTTP/1.1 200 OK Date: Thu, 12 Apr 2007 19:39:09 GMT Cache-Control: private,max-age=0 Last-Modified: Sat, 31 Mar 2007 01:17:17 GMT Content-Type: text/xml; charset=utf-8 Content-Encoding: gzip address book changes infrequently cache it; add last-modified-time in URL
Case Studies
Case Study: move JS to onload remove bottom tabs avoid redirects image sprites host JS on CDN combine JS files 40-50%
Preloading 5 4 2 b be bec beck beckh beckha beckham Download Search components: ysch_srp_20070319.js yschx_20070320a.css flat2_search.gif dropdown.gif bulb1.gif ar_next.gif addmy.gif 3 1
What about performance  and Web 2.0 apps? client-side CPU is more of an issue user expectations are higher these rules still apply, new rules will come out start off on the right foot
Case Study: Mail Mail Classic User Workflow mail.yahoo.com view inbox folder read messages (x3) compose message confirm send total time: Time 2.40 s 4.98 s 6.39 s 2.21 s 2.10 s 18.08 s Time 12.48 s 1.52 s 1.53 s 0.34 s 0s 15.87 s Delta +420% -70% -76% -85% -100% -12%
Evangelism Book High Performance Web Sites Conferences Yahoo! F2E Summit Web 2.0 Expo Rich Web Experience CSDN-Dr. Dobbs Blogs YUI Blog:   http://yuiblog.com/blog/category/performance YDN Blog:   http://developer.yahoo.com/performance/ Open Source YSlow OSCon Ajax Experience Blogher Future of Web Apps
http://developer.yahoo.com/yslow/
Ten Top U.S Web Sites 139K 178K 106K 205K 221K 18K 275K 502K 182K 405K Page Weight 9.6 sec 5.9 sec 6.2 sec 7.8 sec 9.3 sec 1.7 sec 9.6 sec 22.4 sec 11.5 sec 15.9 sec Response Time D www.youtube.com A www.yahoo.com C www.wikipedia.org D www.myspace.com F www.msn.com A froogle.google.com C www.ebay.com F www.cnn.com F www.aol.com D www.amazon.com YSlow Grade
Conclusion
Takeaways focus on the front-end harvest the low-hanging fruit you  do  control user response times small investment up front keeps on giving LOFNO – be an advocate for your users
Today's Checklist perspective on performance turned upside down 3+ actionable takeaways empowered to make everyone's web experience better
Tenni Theurer  [email_address]
CC Images Used &quot;Need for Speed&quot; by Amnemon:  http://www.flickr.com/photos/marinacvinhal/379111290/ &quot;Max speed 15kmh&quot; by xxxtoff:  http://www.flickr.com/photos/xxxtoff/219781763/ &quot;maybe&quot; by Tal Bright:  http://www.flickr.com/photos/bright/118197469/ &quot;takeout&quot; by dotpolka:  http://www.flickr.com/photos/dotpolka/249129144/ &quot;how do they do that&quot; by Fort Photo:  http://www.flickr.com/ photos/fortphoto/388825145 / &quot;Absolutely Nothing is Allowed Here&quot; by Vicki & Chuck Rogers:  http://www.flickr.com/photos/two-wrongs/205467442/ &quot;Zipper Pocket&quot; by jogales:  http://www.flickr.com/photos/jogales/11519576/ &quot;new briefcase&quot; by dcJohn:  http://www.flickr.com/photos/dcjohn/85504455/ &quot;Told you it was me!&quot; by Pug!:  http://flickr.com/photos/pugspace/1277023154/ &quot;Robert's Legion&quot; by dancharvey:  http://www.flickr.com/photos/dancharvey/2647529/ &quot;thank you&quot; by nj dodge:  http://flickr.com/photos/nj_dodge/187190601/

More Related Content

PPT
腾讯大讲堂09 如何建设高性能网站
PPT
High Performance Websites By Souders Steve
PPT
Plop
PPT
High Performance Web Sites
PPTX
High Performance Websites
PDF
Measuring Web Performance (HighEdWeb FL Edition)
POTX
Its timetostopstalling barcelonajs
PDF
Web Page Test - Beyond the Basics
腾讯大讲堂09 如何建设高性能网站
High Performance Websites By Souders Steve
Plop
High Performance Web Sites
High Performance Websites
Measuring Web Performance (HighEdWeb FL Edition)
Its timetostopstalling barcelonajs
Web Page Test - Beyond the Basics

What's hot (20)

PPTX
Nl when its just too slow
PPTX
How fast are we going now?
PDF
Keep the Web Fast
POTX
Its timetostopstalling mot_paris
PPTX
Its Time To Stop Stalling: Mobile App and Video Performance
PPTX
Optimizing your WordPress website
PPTX
Imagesandvideo tallinn
PPT
Os Souders
PDF
International Site Speed Tweaks - ISS 2017 Barcelona
PPTX
Ux connect london_fastandbeautiful
PDF
How to Fix a Slow WordPress Site (and get A+ scores)
PDF
The Need for Speed (5 Performance Optimization Tipps) - brightonSEO 2014
PPTX
Quantifying The Mobile Difference
POTX
Mobile App Performance, Dublin MOT
PPTX
Imagesandvideo voxxeddays
POTX
Its timetostopstalling sw_mobile_bristol
PPTX
Edi ux fastandbeautiful
POTX
Its timetostopstalling limerick
PPTX
Its timetostopstalling pentabar
ODP
A Holistic View of Website Performance
Nl when its just too slow
How fast are we going now?
Keep the Web Fast
Its timetostopstalling mot_paris
Its Time To Stop Stalling: Mobile App and Video Performance
Optimizing your WordPress website
Imagesandvideo tallinn
Os Souders
International Site Speed Tweaks - ISS 2017 Barcelona
Ux connect london_fastandbeautiful
How to Fix a Slow WordPress Site (and get A+ scores)
The Need for Speed (5 Performance Optimization Tipps) - brightonSEO 2014
Quantifying The Mobile Difference
Mobile App Performance, Dublin MOT
Imagesandvideo voxxeddays
Its timetostopstalling sw_mobile_bristol
Edi ux fastandbeautiful
Its timetostopstalling limerick
Its timetostopstalling pentabar
A Holistic View of Website Performance
Ad

Similar to Csdn Drdobbs Tenni Theurer Yahoo (20)

PPT
腾讯大讲堂09 如何建设高性能网站
PPT
腾讯大讲堂09 如何建设高性能网站
PPT
Front-end performances
PPTX
Creating high-performance-web-sites
PDF
High performance website
PPT
High Performance Web Pages - 20 new best practices
PPTX
10 things you can do to speed up your web app today stir trek edition
PDF
A little journey into website optimization
PDF
Web Performance Optimization (WPO)
PDF
7 Habits of Exceptional Performance
PDF
A Look at the Performance of SAP's Modern UIs
PPTX
improve website performance
ODP
Frontend Caching - The "new" frontier
PDF
Performance tuning of Websites
PPTX
Optimizing Client-Side Performance
PPTX
Html Optimization for SEO
ODP
Caching for Cash, part 4 DPC 2009
PPTX
High-Speed HTML5
PDF
Tips tricks deliver_high_performing_secure_web_pages
PPT
Frontend performance
腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站
Front-end performances
Creating high-performance-web-sites
High performance website
High Performance Web Pages - 20 new best practices
10 things you can do to speed up your web app today stir trek edition
A little journey into website optimization
Web Performance Optimization (WPO)
7 Habits of Exceptional Performance
A Look at the Performance of SAP's Modern UIs
improve website performance
Frontend Caching - The "new" frontier
Performance tuning of Websites
Optimizing Client-Side Performance
Html Optimization for SEO
Caching for Cash, part 4 DPC 2009
High-Speed HTML5
Tips tricks deliver_high_performing_secure_web_pages
Frontend performance
Ad

Recently uploaded (20)

PDF
Machine learning based COVID-19 study performance prediction
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Modernizing your data center with Dell and AMD
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
KodekX | Application Modernization Development
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
Big Data Technologies - Introduction.pptx
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Unlocking AI with Model Context Protocol (MCP)
Machine learning based COVID-19 study performance prediction
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Building Integrated photovoltaic BIPV_UPV.pdf
Modernizing your data center with Dell and AMD
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
KodekX | Application Modernization Development
“AI and Expert System Decision Support & Business Intelligence Systems”
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Diabetes mellitus diagnosis method based random forest with bat algorithm
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Chapter 3 Spatial Domain Image Processing.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
Understanding_Digital_Forensics_Presentation.pptx
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Spectral efficient network and resource selection model in 5G networks
Big Data Technologies - Introduction.pptx
Review of recent advances in non-invasive hemoglobin estimation
Unlocking AI with Model Context Protocol (MCP)

Csdn Drdobbs Tenni Theurer Yahoo

  • 1. High Performance Web Sites Tenni Theurer, Yahoo! Engineering Manager http://developer.yahoo.com/performance CSDN-Dr.Dobbs Software Development 2.0 Conference 2007
  • 2. slow crawl boring snail stagnant unexceptional yawn unresponsive impatient delay moderate blah subdue drag apathetic prolong slack load sluggish sleepy late unexciting reduced lag complex heavy unmemorable obscure why wait perceived response time what is the end user’s experience? performance speed enjoyable urgent instant accelerate perception snap achievement better improve action pleasant pace quick promote swift cool maximum drive prompt advance fast hurry rush satisfying feel exceptional brisk rapid exciting
  • 3. Exceptional Performance quantify and improve the performance of all Yahoo! products worldwide center of expertise build tools, analyze data gather, research, and evangelize best practices
  • 4. Evolution of Performance quantify -> profile -> research, case studies -> best practices -> evangelize -> codify -> rollout -> publicize
  • 5. Today's Checklist perspective on performance turned upside down 3+ actionable takeaways empowered to make everyone's web experience better
  • 6. The Importance of Front-End Performance Back-end = 5% Front-end = 95% Even here, front-end = 88%
  • 7. The Performance Golden Rule 80-90% of the end-user response time is spent on the front-end. Start there. Greater potential for improvement Simpler Proven to work
  • 8. Agenda Performance Research 14 Rules Case Studies Evangelism
  • 11. Empty vs. Primed Cache empty cache 2.4 seconds primed cache 0.9 seconds 83% fewer bytes 90% fewer HTTP requests
  • 13. Browser Cache Experiment Add a new image to your page <img src= &quot; image/blank.gif &quot; height= &quot; 1 &quot; width= &quot; 1 &quot; /> with the following response headers: Expires: Thu, 15 Apr 2004 20:00:00 GMT Last-Modified: Wed, 28 Sep 2006 23:49:57 GMT } 1 px
  • 14. Surprising Results 40-60% ~20% page views with empty cache users with empty cache
  • 15. Experiment Takeaways The empty cache user experience is more prevalent than you think! Optimize for both primed cache and empty cache experience.
  • 17. Impact of Cookies on Response Time 80 ms delay dialup users +78 ms 156 ms 3000 bytes +63 ms 141 ms 2500 bytes +47 ms 125 ms 2000 bytes +31 ms 109 ms 1500 bytes +16 ms 94 ms 1000 bytes +1 ms 79 ms 500 bytes 0 ms 78 ms 0 bytes Delta Time Cookie Size keep sizes low
  • 20. Parallel Downloads Two components in parallel per hostname HTTP/1.1 GIF GIF GIF GIF GIF GIF
  • 21. Maximizing Parallel Downloads response time (seconds) aliases
  • 22. Maximizing Parallel Downloads response time (seconds) rule of thumb: use at least two but no more than four aliases
  • 23. Summary What the 80/20 Rule Tells Us about Reducing HTTP Requests http://yuiblog.com/blog/2007/04/11/performance-research-part-4/ Browser Cache Usage – Exposed! http://yuiblog.com/blog/2007/01/04/performance-research-part-2/ When the Cookie Crumbles http://yuiblog.com/blog/2007/01/04/performance-research-part-2/ Maximizing Parallel Downloads in the Carpool Lane http://yuiblog.com/blog/2007/04/11/performance-research-part-4/
  • 25. 14 Rules Make fewer HTTP requests Use a CDN Add an Expires header Gzip components Put stylesheets at the top Move scripts to the bottom Avoid CSS expressions Make JS and CSS external Reduce DNS lookups Minify JS Avoid redirects Remove duplicate scripts Configure ETags Make AJAX cacheable
  • 26. Rule 1: Make fewer HTTP requests CSS sprites combined scripts, combined stylesheets image maps inline images
  • 27. CSS Sprites – Preferred size of combined image is less not supported in Opera 6 http://alistapart.com/articles/sprites <span style=&quot; background-image: url('sprites.gif'); background-position: -260px -90px;&quot;> </span>
  • 28. Combined Scripts, Combined Stylesheets 3 7 youtube.com 1.5 6.5 Average 1 4 yahoo.com 1 3 wikipedia.org 2 2 myspace.com 1 9 msn.com 1 1 froogle.google.com 2 7 ebay.com 2 11 cnn.com 1 18 aol.com 1 3 amazon.com Stylesheets Scripts
  • 29. Combined Scripts, Combined Stylesheets combining six scripts into one eliminates five HTTP requests challenges: develop as separate modules number of possible combinations vs. loading more than needed maximize browser cache one solution: dynamically combine and cache
  • 30. Rule 2: Use a CDN distribute your static content before distributing your dynamic content youtube.com Akamai yahoo.com wikipedia.org Akamai, Limelight myspace.com SAVVIS msn.com google.com Akamai, Mirror Image ebay.com cnn.com Akamai aol.com Akamai amazon.com
  • 31. Rule 3: Add an Expires header not just for images 26 days 0% 0/7 0/3 0/32 youtube.com 100% 75% 0% 80% 4% 55% 1% 48% 0% % n/a 4/4 1/1 23/23 yahoo.com 1 day 2/3 1/1 6/8 wikipedia.org 1 day 0/2 0/2 0/18 myspace.com 34 days 3/9 1/1 32/35 msn.com 454 days 0/1 0/1 1/23 froogle.google.com 140 days 0/7 0/2 16/20 ebay.com 227 days 2/11 0/2 0/138 cnn.com 217 days 6/18 1/1 23/43 aol.com 114 days 0/3 0/1 0/62 amazon.com Median Age Scripts Stylesheets Images
  • 32. Rule 4: Gzip components you can affect users' download times 90%+ of browsers support compression
  • 33. Gzip: not just for HTML gzip scripts, stylesheets, XML, JSON (not images, PDF) some some x youtube.com x x x yahoo.com x x x wikipedia.org x x x myspace.com deflate deflate x msn.com x x x froogle.google.com x ebay.com cnn.com some some x aol.com x amazon.com Stylesheets Scripts HTML
  • 34. Gzip Edge Cases <1% of browsers have problems with gzip IE 5.5: http://support.microsoft.com/default.aspx?scid=kb;en-us;Q313712 IE 6.0: http://support.microsoft.com/default.aspx?scid=kb;en-us;Q31249 Netscape 3.x, 4.x http://www.schroepl.net/projekte/mod_gzip/browser.htm consider adding Cache-Control: Private remove ETags (Rule 13) hard to diagnose; problem getting smaller
  • 35. Rule 5: Put stylesheets at the top stylesheets block rendering in IE http://stevesouders.com/examples/css-bottom.php solution: put stylesheets in HEAD (per spec) avoids Flash of Unstyled Content use LINK (not @import)
  • 36. Slowest is Fastest CSS at the bottom: resources load faster, but nothing renders CSS at the top: resources take longer, but render progressively @import at the top: same problems as bottom right choice
  • 37. Rule 6: Move scripts to the bottom scripts block parallel downloads across all hostnames scripts block rendering of everything below them in the page IE and FF http://stevesouders.com/examples/js-middle.php
  • 38. Rule 6: Move scripts to the bottom script defer attribute is not a solution blocks rendering and downloads in FF slight blocking in IE solution: move them as low in the page as possible
  • 39. Rule 7: Avoid CSS expressions used to set CSS properties dynamically in IE width: expression( document.body.clientWidth < 600 ? “ 600px” : “auto” ); problem: expressions execute many times mouse move, key press, resize, scroll, etc. http://stevesouders.com/examples/expression-counter.php
  • 40. Rule 8: Make JS and CSS external inline: HTML document is bigger external: more HTTP requests, but cached variables page views per user (per session) empty vs. primed cache stats component re-use external is typically better home pages may be an exception
  • 41. Post-Onload Download inline in front page download external files after onload window.onload = downloadComponents; function downloadComponents() { var elem = document.createElement(&quot;script&quot;); elem.src = &quot;http://.../file1.js&quot;; document.body.appendChild(elem); ... } speeds up secondary pages
  • 42. Dynamic Inlining start with post-onload download set cookie after components downloaded server-side: if cookie, use external else, do inline with post-onload download cookie expiration date is key speeds up all pages
  • 43. Rule 9: Reduce DNS lookups typically 20-120 ms block parallel downloads OS and browser both have DNS caches
  • 44. Rule 10: Minify JavaScript minify inline scripts, too no yes no no yes yes yes no no no Minify External? no www.youtube.com yes www.yahoo.com no www.wikipedia.org no www.myspace.com yes www.msn.com yes froogle.google.com no www.ebay.com no www.cnn.com no www.aol.com no www.amazon.com Minify Inline?
  • 45. Minify vs. Obfuscate minify – it's safer http://crockford.com/javascript/jsmin http://dojotoolkit.org/docs/shrinksafe not much difference Dojo Savings JSMin Savings Original 21K (25%) 17K (21%) 85K Average 10K (29%) 8K (22%) 34K www.youtube.com 16K (38%) 14K (34%) 42K www.wikipedia.org 24K (28%) 23K (27%) 88K www.myspace.com 24K (25%) 19K (20%) 98K www.cnn.com 4K (10%) 4K (10%) 44K www.aol.com 48K (24%) 31K (15%) 204K www.amazon.com
  • 46. Rule 11: Avoid redirects 3xx status codes – mostly 301 and 302 HTTP/1.1 301 Moved Permanently Location: http://stevesouders.com/newuri add Expires headers to cache redirects worst form of blocking http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
  • 47. Redirects no yes – secondary page yes – secondary page yes – secondary page yes – initial page no yes – secondary page yes – initial page yes – secondary page no Redirects www.youtube.com www.yahoo.com www.wikipedia.org www.myspace.com www.msn.com froogle.google.com www.ebay.com www.cnn.com www.aol.com www.amazon.com
  • 48. Rule 12: Remove duplicate scripts hurts performance extra HTTP requests (IE only) extra executions atypical? 2 of 10 top sites contain duplicate scripts team size, # of scripts
  • 49. Rule 13: Configure ETags unique identifier returned in response ETag: &quot;c8897e-aee-4165acf0&quot; Last-Modified: Thu, 07 Oct 2004 20:54:08 GMT used in conditional GET requests If-None-Match: &quot;c8897e-aee-4165acf0&quot; If-Modified-Since: Thu, 07 Oct 2004 20:54:08 GMT if ETag doesn't match, can't send 304
  • 50. The Problem with ETags ETag format Apache: inode -size-timestamp IIS: Filetimestamp: ChangeNumber ETag for a single entity differs across servers, by default Sites with >1 server return too few 304s ((n-1)/n)% wasted downloads Remove them Apache: FileETag none IIS: http://support.microsoft.com/kb/922703/
  • 51. Rule 14: Make AJAX cacheable XHR, JSON, iframe, dynamic scripts can still be cached (and minified, and gzipped) a personalized response should still be cacheable for that person
  • 52. AJAX Example: Yahoo! Mail Beta address book XML request -> GET /yab/[...]&r=0.5289571053069156 HTTP/1.1 Host: us.xxx.mail.yahoo.com ← HTTP/1.1 200 OK Date: Thu, 12 Apr 2007 19:39:09 GMT Cache-Control: private,max-age=0 Last-Modified: Sat, 31 Mar 2007 01:17:17 GMT Content-Type: text/xml; charset=utf-8 Content-Encoding: gzip address book changes infrequently cache it; add last-modified-time in URL
  • 54. Case Study: move JS to onload remove bottom tabs avoid redirects image sprites host JS on CDN combine JS files 40-50%
  • 55. Preloading 5 4 2 b be bec beck beckh beckha beckham Download Search components: ysch_srp_20070319.js yschx_20070320a.css flat2_search.gif dropdown.gif bulb1.gif ar_next.gif addmy.gif 3 1
  • 56. What about performance and Web 2.0 apps? client-side CPU is more of an issue user expectations are higher these rules still apply, new rules will come out start off on the right foot
  • 57. Case Study: Mail Mail Classic User Workflow mail.yahoo.com view inbox folder read messages (x3) compose message confirm send total time: Time 2.40 s 4.98 s 6.39 s 2.21 s 2.10 s 18.08 s Time 12.48 s 1.52 s 1.53 s 0.34 s 0s 15.87 s Delta +420% -70% -76% -85% -100% -12%
  • 58. Evangelism Book High Performance Web Sites Conferences Yahoo! F2E Summit Web 2.0 Expo Rich Web Experience CSDN-Dr. Dobbs Blogs YUI Blog: http://yuiblog.com/blog/category/performance YDN Blog: http://developer.yahoo.com/performance/ Open Source YSlow OSCon Ajax Experience Blogher Future of Web Apps
  • 60. Ten Top U.S Web Sites 139K 178K 106K 205K 221K 18K 275K 502K 182K 405K Page Weight 9.6 sec 5.9 sec 6.2 sec 7.8 sec 9.3 sec 1.7 sec 9.6 sec 22.4 sec 11.5 sec 15.9 sec Response Time D www.youtube.com A www.yahoo.com C www.wikipedia.org D www.myspace.com F www.msn.com A froogle.google.com C www.ebay.com F www.cnn.com F www.aol.com D www.amazon.com YSlow Grade
  • 62. Takeaways focus on the front-end harvest the low-hanging fruit you do control user response times small investment up front keeps on giving LOFNO – be an advocate for your users
  • 63. Today's Checklist perspective on performance turned upside down 3+ actionable takeaways empowered to make everyone's web experience better
  • 64. Tenni Theurer [email_address]
  • 65. CC Images Used &quot;Need for Speed&quot; by Amnemon: http://www.flickr.com/photos/marinacvinhal/379111290/ &quot;Max speed 15kmh&quot; by xxxtoff: http://www.flickr.com/photos/xxxtoff/219781763/ &quot;maybe&quot; by Tal Bright: http://www.flickr.com/photos/bright/118197469/ &quot;takeout&quot; by dotpolka: http://www.flickr.com/photos/dotpolka/249129144/ &quot;how do they do that&quot; by Fort Photo: http://www.flickr.com/ photos/fortphoto/388825145 / &quot;Absolutely Nothing is Allowed Here&quot; by Vicki & Chuck Rogers: http://www.flickr.com/photos/two-wrongs/205467442/ &quot;Zipper Pocket&quot; by jogales: http://www.flickr.com/photos/jogales/11519576/ &quot;new briefcase&quot; by dcJohn: http://www.flickr.com/photos/dcjohn/85504455/ &quot;Told you it was me!&quot; by Pug!: http://flickr.com/photos/pugspace/1277023154/ &quot;Robert's Legion&quot; by dancharvey: http://www.flickr.com/photos/dancharvey/2647529/ &quot;thank you&quot; by nj dodge: http://flickr.com/photos/nj_dodge/187190601/