SlideShare a Scribd company logo
1 of 72
Download to read offline
THE 7 HABITS OF EXCEPTIONAL
       PERFORMANCE




Stoyan Stefanov              Nicole Sullivan
http://phpied.com   http://stubbornella.org
Quantify and improve the
performance of all Yahoo!
   products worldwide
Y! Performance Research
    Engineering Team




     Nicole Sullivan, Anande Kishore (intern),
   Stoyan Stefanov, Philip Tellis, Swapnil Shinde
Why talk about
performance?
1: Because fast is better
6
9
10
11
12
2: Because sites are bigger
Modern web sites &
applications have changed
      architecturally.
From 2003 to 2008:
   97K to 312K.
25.7 to 49.9 objects.
In past 12 months, Top 1000 sites:
       From 250K to 310.4K.
WebSiteOptimization.com/speed/tweak/average-web-page
3: Time is money
+100 ms
Amazon:1% drop in sales


       +100 ms
+400 ms
Yahoo!: 5-9% drop in
   full-page traffic

     +400 ms
+500 ms
Google: 20% fewer
    searches

    +500 ms
What is performance?
Two Flavors:
 Response Time
       &
System Efficiency
Our focus is
the response
time of web
  products
Performance Fruit
(some low, some high)
After YSlow “A”?
1. Flush the buffer early              11. Minimize DOM access

2. Use GET for AJAX requests           12. Develop smart event handlers

3. Post-load components                13. Choose <link> over @import

4. Preload components                  14. Avoid filters

5. Reduce the number of DOM elements   15. Optimize images

6. Split components across domains     16. Optimize CSS sprites

7. Minimize the number of iframes      17. Don't scale images in HTML

8. No 404s                             18. Make favicon.ico small and cacheable

9. Reduce cookie size                  19. iPhone 3G Breakthrough

10. Use cookie-free domains for        20. Pack components into a multipart
    components                             document
After YSlow “A”?
1. Flush the buffer early              11. Minimize DOM access

2. Use GET for AJAX requests           12. Develop smart event handlers

3. Post-load components                13. Choose <link> over @import

4. Preload components                  14. Avoid filters

5. Reduce the number of DOM elements   15. Optimize images

6. Split components across domains     16. Optimize CSS sprites

7. Minimize the number of iframes      17. Don't scale images in HTML

8. No 404s                             18. Make favicon.ico small and cacheable

9. Reduce cookie size                  19. iPhone 3G breakthrough    New!

10. Use cookie-free domains for        20. Pack components into a multipart
    components                             document
#1
 Flush the buffer early
 Let the browser work while server is busy
#1
                                        Com pon e n ts
                                        down load in
                                        paralle l with
                       Text                HTML




     Let the browser work while server is busy
#2       Use GET for Ajax
             requests
 •   GET is for retrieving     •   POST without actually
     data                          posting data is like GET

 •   GET request is one TCP    •   POST is a two-step
     packet (unless you have       process (send headers,
     a lot of cookies)             send data)

 •   Max URL length 2K
     (because of IE)

 •   Yahoo! Mail Research
#3
   Post-load components
Ask yourself: what's absolutely required in order to
              render the page initially?
Example: Yahoo.com


•   Extras can wait (drag and drop, animations, hidden
    content, images below the fold)

•   JavaScript is ideal candidate for splitting


•   YUI Image Loader

•   YUI Get Utility
#4
 Preload Components
     Preload items you'll need in the future
3 flavors
Unconditional
 Conditional
 Anticipated
Unconditional Preload
       google.com
Conditional Preload
      yahoo.com
Anticipated Preload
•   Of course it’s slow:

•   100% of page views are
    with an empty cache.
                                “The redesign is cool,
•   New Feature or full
                                  but it’s so slow!”
    redesign?

•   Preload components
    before launch;

•   users will already have a
    primed cache when you
    go live.
#14
          Avoid filters
      Why is the AlphaImageLoader used?

   IE6 and earlier don’t natively support alpha
  transparency. This filter forces that support.
Problem with filters

• Blocks rendering, freezes the browser
• Increased memory consumption
• Per element, not per image!
Solution: Avoid
          AlphaImageLoader
1. BEST: avoid completely, use PNG8 which degrades gracefully in IE < 7

2. Fallback: use underscore hack so the filter is applied only to IE < 7

   #elem {

   background: url(some.png);
   _background: none;
   _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader
                 (src='some.png', sizingMethod='crop');

   }
Progressively
enhanced PNG8
Build a binary transparency image.
  In Fireworks, add a few alpha
        transparent pixels.
Good browsers get more
  And the dinosaurs get an acceptable fallback
Experimental Data
  Removing Alpha Image Loader



                            100ms
                            Yahoo! search
#19
      iPhone 3G
       1000Kb cache limit
25Kb component limit no longer exists.
          Total cache limit is 1000K.
 Cache limitations are not affected by gzipping.




iPhone Cache has evolved
7 HABITS OF HIGH
   PERFORMANCE
Baking performance into development
1. LOFNO
Look out for number one!
2. Harvest the
 low-hanging
     fruit
    Pick your battles, some
performance optimizations are
     easier to implement.
          (Run YSlow)
3. Balance features with
         speed
Balancing the
performance budget
Three steps.

• Measure current
  performance and trends

• Estimate performance impact
  of all new features

• Estimate impact of all
  performance improvements.
Estimates, how? track:

• Page Weight *
• Response Time
• HTTP requests

 * For more complex sites, track page weight by
     component type; CSS, JS, Images, Flash
Features   = Optimizations
Verify assumptions.



     • Was the performance impact of each feature
       what you estimated it would be?

     • Did the optimizations help as much as you
       thought they would?
Allocate time, balance the budget




      Performance Improvements
               versus
            New Features

                                 58
4. Make
  performance
   part of the
    process
Avoid the response time roller
           coaster.
5. Measure and track
       results
Measurement is the first step to improvement.
Firebug
Web development evolved.
         Free.
IBM Page
        Detailer
Packet sniffer. Windows only (IE, FF,
 any .exe). Free trial, $300 license

 http://alphaworks.ibm.com/tech/
            pagedetailer
LiveHTTPHeaders
 View HTTP headers. Firefox
      extension. Free.
YSlow
Performance insights and
   analysis tool. Free.
Gomez
3rd party measurements.
Competitor comparisons.
Smush it
Image Optimization
 http://smushit.com
6. Set targets
7. Ask questions
 and challenge
    answers
    Even smart people make
assumptions or repeat incorrect
          statements.
Links
book: http://www.oreilly.com/catalog/9780596514211/
examples: http://stevesouders.com/examples/
image maps: http://www.w3.org/TR/html401/struct/objects.html#h-13.6
CSS sprites: http://alistapart.com/articles/sprites
inline images: http://tools.ietf.org/html/rfc2397
jsmin: http://crockford.com/javascript/jsmin
dojo compressor: http://dojotoolkit.org/docs/shrinksafe
HTTP status codes: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
IBM Page Detailer: http://alphaworks.ibm.com/tech/pagedetailer
Fasterfox: http://fasterfox.mozdev.org/
LiveHTTPHeaders: http://livehttpheaders.mozdev.org/
Firebug: http://getfirebug.com/
YUIBlog: http://yuiblog.com/blog/2006/11/28/performance-research-part-1/
          http://yuiblog.com/blog/2007/01/04/performance-research-part-2/
          http://yuiblog.com/blog/2007/03/01/performance-research-part-3/
          http://yuiblog.com/blog/2007/04/11/performance-research-part-4/
YDN: http://developer.yahoo.net/blog/archives/2007/03/high_performanc.html
      http://developer.yahoo.net/blog/archives/2007/04/rule_1_make_few.html
CC Images Used
“Zipper Pocket” by jogales: http://www.flickr.com/photos/jogales/11519576/
“Need for Speed” by Amnemona: http://www.flickr.com/photos/marinacvinhal/379111290/
“I wonder what flavour it is?” by blather: http://www.flickr.com/photos/deadlyphoto/411770353/
“takeout boxes from Grand Shanghai” by massdistraction: http://www.flickr.com/photos/sharynmorrow/11263821/
“takeout” by dotpolka : http://www.flickr.com/photos/dotpolka/249129144/
“ice cream cone melting/rome” by Megandavid : http://www.flickr.com/photos/megandavid/189332042/
“nikon em bokeh” by dsevilla: http://www.flickr.com/photos/dsevilla/249202834/
“maybe” by Tal Bright: http://www.flickr.com/photos/bright/118197469/
“how do they do that” by Fort Photo: http://www.flickr.com/photos/fortphoto/388825145/
“Gorgeous iceberg 7 [Le Toit du Monde]” by Adventure Addict http://www.flickr.com/photos/adventureaddict/
    35290307/
“molasses-spice cookies” ilmungo: http://www.flickr.com/photos/ilmungo/65345233/
“Driving is fun” by Ben McLeod: http://www.flickr.com/photos/benmcleod/59948935/
“Dozen eggs” by aeA: http://www.flickr.com/photos/raeallen/96238870/
“Max speed 15kmh” by xxxtoff: http://www.flickr.com/photos/xxxtoff/219781763/
“Stairway to heaven” ognita: http://www.flickr.com/photos/ognita/503915547/
“flaps up” by http://www.flickr.com/photos/jurvetson/74274113/
“Fast Cat” by http://www.flickr.com/photos/raylopez/708023176/
“blues” by http://www.flickr.com/photos/pankaj/1877184829/
CC Images Used
“Vintage Kodak Studio Scales Set and Bottle” by http://www.flickr.com/photos/captkodak/
    272746539/

“Assumtion, Minissota” by http://www.flickr.com/photos/afiler/226337382/




                     Thanks to Tenni Theurer and Nate Koechley
       http://developer.yahoo.net/blog/archives/2008/01/the_7_habits_fo.html
                                                                                 71
Let’s keep talking...
Stoyan Stefanov         Nicole Sullivan
http://phpied.com       http://stubbornella.org
YSlow: Lead Developer   nicole@stubbornella.org
ssttoo@gmail.com        “stubbornella” on the web

More Related Content

What's hot

Raiders of the Fast Start: Frontend Performance Archaeology - Performance.now...
Raiders of the Fast Start: Frontend Performance Archaeology - Performance.now...Raiders of the Fast Start: Frontend Performance Archaeology - Performance.now...
Raiders of the Fast Start: Frontend Performance Archaeology - Performance.now...
Katie Sylor-Miller
 
High Performance Mobile Web
High Performance Mobile WebHigh Performance Mobile Web
High Performance Mobile Web
James D Bloom
 

What's hot (20)

Mobile Web Speed Bumps
Mobile Web Speed BumpsMobile Web Speed Bumps
Mobile Web Speed Bumps
 
Measuring Web Performance (HighEdWeb FL Edition)
Measuring Web Performance (HighEdWeb FL Edition)Measuring Web Performance (HighEdWeb FL Edition)
Measuring Web Performance (HighEdWeb FL Edition)
 
State of jQuery '09
State of jQuery '09State of jQuery '09
State of jQuery '09
 
Expanding XPages with Bootstrap Plugins for Ultimate Usability
Expanding XPages with Bootstrap Plugins for Ultimate UsabilityExpanding XPages with Bootstrap Plugins for Ultimate Usability
Expanding XPages with Bootstrap Plugins for Ultimate Usability
 
Optimizing Sites for Mobile Devices
Optimizing Sites for Mobile DevicesOptimizing Sites for Mobile Devices
Optimizing Sites for Mobile Devices
 
Raiders of the Fast Start: Frontend Performance Archaeology - Performance.now...
Raiders of the Fast Start: Frontend Performance Archaeology - Performance.now...Raiders of the Fast Start: Frontend Performance Archaeology - Performance.now...
Raiders of the Fast Start: Frontend Performance Archaeology - Performance.now...
 
Quantifying The Mobile Difference
Quantifying The Mobile DifferenceQuantifying The Mobile Difference
Quantifying The Mobile Difference
 
High Performance Web Design
High Performance Web DesignHigh Performance Web Design
High Performance Web Design
 
Mobile App Performance, Dublin MOT
Mobile App Performance, Dublin MOTMobile App Performance, Dublin MOT
Mobile App Performance, Dublin MOT
 
Its timetostopstalling limerick
Its timetostopstalling limerickIts timetostopstalling limerick
Its timetostopstalling limerick
 
Web Performance & You - HighEdWeb Arkansas Version
Web Performance & You - HighEdWeb Arkansas VersionWeb Performance & You - HighEdWeb Arkansas Version
Web Performance & You - HighEdWeb Arkansas Version
 
Happy Browser, Happy User! NY Web Performance Meetup 9/20/19
Happy Browser, Happy User! NY Web Performance Meetup 9/20/19Happy Browser, Happy User! NY Web Performance Meetup 9/20/19
Happy Browser, Happy User! NY Web Performance Meetup 9/20/19
 
Improving frontend performance
Improving frontend performanceImproving frontend performance
Improving frontend performance
 
Mobile Web Best Practices
Mobile Web Best PracticesMobile Web Best Practices
Mobile Web Best Practices
 
Developing High Performance Web Apps - CodeMash 2011
Developing High Performance Web Apps - CodeMash 2011Developing High Performance Web Apps - CodeMash 2011
Developing High Performance Web Apps - CodeMash 2011
 
Performance.now() fast but not furious
Performance.now()   fast but not furiousPerformance.now()   fast but not furious
Performance.now() fast but not furious
 
High Performance Mobile Web
High Performance Mobile WebHigh Performance Mobile Web
High Performance Mobile Web
 
High Performance Mobile Web
High Performance Mobile WebHigh Performance Mobile Web
High Performance Mobile Web
 
There Are No “Buts” in Progressive Enhancement [Øredev 2015]
There Are No “Buts” in Progressive Enhancement [Øredev 2015]There Are No “Buts” in Progressive Enhancement [Øredev 2015]
There Are No “Buts” in Progressive Enhancement [Øredev 2015]
 
High Performance Web - Full Stack Toronto
High Performance Web - Full Stack TorontoHigh Performance Web - Full Stack Toronto
High Performance Web - Full Stack Toronto
 

Similar to 7 Habits of Exceptional Performance

Csdn Drdobbs Tenni Theurer Yahoo
Csdn Drdobbs Tenni Theurer YahooCsdn Drdobbs Tenni Theurer Yahoo
Csdn Drdobbs Tenni Theurer Yahoo
guestb1b95b
 
Web前端性能分析工具导引
Web前端性能分析工具导引Web前端性能分析工具导引
Web前端性能分析工具导引
冰 郭
 
High Performance Web Pages - 20 new best practices
High Performance Web Pages - 20 new best practicesHigh Performance Web Pages - 20 new best practices
High Performance Web Pages - 20 new best practices
Stoyan Stefanov
 
Optimising Web Application Frontend
Optimising Web Application FrontendOptimising Web Application Frontend
Optimising Web Application Frontend
tkramar
 

Similar to 7 Habits of Exceptional Performance (20)

High Performance Ajax Applications
High Performance Ajax ApplicationsHigh Performance Ajax Applications
High Performance Ajax Applications
 
The 5 most common reasons for a slow WordPress site and how to fix them – ext...
The 5 most common reasons for a slow WordPress site and how to fix them – ext...The 5 most common reasons for a slow WordPress site and how to fix them – ext...
The 5 most common reasons for a slow WordPress site and how to fix them – ext...
 
Csdn Drdobbs Tenni Theurer Yahoo
Csdn Drdobbs Tenni Theurer YahooCsdn Drdobbs Tenni Theurer Yahoo
Csdn Drdobbs Tenni Theurer Yahoo
 
The need for Speed: Advanced #webperf - SEOday 2018
The need for Speed: Advanced #webperf - SEOday 2018The need for Speed: Advanced #webperf - SEOday 2018
The need for Speed: Advanced #webperf - SEOday 2018
 
Web Performance Optimization (WPO)
Web Performance Optimization (WPO)Web Performance Optimization (WPO)
Web Performance Optimization (WPO)
 
Ruby on Rails Performance Tuning. Make it faster, make it better (WindyCityRa...
Ruby on Rails Performance Tuning. Make it faster, make it better (WindyCityRa...Ruby on Rails Performance Tuning. Make it faster, make it better (WindyCityRa...
Ruby on Rails Performance Tuning. Make it faster, make it better (WindyCityRa...
 
Windy cityrails performance_tuning
Windy cityrails performance_tuningWindy cityrails performance_tuning
Windy cityrails performance_tuning
 
Front-end performances
Front-end performancesFront-end performances
Front-end performances
 
Web前端性能分析工具导引
Web前端性能分析工具导引Web前端性能分析工具导引
Web前端性能分析工具导引
 
Super speed around the globe - SearchLeeds 2018
Super speed around the globe - SearchLeeds 2018Super speed around the globe - SearchLeeds 2018
Super speed around the globe - SearchLeeds 2018
 
SearchLeeds 2018 - Bastian Grimm - Peak Ace - International site speed: Going...
SearchLeeds 2018 - Bastian Grimm - Peak Ace - International site speed: Going...SearchLeeds 2018 - Bastian Grimm - Peak Ace - International site speed: Going...
SearchLeeds 2018 - Bastian Grimm - Peak Ace - International site speed: Going...
 
Shopzilla - Performance By Design
Shopzilla - Performance By DesignShopzilla - Performance By Design
Shopzilla - Performance By Design
 
JS digest. Decemebr 2017
JS digest. Decemebr 2017JS digest. Decemebr 2017
JS digest. Decemebr 2017
 
Word press optimizations
Word press optimizations Word press optimizations
Word press optimizations
 
High Performance Web Pages - 20 new best practices
High Performance Web Pages - 20 new best practicesHigh Performance Web Pages - 20 new best practices
High Performance Web Pages - 20 new best practices
 
Develop:BBC 2013 - Turbocharge your mobile web apps by using offline
Develop:BBC 2013 - Turbocharge your mobile web apps by using offlineDevelop:BBC 2013 - Turbocharge your mobile web apps by using offline
Develop:BBC 2013 - Turbocharge your mobile web apps by using offline
 
Optimising Web Application Frontend
Optimising Web Application FrontendOptimising Web Application Frontend
Optimising Web Application Frontend
 
Educate 2017: Quick 'n Lazy: How we keep things speedy while staying out of y...
Educate 2017: Quick 'n Lazy: How we keep things speedy while staying out of y...Educate 2017: Quick 'n Lazy: How we keep things speedy while staying out of y...
Educate 2017: Quick 'n Lazy: How we keep things speedy while staying out of y...
 
Cache hcm-topdev
Cache hcm-topdevCache hcm-topdev
Cache hcm-topdev
 
Cache hcm-topdev
Cache hcm-topdevCache hcm-topdev
Cache hcm-topdev
 

More from Nicole Sullivan

More from Nicole Sullivan (15)

Building the Media Block in ReactJS
Building the Media Block in ReactJS Building the Media Block in ReactJS
Building the Media Block in ReactJS
 
Why are you here?
Why are you here?Why are you here?
Why are you here?
 
Creating Living Style Guides to Improve Performance
Creating Living Style Guides to Improve PerformanceCreating Living Style Guides to Improve Performance
Creating Living Style Guides to Improve Performance
 
Don't feed the trolls
Don't feed the trollsDon't feed the trolls
Don't feed the trolls
 
CSS Power Tools
CSS Power ToolsCSS Power Tools
CSS Power Tools
 
Our Best Practices Are Killing Us
Our Best Practices Are Killing UsOur Best Practices Are Killing Us
Our Best Practices Are Killing Us
 
CSS Bloat!
CSS Bloat!CSS Bloat!
CSS Bloat!
 
5 Mistakes of Massive CSS
5 Mistakes of Massive CSS5 Mistakes of Massive CSS
5 Mistakes of Massive CSS
 
CSS Wish List @JSConf
CSS Wish List @JSConfCSS Wish List @JSConf
CSS Wish List @JSConf
 
The Cascade, Grids, Headings, and Selectors from an OOCSS Perspective, Ajax ...
The Cascade, Grids, Headings, and Selectors from an OOCSS Perspective,  Ajax ...The Cascade, Grids, Headings, and Selectors from an OOCSS Perspective,  Ajax ...
The Cascade, Grids, Headings, and Selectors from an OOCSS Perspective, Ajax ...
 
Taming CSS Selectors
Taming CSS SelectorsTaming CSS Selectors
Taming CSS Selectors
 
The Fast And The Fabulous
The Fast And The FabulousThe Fast And The Fabulous
The Fast And The Fabulous
 
What is Object Oriented CSS?
What is Object Oriented CSS?What is Object Oriented CSS?
What is Object Oriented CSS?
 
Object Oriented CSS
Object Oriented CSSObject Oriented CSS
Object Oriented CSS
 
Pourquoi la performance?
Pourquoi la performance?Pourquoi la performance?
Pourquoi la performance?
 

Recently uploaded

Jual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan Cytotec
Jual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan CytotecJual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan Cytotec
Jual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan Cytotec
ZurliaSoop
 
Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...
Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...
Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...
daisycvs
 
Challenges and Opportunities: A Qualitative Study on Tax Compliance in Pakistan
Challenges and Opportunities: A Qualitative Study on Tax Compliance in PakistanChallenges and Opportunities: A Qualitative Study on Tax Compliance in Pakistan
Challenges and Opportunities: A Qualitative Study on Tax Compliance in Pakistan
vineshkumarsajnani12
 

Recently uploaded (20)

GUWAHATI 💋 Call Girl 9827461493 Call Girls in Escort service book now
GUWAHATI 💋 Call Girl 9827461493 Call Girls in  Escort service book nowGUWAHATI 💋 Call Girl 9827461493 Call Girls in  Escort service book now
GUWAHATI 💋 Call Girl 9827461493 Call Girls in Escort service book now
 
Jual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan Cytotec
Jual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan CytotecJual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan Cytotec
Jual Obat Aborsi ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan Cytotec
 
Ooty Call Gril 80022//12248 Only For Sex And High Profile Best Gril Sex Avail...
Ooty Call Gril 80022//12248 Only For Sex And High Profile Best Gril Sex Avail...Ooty Call Gril 80022//12248 Only For Sex And High Profile Best Gril Sex Avail...
Ooty Call Gril 80022//12248 Only For Sex And High Profile Best Gril Sex Avail...
 
Berhampur 70918*19311 CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDING
Berhampur 70918*19311 CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDINGBerhampur 70918*19311 CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDING
Berhampur 70918*19311 CALL GIRLS IN ESCORT SERVICE WE ARE PROVIDING
 
Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...
Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...
Quick Doctor In Kuwait +2773`7758`557 Kuwait Doha Qatar Dubai Abu Dhabi Sharj...
 
Lundin Gold - Q1 2024 Conference Call Presentation (Revised)
Lundin Gold - Q1 2024 Conference Call Presentation (Revised)Lundin Gold - Q1 2024 Conference Call Presentation (Revised)
Lundin Gold - Q1 2024 Conference Call Presentation (Revised)
 
Escorts in Nungambakkam Phone 8250092165 Enjoy 24/7 Escort Service Enjoy Your...
Escorts in Nungambakkam Phone 8250092165 Enjoy 24/7 Escort Service Enjoy Your...Escorts in Nungambakkam Phone 8250092165 Enjoy 24/7 Escort Service Enjoy Your...
Escorts in Nungambakkam Phone 8250092165 Enjoy 24/7 Escort Service Enjoy Your...
 
SEO Case Study: How I Increased SEO Traffic & Ranking by 50-60% in 6 Months
SEO Case Study: How I Increased SEO Traffic & Ranking by 50-60%  in 6 MonthsSEO Case Study: How I Increased SEO Traffic & Ranking by 50-60%  in 6 Months
SEO Case Study: How I Increased SEO Traffic & Ranking by 50-60% in 6 Months
 
PHX May 2024 Corporate Presentation Final
PHX May 2024 Corporate Presentation FinalPHX May 2024 Corporate Presentation Final
PHX May 2024 Corporate Presentation Final
 
Falcon Invoice Discounting: Unlock Your Business Potential
Falcon Invoice Discounting: Unlock Your Business PotentialFalcon Invoice Discounting: Unlock Your Business Potential
Falcon Invoice Discounting: Unlock Your Business Potential
 
Uneak White's Personal Brand Exploration Presentation
Uneak White's Personal Brand Exploration PresentationUneak White's Personal Brand Exploration Presentation
Uneak White's Personal Brand Exploration Presentation
 
HomeRoots Pitch Deck | Investor Insights | April 2024
HomeRoots Pitch Deck | Investor Insights | April 2024HomeRoots Pitch Deck | Investor Insights | April 2024
HomeRoots Pitch Deck | Investor Insights | April 2024
 
Unveiling Falcon Invoice Discounting: Leading the Way as India's Premier Bill...
Unveiling Falcon Invoice Discounting: Leading the Way as India's Premier Bill...Unveiling Falcon Invoice Discounting: Leading the Way as India's Premier Bill...
Unveiling Falcon Invoice Discounting: Leading the Way as India's Premier Bill...
 
Arti Languages Pre Seed Teaser Deck 2024.pdf
Arti Languages Pre Seed Teaser Deck 2024.pdfArti Languages Pre Seed Teaser Deck 2024.pdf
Arti Languages Pre Seed Teaser Deck 2024.pdf
 
CROSS CULTURAL NEGOTIATION BY PANMISEM NS
CROSS CULTURAL NEGOTIATION BY PANMISEM NSCROSS CULTURAL NEGOTIATION BY PANMISEM NS
CROSS CULTURAL NEGOTIATION BY PANMISEM NS
 
joint cost.pptx COST ACCOUNTING Sixteenth Edition ...
joint cost.pptx  COST ACCOUNTING  Sixteenth Edition                          ...joint cost.pptx  COST ACCOUNTING  Sixteenth Edition                          ...
joint cost.pptx COST ACCOUNTING Sixteenth Edition ...
 
Berhampur Call Girl Just Call 8084732287 Top Class Call Girl Service Available
Berhampur Call Girl Just Call 8084732287 Top Class Call Girl Service AvailableBerhampur Call Girl Just Call 8084732287 Top Class Call Girl Service Available
Berhampur Call Girl Just Call 8084732287 Top Class Call Girl Service Available
 
Challenges and Opportunities: A Qualitative Study on Tax Compliance in Pakistan
Challenges and Opportunities: A Qualitative Study on Tax Compliance in PakistanChallenges and Opportunities: A Qualitative Study on Tax Compliance in Pakistan
Challenges and Opportunities: A Qualitative Study on Tax Compliance in Pakistan
 
Phases of Negotiation .pptx
 Phases of Negotiation .pptx Phases of Negotiation .pptx
Phases of Negotiation .pptx
 
Marel Q1 2024 Investor Presentation from May 8, 2024
Marel Q1 2024 Investor Presentation from May 8, 2024Marel Q1 2024 Investor Presentation from May 8, 2024
Marel Q1 2024 Investor Presentation from May 8, 2024
 

7 Habits of Exceptional Performance

  • 1. THE 7 HABITS OF EXCEPTIONAL PERFORMANCE Stoyan Stefanov Nicole Sullivan http://phpied.com http://stubbornella.org
  • 2. Quantify and improve the performance of all Yahoo! products worldwide
  • 3. Y! Performance Research Engineering Team Nicole Sullivan, Anande Kishore (intern), Stoyan Stefanov, Philip Tellis, Swapnil Shinde
  • 5. 1: Because fast is better
  • 6. 6
  • 7.
  • 8.
  • 9. 9
  • 10. 10
  • 11. 11
  • 12. 12
  • 13. 2: Because sites are bigger
  • 14. Modern web sites & applications have changed architecturally.
  • 15. From 2003 to 2008: 97K to 312K. 25.7 to 49.9 objects.
  • 16. In past 12 months, Top 1000 sites: From 250K to 310.4K. WebSiteOptimization.com/speed/tweak/average-web-page
  • 17. 3: Time is money
  • 19. Amazon:1% drop in sales +100 ms
  • 21. Yahoo!: 5-9% drop in full-page traffic +400 ms
  • 23. Google: 20% fewer searches +500 ms
  • 25. Two Flavors: Response Time & System Efficiency
  • 26. Our focus is the response time of web products
  • 28.
  • 29. After YSlow “A”? 1. Flush the buffer early 11. Minimize DOM access 2. Use GET for AJAX requests 12. Develop smart event handlers 3. Post-load components 13. Choose <link> over @import 4. Preload components 14. Avoid filters 5. Reduce the number of DOM elements 15. Optimize images 6. Split components across domains 16. Optimize CSS sprites 7. Minimize the number of iframes 17. Don't scale images in HTML 8. No 404s 18. Make favicon.ico small and cacheable 9. Reduce cookie size 19. iPhone 3G Breakthrough 10. Use cookie-free domains for 20. Pack components into a multipart components document
  • 30. After YSlow “A”? 1. Flush the buffer early 11. Minimize DOM access 2. Use GET for AJAX requests 12. Develop smart event handlers 3. Post-load components 13. Choose <link> over @import 4. Preload components 14. Avoid filters 5. Reduce the number of DOM elements 15. Optimize images 6. Split components across domains 16. Optimize CSS sprites 7. Minimize the number of iframes 17. Don't scale images in HTML 8. No 404s 18. Make favicon.ico small and cacheable 9. Reduce cookie size 19. iPhone 3G breakthrough New! 10. Use cookie-free domains for 20. Pack components into a multipart components document
  • 31. #1 Flush the buffer early Let the browser work while server is busy
  • 32. #1 Com pon e n ts down load in paralle l with Text HTML Let the browser work while server is busy
  • 33. #2 Use GET for Ajax requests • GET is for retrieving • POST without actually data posting data is like GET • GET request is one TCP • POST is a two-step packet (unless you have process (send headers, a lot of cookies) send data) • Max URL length 2K (because of IE) • Yahoo! Mail Research
  • 34. #3 Post-load components Ask yourself: what's absolutely required in order to render the page initially?
  • 35. Example: Yahoo.com • Extras can wait (drag and drop, animations, hidden content, images below the fold) • JavaScript is ideal candidate for splitting • YUI Image Loader • YUI Get Utility
  • 36. #4 Preload Components Preload items you'll need in the future
  • 38. Unconditional Preload google.com
  • 39. Conditional Preload yahoo.com
  • 40. Anticipated Preload • Of course it’s slow: • 100% of page views are with an empty cache. “The redesign is cool, • New Feature or full but it’s so slow!” redesign? • Preload components before launch; • users will already have a primed cache when you go live.
  • 41. #14 Avoid filters Why is the AlphaImageLoader used? IE6 and earlier don’t natively support alpha transparency. This filter forces that support.
  • 42. Problem with filters • Blocks rendering, freezes the browser • Increased memory consumption • Per element, not per image!
  • 43. Solution: Avoid AlphaImageLoader 1. BEST: avoid completely, use PNG8 which degrades gracefully in IE < 7 2. Fallback: use underscore hack so the filter is applied only to IE < 7 #elem { background: url(some.png); _background: none; _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader (src='some.png', sizingMethod='crop'); }
  • 44. Progressively enhanced PNG8 Build a binary transparency image. In Fireworks, add a few alpha transparent pixels.
  • 45. Good browsers get more And the dinosaurs get an acceptable fallback
  • 46. Experimental Data Removing Alpha Image Loader 100ms Yahoo! search
  • 47. #19 iPhone 3G 1000Kb cache limit
  • 48. 25Kb component limit no longer exists. Total cache limit is 1000K. Cache limitations are not affected by gzipping. iPhone Cache has evolved
  • 49. 7 HABITS OF HIGH PERFORMANCE Baking performance into development
  • 50. 1. LOFNO Look out for number one!
  • 51. 2. Harvest the low-hanging fruit Pick your battles, some performance optimizations are easier to implement. (Run YSlow)
  • 52. 3. Balance features with speed
  • 54. Three steps. • Measure current performance and trends • Estimate performance impact of all new features • Estimate impact of all performance improvements.
  • 55. Estimates, how? track: • Page Weight * • Response Time • HTTP requests * For more complex sites, track page weight by component type; CSS, JS, Images, Flash
  • 56. Features = Optimizations
  • 57. Verify assumptions. • Was the performance impact of each feature what you estimated it would be? • Did the optimizations help as much as you thought they would?
  • 58. Allocate time, balance the budget Performance Improvements versus New Features 58
  • 59. 4. Make performance part of the process Avoid the response time roller coaster.
  • 60. 5. Measure and track results Measurement is the first step to improvement.
  • 62. IBM Page Detailer Packet sniffer. Windows only (IE, FF, any .exe). Free trial, $300 license http://alphaworks.ibm.com/tech/ pagedetailer
  • 63. LiveHTTPHeaders View HTTP headers. Firefox extension. Free.
  • 64. YSlow Performance insights and analysis tool. Free.
  • 66. Smush it Image Optimization http://smushit.com
  • 68. 7. Ask questions and challenge answers Even smart people make assumptions or repeat incorrect statements.
  • 69. Links book: http://www.oreilly.com/catalog/9780596514211/ examples: http://stevesouders.com/examples/ image maps: http://www.w3.org/TR/html401/struct/objects.html#h-13.6 CSS sprites: http://alistapart.com/articles/sprites inline images: http://tools.ietf.org/html/rfc2397 jsmin: http://crockford.com/javascript/jsmin dojo compressor: http://dojotoolkit.org/docs/shrinksafe HTTP status codes: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html IBM Page Detailer: http://alphaworks.ibm.com/tech/pagedetailer Fasterfox: http://fasterfox.mozdev.org/ LiveHTTPHeaders: http://livehttpheaders.mozdev.org/ Firebug: http://getfirebug.com/ YUIBlog: http://yuiblog.com/blog/2006/11/28/performance-research-part-1/ http://yuiblog.com/blog/2007/01/04/performance-research-part-2/ http://yuiblog.com/blog/2007/03/01/performance-research-part-3/ http://yuiblog.com/blog/2007/04/11/performance-research-part-4/ YDN: http://developer.yahoo.net/blog/archives/2007/03/high_performanc.html http://developer.yahoo.net/blog/archives/2007/04/rule_1_make_few.html
  • 70. CC Images Used “Zipper Pocket” by jogales: http://www.flickr.com/photos/jogales/11519576/ “Need for Speed” by Amnemona: http://www.flickr.com/photos/marinacvinhal/379111290/ “I wonder what flavour it is?” by blather: http://www.flickr.com/photos/deadlyphoto/411770353/ “takeout boxes from Grand Shanghai” by massdistraction: http://www.flickr.com/photos/sharynmorrow/11263821/ “takeout” by dotpolka : http://www.flickr.com/photos/dotpolka/249129144/ “ice cream cone melting/rome” by Megandavid : http://www.flickr.com/photos/megandavid/189332042/ “nikon em bokeh” by dsevilla: http://www.flickr.com/photos/dsevilla/249202834/ “maybe” by Tal Bright: http://www.flickr.com/photos/bright/118197469/ “how do they do that” by Fort Photo: http://www.flickr.com/photos/fortphoto/388825145/ “Gorgeous iceberg 7 [Le Toit du Monde]” by Adventure Addict http://www.flickr.com/photos/adventureaddict/ 35290307/ “molasses-spice cookies” ilmungo: http://www.flickr.com/photos/ilmungo/65345233/ “Driving is fun” by Ben McLeod: http://www.flickr.com/photos/benmcleod/59948935/ “Dozen eggs” by aeA: http://www.flickr.com/photos/raeallen/96238870/ “Max speed 15kmh” by xxxtoff: http://www.flickr.com/photos/xxxtoff/219781763/ “Stairway to heaven” ognita: http://www.flickr.com/photos/ognita/503915547/ “flaps up” by http://www.flickr.com/photos/jurvetson/74274113/ “Fast Cat” by http://www.flickr.com/photos/raylopez/708023176/ “blues” by http://www.flickr.com/photos/pankaj/1877184829/
  • 71. CC Images Used “Vintage Kodak Studio Scales Set and Bottle” by http://www.flickr.com/photos/captkodak/ 272746539/ “Assumtion, Minissota” by http://www.flickr.com/photos/afiler/226337382/ Thanks to Tenni Theurer and Nate Koechley http://developer.yahoo.net/blog/archives/2008/01/the_7_habits_fo.html 71
  • 72. Let’s keep talking... Stoyan Stefanov Nicole Sullivan http://phpied.com http://stubbornella.org YSlow: Lead Developer nicole@stubbornella.org ssttoo@gmail.com “stubbornella” on the web