SlideShare a Scribd company logo
1 of 126
Download to read offline
High Performance
   Web Sites
Tips for faster pages




                       Nate Koechley
                    natek@yahoo-inc.com
                   nate.koechley.com/blog
                  developer.yahoo.com/yui
Y! Performance Research
    Engineering Team

• Tenni Theurer, Nicole Sullivan,
  Philip Tellis, Stoyan Stefanov,
  Swapni Shinde, Wayne Shea,
  Anand Kishore (Intern)
Why talk about
performance?
1: Because fast is better
5
8
9
10
11
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
What is performance?
Two Flavors:
 Response Time
       &
System Efficiency
Our focus is
the response
time of web
  products
Foundational Research:
1
Perception
perceived response time

                slow crawl boring snail
       performance speed enjoyable stagnant
                     unexceptional
       urgent instant accelerate yawn
    perceptionunresponsive impatient delay
                 snap achievement
               moderate blah subdue
       better improve action pleasant drag apathetic
               prolong slack load sluggish sleepy
    pace quick promote swift cool
                  late unexciting reduced lag
    maximum drive prompt advance
                 complex heavy unmemorable
     fast hurry rush satisfying feel
                             obscure
                  brisk rapid exciting
    exceptional
                                   wait
                             why
perceived response time

                                     slow crawl boring snail stagnant
   performance speed enjoyable
                                         unexceptional yawn
   urgent instant accelerate
                                     unresponsive impatient delay
perception snap achievement
                                     moderate blah subdue drag apathetic
   better improve action pleasant
                                     prolong slack load sluggish sleepy
pace quick promote swift cool
                                       late unexciting reduced lag
maximum drive prompt advance
                                      complex heavy unmemorable
 fast hurry rush satisfying feel
                                             obscure
              brisk rapid exciting
exceptional
                                                        wait
                                                  why




what is the end user’s experience?
It’s in the eye of the beholder
 •   Perception and usability are important
     performance metrics.
 •   More relevant than actual unload-to-onload
     time.
 •   Definition of quot;user onloadquot; is undefined or
     varies from one web page to the next.
2
“80% of consequences come from
                 20% of causes”
                   —Vilfredo Pareto
The Importance of Front-End Performance
The Importance of Front-End Performance



Back-end

= 5%
The Importance of Front-End Performance



                               Front-end

                               = 95%
The Importance of Front-End Performance




        Even here, front-end = 88%
Back-end vs. Front-end
                Empty Cache   Full Cache
amazon.com         82%           86%
   aol.com         94%           86%
  cnn.com          81%           92%
  ebay.com         98%           92%
 google.com        86%           64%
  msn.com          97%           95%
myspace.com        96%           86%
wikipedia.org      80%           88%
 yahoo.com         95%           88%
youtube.com        97%           95%
Until now our
optimization efforts
have targeted the tip
of the iceberg.
http://yuiblog.com/blog/2006/11/28/performance-research-part-1/
http://yuiblog.com/blog/2006/11/28/performance-research-part-1/
3
Cache
Empty vs. Full Cache
                      2                 3
    1
                                   user re-requests
 user requests    user requests
                                   www.yahoo.com
www.yahoo.com    other web pages
Empty vs. Full Cache
                           2                                       3
       1
                          dns lookup
                                 html
                               image
                               image
                          dns lookup
                                script
                               image
                               image
                               image
                               image
                                                             user re-requests
   user requests       user requests
                               image
                               image
                                                             www.yahoo.com
  www.yahoo.com       other web pages
                               image
                               image
                                script
                               image
                               image
                               image
                               image
                               image
                               image
                               image
                               image
                                script
                          dns lookup
                               image
                               image
                               image
                               image
                               image
                          dns lookup
                                script
                                script
                           stylesheet
                               image

with an empty cache                      0   0.5   1   1.5     2    2.5   3
Empty vs. Full Cache
                           2                                       3
       1
                          dns lookup
                                 html
                               image
                               image
                          dns lookup
                                script
                               image
                               image
                               image
                               image
                                                             user re-requests
   user requests       user requests
                               image
                               image
                                                             www.yahoo.com
  www.yahoo.com       other web pages
                               image
                               image
                                script
                               image
                               image
                               image
                               image
                               image
                               image
                               image
                               image
                                script
                          dns lookup
                               image
                               image
                               image
                               image
                               image
                          dns lookup
                                script
                                script
                           stylesheet
                               image

with an empty cache                      0   0.5   1   1.5     2    2.5   3
Empty vs. Full Cache
                      2                 3
    1
                                   user re-requests
 user requests    user requests
                                   www.yahoo.com
www.yahoo.com    other web pages
Empty vs. Full Cache
                      2                 3
    1
                                   user re-requests
 user requests    user requests
                                   www.yahoo.com
www.yahoo.com    other web pages
Empty vs. Full Cache
                      2                 3
    1
                                   user re-requests
 user requests    user requests
                                   www.yahoo.com
www.yahoo.com    other web pages
Empty vs. Full Cache
Empty vs. Full Cache




empty = 2.4 seconds
full = 0.9 second
full = 83% fewer bytes.
full = 90% fewer HTTP requests.
3b
  (sadly, the cache
doesn’t work as well
 as we wish it did.)
How much does caching
  benefit our users?
How much does caching
  benefit our users?
Q1: What % of unique users
view a page with an empty cache?
How much does caching
  benefit our users?
Q1: What % of unique users
view a page with an empty cache?


Q2: What % of page views are
with an empty cache?
Browser Cache Experiment

           Add a new image to your page
<img src=quot;image/blank.gifquot; height=quot;1quot; width=quot;1quot;/>



                   }1 px


        with the following response headers:
    Expires: Thu, 15 Apr 2004 20:00:00 GMT
    Last-Modified: Wed, 28 Sep 2006 23:49:57 GMT
Browser Cache Experiment

           Add a new image to your page
<img src=quot;image/blank.gifquot; height=quot;1quot; width=quot;1quot;/>

                          }1 px




        with the following response headers:
    Expires: Thu, 15 Apr 2004 20:00:00 GMT
    Last-Modified: Wed, 28 Sep 2006 23:49:57 GMT
Browser Cache Experiment
Two possible response codes:

  200 – The browser does not have the
         image in its cache.

  304 – The browser has the image in its
         cache, but needs to verify the last
         modified date.
Browser Cache Experiment
                        # unique users with at least
Q1: What % of
                             one 200 response
unique users view          total # unique users
with an empty cache?


                          total # of 200 responses
Q2: What % of page
                       # of 200 + # of 304 responses
views are with an
empty cache?

                                      }1 px
Surprising Results
1.00



0.75



0.50



0.25




       1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17

                           uu w/ empty cache
                           pv w/ empty cache
Surprising Results
1.00



0.75



0.50



0.25




       1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17

                           uu w/ empty cache
                           pv w/ empty cache
40-60% UUs w/ empty cache
20% PVs w/ empty cache
Experiment Takeaways

   1. The empty cache user
      experience is more
      prevalent than you think!
   2. Therefore, optimize for
      both full cache and
      empty cache experience.
http://yuiblog.com/blog/2007/01/04/performance-research-part-2/
http://yuiblog.com/blog/2007/01/04/performance-research-part-2/
4

Cookies
Set Scope Correctly
         1
      user requests
     www.yahoo.com




HTTP response header sent by the web server:
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Set-Cookie: C=abcdefghijklmnopqrstuvwxyz; domain=.yahoo.com
Because broad scope adds up
                                                   2
        1
                                              user requests
     user requests
                                           finance.yahoo.com
    www.yahoo.com




HTTP request header sent by the browser:
GET / HTTP/1.1
Host: finance.yahoo.com
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; …
Cookie: C=abcdefghijklmnopqrstuvwxyz;
Impact on Response Time
   Cookie Size    Time   Delta

   0 bytes       78 ms    0 ms

   500 bytes     79 ms   +1 ms

   1000 bytes    94 ms +16 ms

   1500 bytes    109 ms +31 ms

   2000 bytes    125 ms +47 ms

   2500 bytes    141 ms +63 ms

   3000 bytes    156 ms +78 ms
Cookie Sizes across the Web

            Total Cookie Size
 Amazon              60 bytes
 Google              72 bytes
 Yahoo             122 bytes
 CNN               184 bytes
 YouTube           218 bytes
 MSN               268 bytes
 eBay              331 bytes
 MySpace           500 bytes
Experiment Takeaways

• eliminate unnecessary cookies
• keep cookie sizes low
• set cookies at the appropriate
  domain (or sub-domain) level
• set Expires date appropriately
http://yuiblog.com/blog/2007/03/01/performance-research-part-3
http://yuiblog.com/blog/2007/03/01/performance-research-part-3
Parallel Downloads
Two components    in parallel   per hostname




                     GIF
                                         GIF
GIF    GIF
                                         GIF

                     GIF




                 per HTTP/1.1
Parallel Downloads
Parallel Downloads
                         html
                    component
                    component


Two in parallel
                    component
                    component
                    component
                    component
                    component
                    component
                    component
                    component

                                0   0.425   0.850   1.275   1.700




Four in parallel



Eight in parallel
Parallel Downloads
                         html
                    component
                    component


Two in parallel
                    component
                    component
                    component
                    component
                    component
                    component
                    component
                    component

                                0   0.425   0.850   1.275   1.700
                         html
                    component
                    component
                    component


Four in parallel    component
                    component
                    component
                    component
                    component
                    component
                    component

                                0   0.375   0.750   1.125   1.500




Eight in parallel
Parallel Downloads
                         html
                    component
                    component


Two in parallel
                    component
                    component
                    component
                    component
                    component
                    component
                    component
                    component

                                0   0.425   0.850   1.275   1.700
                         html
                    component
                    component
                    component


Four in parallel    component
                    component
                    component
                    component
                    component
                    component
                    component

                                0   0.375   0.750   1.125   1.500

                         html
                    component
                    component
                    component
                    component
                    component



Eight in parallel
                    component
                    component
                    component
                    component
                    component

                                0   0.375   0.750   1.125   1.500
Maximizing Parallel Downloads


response time
  (seconds)




                aliases
Maximizing Parallel Downloads
                1.4       36 x 36 px (0.9 Kb)      116 x 61 px (3.4 Kb)
                1.2

                1.0

                0.8
response time
  (seconds)
                0.6

                0.4

                0.2

                 0
                      1       2            4            5            10


                                         aliases
Maximizing Parallel Downloads
            1.4
                        36 x 36 px (0.9 Kb)   116 x 61 px (3.4 Kb)   average


            1.2




            1.0




            0.8
response time
  (seconds)
            0.6




            0.4




            0.2




                0
                    1            2                4                  5         10



                                                 aliases
Maximizing Parallel Downloads
            1.4
                        36 x 36 px (0.9 Kb)   116 x 61 px (3.4 Kb)   average


            1.2




            1.0




            0.8
response time
  (seconds)
            0.6




            0.4




            0.2




                0
                    1            2                4                  5         10



  rule of thumb: use at least 2 but no more than 4 aliases
Experiment Takeaways

•   beware the effects of CPU thrashing
•   DNS lookup times vary across ISPs and
    geographic locations
•   domain names may not be cached
http://yuiblog.com/blog/2007/04/11/performance-research-part-4/
http://yuiblog.com/blog/2007/04/11/performance-research-part-4/
Summary
What the 80/20 Rule Tells Us about
 Reducing HTTP Requests

   http://yuiblog.com/blog/2006/11/28/performance-research-part-1/

Browser Cache Usage – Exposed!

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

When the Cookie Crumbles

   http://yuiblog.com/blog/2007/03/01/performance-research-part-3/

Maximizing Parallel Downloads in the
 Carpool Lane

   http://yuiblog.com/blog/2007/04/11/performance-research-part-4/
Performance Fruit
(some low, some high)
Rule: Make fewer HTTP
       requests.

•   CSS sprites
•   Combined / concatenated JS and CSS files
•   image maps
•   inline (data) images
CSS Sprites



                  <span style=quot;

                  background-image: url('sprites.gif');

                  background-position: -260px -90px;quot;>

                  </span>

size of combined image is less
http://alistapart.com/articles/sprites
Combined Scripts,
   Combined Stylesheets
                      Scripts Stylesheets

amazon.com                 3            1
aol.com                   18            1
cnn.com                   11            2
ebay.com                   7            2
froogle.google.com         1            1
msn.com                    9            1
myspace.com                2            2
wikipedia.org              3            1
yahoo.com                  4            1
youtube.com                7            3
            Average      6.5          1.5
(This could well be)
   The End.
Rule: Use a CDN
       amazon.com            Akamai
       aol.com               Akamai
       cnn.com
       ebay.com        Akamai, Mirror Image
       google.com
       msn.com               SAVVIS
       myspace.com      Akamai, Limelight
       wikipedia.org
       yahoo.com             Akamai
       youtube.com


distribute your static content before
  distributing your dynamic content
Rule: Add an Expires header
                     (not just for images)
                                                          Median
                     Images Stylesheets Scripts     %
                                                            Age
amazon.com             0/62        0/1     0/3     0%    114 days
aol.com               23/43        1/1    6/18    48%    217 days
cnn.com               0/138        0/2    2/11     1%    227 days
ebay.com              16/20        0/2     0/7    55%    140 days
froogle.google.com     1/23        0/1     0/1     4%    454 days
msn.com               32/35        1/1     3/9    80%     34 days
myspace.com            0/18        0/2     0/2     0%       1 day
wikipedia.org           6/8        1/1     2/3    75%       1 day
yahoo.com             23/23        1/1     4/4    100%       n/a
youtube.com            0/32        0/3     0/7     0%     26 days
Rule: Gzip components
Rule: Gzip components
• you can aect users'
  download times
• 90%+ of browsers
  support compression
Gzip: not just for HTML
                      HTML   Scripts   Stylesheets
 amazon.com            x
 aol.com               x     some         some
 cnn.com
 ebay.com              x
 froogle.google.com    x       x           x
 msn.com               x     deflate      deflate
 myspace.com           x       x           x
 wikipedia.org         x       x           x
 yahoo.com             x       x           x
 youtube.com           x     some         some

gzip scripts, stylesheets, XML, JSON
 (not images, PDF)
YUI’s Free Hosting:

•   Aggregated files
•   With Expires headers
•   On a CDN
•   Gzipped
Rule: Put CSS at the top

•   stylesheets block rendering in IE
•   solution: put stylesheets in HEAD (per spec)
•   avoids Flash of Unstyled Content


    use link (not @import)
Slowest is
actually the
   Fastest
Rule: Choose link
      over @import


•   When you use @import you override the
    browsers’ native performance assistance.
Rule: Move scripts to the
        bottom
•   scripts block rendering of everything below
    them in the page
•   scripts block parallel downloads across all
    hostnames
What about defer?


script defer attribute is not a solution
  •   blocks rendering and downloads in FF
  •   slight blocking in IE
Rule: Avoid CSS expressions
Can be used to set CSS properties dynamically
 in IE
  width: expression(
    document.body.clientWidth  600 ?
    “600px” : “auto” );
But problematic because expressions execute
  many times
  – mouse move, key press, resize, scroll, etc.
Rule: Make JS  CSS external
Inline: bigger HTML but no HTTP request
External: cachable but extra HTTP
Variables:
  – page views per user (per session)
  – empty vs. full cache stats
  – component re-use
External is typically better
  – home pages may be an exception due to cache
    behavior of browser’s startpage.
Rule: Reduce DNS lookups
typically 20-120 ms
block parallel downloads
OS and browser both have DNS caches



                        Best practice:
                        Max 2-4 hosts
                        Use keep-alive
Rule: Minify JavaScript
                       Minify      Minify Inline?
                      External?
www.amazon.com           no             no
www.aol.com              no             no
www.cnn.com              no             no
www.ebay.com             yes            no
froogle.google.com       yes            yes
www.msn.com              yes            yes
www.myspace.com          no             no
www.wikipedia.org        no             no
www.yahoo.com            yes            yes
www.youtube.com          no             no

      don’t forget to minify inline scripts, too
Which Compressor?


•   YUI Compressor is highly regarded
•   web search “CompressorRater”
Rule: Avoid redirects
3xx status codes – mostly 301 and 302
   HTTP/1.1 301 Moved Permanently
   Location: http://yahoo.com/newuri

add Expires headers so redirect headers are
  cached
Redirects are worst form of blocking




http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
Rule: Make AJAX
    cacheable and small

•   XHR, JSON, iframe, dynamic scripts can still
    be cached, minified, and gzipped
•   a personalized response should still be
    cacheable by that person
Rule: Use GET for AJAX
       Requests

•   POST is a two-step process.
•   GET can send in one packet. Use if possible.
•   Max payload is 2K in IE.
Rule: Post-load
            Components

•   Delay all non-crucial elements.
    •   YUI Image Loader offers precise control.
    •   YUI Get makes on-the-fly JS  CSS easy.
•   Used on www.yahoo.com homepage.
Rule: Preload
             Components
•   Unconditional preload - all following onload
    •   Ex: google.com’s sprite
•   Conditional preload - based on user action
    •   Ex: search.yahoo.com’s Search Assist
•   Anticipated preload - give redesigns a boost
Rule: Minimize iFrames


•   Costly even if blank
•   Blocks page onload
•   Questionable semantic value
Rule: Smart Event
             Handles

•   Event Delegation to reduce total number
•   onAvailable (etc) for earlier access
    •   YUI Event has onAvailable,
        onContentReady,  onDomReady
Rule: Optimize CSS
              Sprites
•   Horizontal alignment is usually smaller than
    vertical.
•   Combine similar colors in a sprite to
    minimize color count.
    •   Only 256 colors can fit in a PNG8.
•   Be mobile-friendly. Avoid big gaps between
    images. Minimal impact on k-size, but takes
    more memory to decompress.
Rule: favicon.ico
•   Always provide a favicon.ico so the request
    doesn’t 404
•   And the request carries cookies
•   Mitigate by setting an expires header,
    •   (but NOT forever since you can’t rename
        the file.)
•   Keep under 1K
Rule: iPhone-Friendly Tip

•   iPhone will not cache assets larger than 25K
    •   That’s 25K uncompressed.
•   http://yuiblog.com/blog/2008/02/06/iphone-
    cacheability/
Tools for your own
      analysis
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.
Firebug

•   web development evolved
•   inspect and edit HTML, tweak and visualize
    CSS, debug and profile JavaScript
•   monitor network activity (caveat: caching)
•   Free Firefox extension
http://getfirebug.com/
YSlow

•   Extension for Firebug extension
•   Performance report card
•   HTTP/HTML summary
•   List of components in the page
•   Tools including JSLint
Conclusion
Takeaways
•   focus on the front-end
•   harvest the low-hanging fruit
    • reduce HTTP requests
    • enable caching
•   you do control user response times
•   LOFNO – be an advocate for your users
For more information:
High Performance
   Web Sites
 Essential Knowledge for
   Front-End Engineers

     by Steve Souders,
  with research from Yahoo!’s
 Performance Engineering team.
Exceptional
Performance on
     YDN
 http://developer.yahoo.com/
         performance
Articles on
 YUIBlog
http://yuiblog.com/blog/
 category/performance
Let’s keep talking...

         nate@koechley.com
  http://nate.koechley.com/blog
        “natekoechley”


Thanks again to Yahoo!’s Exceptional Performance Engineering Team
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/
nate@koechley.com
http://nate.koechley.com/blog

               natekoechley    = twitter,
delicious, flickr, tripit, last.fm, linkedin,
fireeagle, friendfeed, ... everywhere.




  Thanks again to Yahoo!’s Exceptional Performance Engineering Team

More Related Content

Viewers also liked

Client Side Performance for Back End Developers - Camb Expert Talks, Nov 2016
Client Side Performance for Back End Developers - Camb Expert Talks, Nov 2016Client Side Performance for Back End Developers - Camb Expert Talks, Nov 2016
Client Side Performance for Back End Developers - Camb Expert Talks, Nov 2016Bart Read
 
Give Responsive Design a Mobile Performance Boost
Give Responsive Design a Mobile Performance BoostGive Responsive Design a Mobile Performance Boost
Give Responsive Design a Mobile Performance BoostGrgur Grisogono
 
Has Anyone Asked a Customer?
Has Anyone Asked a Customer?Has Anyone Asked a Customer?
Has Anyone Asked a Customer?Grgur Grisogono
 
What's Coming Next in Sencha Frameworks
What's Coming Next in Sencha FrameworksWhat's Coming Next in Sencha Frameworks
What's Coming Next in Sencha FrameworksGrgur Grisogono
 
Building Cordova plugins for iOS
Building Cordova plugins for iOSBuilding Cordova plugins for iOS
Building Cordova plugins for iOSGrgur Grisogono
 
Exploring the Possibilities of Sencha and WebRTC
Exploring the Possibilities of Sencha and WebRTCExploring the Possibilities of Sencha and WebRTC
Exploring the Possibilities of Sencha and WebRTCGrgur Grisogono
 
JavaScript Basics and Best Practices - CC FE & UX
JavaScript Basics and Best Practices - CC FE & UXJavaScript Basics and Best Practices - CC FE & UX
JavaScript Basics and Best Practices - CC FE & UXJWORKS powered by Ordina
 
Google’s PRPL Web development pattern
Google’s PRPL Web development patternGoogle’s PRPL Web development pattern
Google’s PRPL Web development patternJeongkyu Shin
 
Webpack & React Performance in 16+ Steps
Webpack & React Performance in 16+ StepsWebpack & React Performance in 16+ Steps
Webpack & React Performance in 16+ StepsGrgur Grisogono
 
PRPL Pattern with Webpack and React
PRPL Pattern with Webpack and ReactPRPL Pattern with Webpack and React
PRPL Pattern with Webpack and ReactGrgur Grisogono
 
Frustration-Free Packaging of Ext JS 5 Applications
Frustration-Free Packaging of Ext JS 5 ApplicationsFrustration-Free Packaging of Ext JS 5 Applications
Frustration-Free Packaging of Ext JS 5 ApplicationsGrgur Grisogono
 
Back to the Future with ES.next
Back to the Future with ES.nextBack to the Future with ES.next
Back to the Future with ES.nextGrgur Grisogono
 
Measuring Web Performance
Measuring Web Performance Measuring Web Performance
Measuring Web Performance Dave Olsen
 
Technology stack behind Airbnb
Technology stack behind Airbnb Technology stack behind Airbnb
Technology stack behind Airbnb Rohan Khude
 
Responsive Images and Performance
Responsive Images and PerformanceResponsive Images and Performance
Responsive Images and PerformanceMaximiliano Firtman
 
La Web Salta al Mundo Físico - Web meets Physical World (spanish)
La Web Salta al Mundo Físico - Web meets Physical World (spanish)La Web Salta al Mundo Físico - Web meets Physical World (spanish)
La Web Salta al Mundo Físico - Web meets Physical World (spanish)Maximiliano Firtman
 
Extreme Web Performance for Mobile Devices - Velocity NY
Extreme Web Performance for Mobile Devices - Velocity NYExtreme Web Performance for Mobile Devices - Velocity NY
Extreme Web Performance for Mobile Devices - Velocity NYMaximiliano Firtman
 

Viewers also liked (20)

Client Side Performance for Back End Developers - Camb Expert Talks, Nov 2016
Client Side Performance for Back End Developers - Camb Expert Talks, Nov 2016Client Side Performance for Back End Developers - Camb Expert Talks, Nov 2016
Client Side Performance for Back End Developers - Camb Expert Talks, Nov 2016
 
Sencha Space review
Sencha Space reviewSencha Space review
Sencha Space review
 
Give Responsive Design a Mobile Performance Boost
Give Responsive Design a Mobile Performance BoostGive Responsive Design a Mobile Performance Boost
Give Responsive Design a Mobile Performance Boost
 
Has Anyone Asked a Customer?
Has Anyone Asked a Customer?Has Anyone Asked a Customer?
Has Anyone Asked a Customer?
 
A better CSS: Sass and Less - CC FE & UX
A better CSS: Sass and Less - CC FE & UXA better CSS: Sass and Less - CC FE & UX
A better CSS: Sass and Less - CC FE & UX
 
What's Coming Next in Sencha Frameworks
What's Coming Next in Sencha FrameworksWhat's Coming Next in Sencha Frameworks
What's Coming Next in Sencha Frameworks
 
Building Cordova plugins for iOS
Building Cordova plugins for iOSBuilding Cordova plugins for iOS
Building Cordova plugins for iOS
 
ModUX keynote
ModUX keynoteModUX keynote
ModUX keynote
 
Exploring the Possibilities of Sencha and WebRTC
Exploring the Possibilities of Sencha and WebRTCExploring the Possibilities of Sencha and WebRTC
Exploring the Possibilities of Sencha and WebRTC
 
JavaScript Basics and Best Practices - CC FE & UX
JavaScript Basics and Best Practices - CC FE & UXJavaScript Basics and Best Practices - CC FE & UX
JavaScript Basics and Best Practices - CC FE & UX
 
Google’s PRPL Web development pattern
Google’s PRPL Web development patternGoogle’s PRPL Web development pattern
Google’s PRPL Web development pattern
 
Webpack & React Performance in 16+ Steps
Webpack & React Performance in 16+ StepsWebpack & React Performance in 16+ Steps
Webpack & React Performance in 16+ Steps
 
PRPL Pattern with Webpack and React
PRPL Pattern with Webpack and ReactPRPL Pattern with Webpack and React
PRPL Pattern with Webpack and React
 
Frustration-Free Packaging of Ext JS 5 Applications
Frustration-Free Packaging of Ext JS 5 ApplicationsFrustration-Free Packaging of Ext JS 5 Applications
Frustration-Free Packaging of Ext JS 5 Applications
 
Back to the Future with ES.next
Back to the Future with ES.nextBack to the Future with ES.next
Back to the Future with ES.next
 
Measuring Web Performance
Measuring Web Performance Measuring Web Performance
Measuring Web Performance
 
Technology stack behind Airbnb
Technology stack behind Airbnb Technology stack behind Airbnb
Technology stack behind Airbnb
 
Responsive Images and Performance
Responsive Images and PerformanceResponsive Images and Performance
Responsive Images and Performance
 
La Web Salta al Mundo Físico - Web meets Physical World (spanish)
La Web Salta al Mundo Físico - Web meets Physical World (spanish)La Web Salta al Mundo Físico - Web meets Physical World (spanish)
La Web Salta al Mundo Físico - Web meets Physical World (spanish)
 
Extreme Web Performance for Mobile Devices - Velocity NY
Extreme Web Performance for Mobile Devices - Velocity NYExtreme Web Performance for Mobile Devices - Velocity NY
Extreme Web Performance for Mobile Devices - Velocity NY
 

Similar to High Performance Web Sites - 2008

腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站fish_yy
 
腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站jonny yan
 
14 Tips For Faster Web Apps
14 Tips For Faster Web Apps14 Tips For Faster Web Apps
14 Tips For Faster Web Appsashok kumar
 
Web Performance 101 - Gil Givati
Web Performance 101 - Gil GivatiWeb Performance 101 - Gil Givati
Web Performance 101 - Gil GivatiMika Josting
 
Front End page speed performance improvements for Drupal
Front End page speed performance improvements for DrupalFront End page speed performance improvements for Drupal
Front End page speed performance improvements for DrupalAndy Kucharski
 
Front End page speed performance improvements for Drupal
Front End page speed performance improvements for DrupalFront End page speed performance improvements for Drupal
Front End page speed performance improvements for DrupalPromet Source
 
Scaling Drupal: Not IF... HOW
Scaling Drupal: Not IF... HOWScaling Drupal: Not IF... HOW
Scaling Drupal: Not IF... HOWTreehouse Agency
 
Page Performance
Page PerformancePage Performance
Page Performanceatorreno
 
Web Performance 101
Web Performance 101Web Performance 101
Web Performance 101Uri Lavi
 
브라우저에 날개를 달자
브라우저에 날개를 달자브라우저에 날개를 달자
브라우저에 날개를 달자NAVER SHOPPING
 
Capacity Planning For Web Operations Presentation
Capacity Planning For Web Operations PresentationCapacity Planning For Web Operations Presentation
Capacity Planning For Web Operations Presentationjward5519
 
Capacity Planning For Web Operations Presentation
Capacity Planning For Web Operations PresentationCapacity Planning For Web Operations Presentation
Capacity Planning For Web Operations Presentationjward5519
 
Wordpress optimization
Wordpress optimizationWordpress optimization
Wordpress optimizationAlmog Baku
 
Voices that matter: High Performance Web Sites
Voices that matter: High Performance Web SitesVoices that matter: High Performance Web Sites
Voices that matter: High Performance Web SitesStoyan Stefanov
 
My Site is slow - Drupal Camp London 2013
My Site is slow - Drupal Camp London 2013My Site is slow - Drupal Camp London 2013
My Site is slow - Drupal Camp London 2013hernanibf
 
Site Performance Optimization - Joomla!
Site Performance Optimization - Joomla!Site Performance Optimization - Joomla!
Site Performance Optimization - Joomla!Hans Kuijpers
 
Rails Performance Tricks and Treats
Rails Performance Tricks and TreatsRails Performance Tricks and Treats
Rails Performance Tricks and TreatsMarshall Yount
 
Web前端性能分析工具导引
Web前端性能分析工具导引Web前端性能分析工具导引
Web前端性能分析工具导引冰 郭
 
Innovation dank DevOps (DevOpsCon Berlin 2015)
Innovation dank DevOps (DevOpsCon Berlin 2015)Innovation dank DevOps (DevOpsCon Berlin 2015)
Innovation dank DevOps (DevOpsCon Berlin 2015)Wooga
 
Cvcc performance tuning
Cvcc performance tuningCvcc performance tuning
Cvcc performance tuningJohn McCaffrey
 

Similar to High Performance Web Sites - 2008 (20)

腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站
 
腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站腾讯大讲堂09 如何建设高性能网站
腾讯大讲堂09 如何建设高性能网站
 
14 Tips For Faster Web Apps
14 Tips For Faster Web Apps14 Tips For Faster Web Apps
14 Tips For Faster Web Apps
 
Web Performance 101 - Gil Givati
Web Performance 101 - Gil GivatiWeb Performance 101 - Gil Givati
Web Performance 101 - Gil Givati
 
Front End page speed performance improvements for Drupal
Front End page speed performance improvements for DrupalFront End page speed performance improvements for Drupal
Front End page speed performance improvements for Drupal
 
Front End page speed performance improvements for Drupal
Front End page speed performance improvements for DrupalFront End page speed performance improvements for Drupal
Front End page speed performance improvements for Drupal
 
Scaling Drupal: Not IF... HOW
Scaling Drupal: Not IF... HOWScaling Drupal: Not IF... HOW
Scaling Drupal: Not IF... HOW
 
Page Performance
Page PerformancePage Performance
Page Performance
 
Web Performance 101
Web Performance 101Web Performance 101
Web Performance 101
 
브라우저에 날개를 달자
브라우저에 날개를 달자브라우저에 날개를 달자
브라우저에 날개를 달자
 
Capacity Planning For Web Operations Presentation
Capacity Planning For Web Operations PresentationCapacity Planning For Web Operations Presentation
Capacity Planning For Web Operations Presentation
 
Capacity Planning For Web Operations Presentation
Capacity Planning For Web Operations PresentationCapacity Planning For Web Operations Presentation
Capacity Planning For Web Operations Presentation
 
Wordpress optimization
Wordpress optimizationWordpress optimization
Wordpress optimization
 
Voices that matter: High Performance Web Sites
Voices that matter: High Performance Web SitesVoices that matter: High Performance Web Sites
Voices that matter: High Performance Web Sites
 
My Site is slow - Drupal Camp London 2013
My Site is slow - Drupal Camp London 2013My Site is slow - Drupal Camp London 2013
My Site is slow - Drupal Camp London 2013
 
Site Performance Optimization - Joomla!
Site Performance Optimization - Joomla!Site Performance Optimization - Joomla!
Site Performance Optimization - Joomla!
 
Rails Performance Tricks and Treats
Rails Performance Tricks and TreatsRails Performance Tricks and Treats
Rails Performance Tricks and Treats
 
Web前端性能分析工具导引
Web前端性能分析工具导引Web前端性能分析工具导引
Web前端性能分析工具导引
 
Innovation dank DevOps (DevOpsCon Berlin 2015)
Innovation dank DevOps (DevOpsCon Berlin 2015)Innovation dank DevOps (DevOpsCon Berlin 2015)
Innovation dank DevOps (DevOpsCon Berlin 2015)
 
Cvcc performance tuning
Cvcc performance tuningCvcc performance tuning
Cvcc performance tuning
 

Recently uploaded

Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 

Recently uploaded (20)

Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 

High Performance Web Sites - 2008

  • 1. High Performance Web Sites Tips for faster pages Nate Koechley natek@yahoo-inc.com nate.koechley.com/blog developer.yahoo.com/yui
  • 2. Y! Performance Research Engineering Team • Tenni Theurer, Nicole Sullivan, Philip Tellis, Stoyan Stefanov, Swapni Shinde, Wayne Shea, Anand Kishore (Intern)
  • 4. 1: Because fast is better
  • 5. 5
  • 6.
  • 7.
  • 8. 8
  • 9. 9
  • 10. 10
  • 11. 11
  • 12. 2: Because sites are bigger
  • 13. Modern web sites & applications have changed architecturally.
  • 14. From 2003 to 2008: 97K to 312K. 25.7 to 49.9 objects.
  • 15. In past 12 months, Top 1000 sites: From 250K to 310.4K. WebSiteOptimization.com/speed/tweak/average-web-page
  • 17. Two Flavors: Response Time & System Efficiency
  • 18. Our focus is the response time of web products
  • 21. perceived response time slow crawl boring snail performance speed enjoyable stagnant unexceptional urgent instant accelerate yawn perceptionunresponsive impatient delay snap achievement moderate blah subdue better improve action pleasant drag apathetic prolong slack load sluggish sleepy pace quick promote swift cool late unexciting reduced lag maximum drive prompt advance complex heavy unmemorable fast hurry rush satisfying feel obscure brisk rapid exciting exceptional wait why
  • 22. perceived response time slow crawl boring snail stagnant performance speed enjoyable unexceptional yawn urgent instant accelerate unresponsive impatient delay perception snap achievement moderate blah subdue drag apathetic better improve action pleasant prolong slack load sluggish sleepy pace quick promote swift cool late unexciting reduced lag maximum drive prompt advance complex heavy unmemorable fast hurry rush satisfying feel obscure brisk rapid exciting exceptional wait why what is the end user’s experience?
  • 23. It’s in the eye of the beholder • Perception and usability are important performance metrics. • More relevant than actual unload-to-onload time. • Definition of quot;user onloadquot; is undefined or varies from one web page to the next.
  • 24. 2 “80% of consequences come from 20% of causes” —Vilfredo Pareto
  • 25. The Importance of Front-End Performance
  • 26. The Importance of Front-End Performance Back-end = 5%
  • 27. The Importance of Front-End Performance Front-end = 95%
  • 28. The Importance of Front-End Performance Even here, front-end = 88%
  • 29.
  • 30. Back-end vs. Front-end Empty Cache Full Cache amazon.com 82% 86% aol.com 94% 86% cnn.com 81% 92% ebay.com 98% 92% google.com 86% 64% msn.com 97% 95% myspace.com 96% 86% wikipedia.org 80% 88% yahoo.com 95% 88% youtube.com 97% 95%
  • 31. Until now our optimization efforts have targeted the tip of the iceberg.
  • 35. Empty vs. Full Cache 2 3 1 user re-requests user requests user requests www.yahoo.com www.yahoo.com other web pages
  • 36. Empty vs. Full Cache 2 3 1 dns lookup html image image dns lookup script image image image image user re-requests user requests user requests image image www.yahoo.com www.yahoo.com other web pages image image script image image image image image image image image script dns lookup image image image image image dns lookup script script stylesheet image with an empty cache 0 0.5 1 1.5 2 2.5 3
  • 37. Empty vs. Full Cache 2 3 1 dns lookup html image image dns lookup script image image image image user re-requests user requests user requests image image www.yahoo.com www.yahoo.com other web pages image image script image image image image image image image image script dns lookup image image image image image dns lookup script script stylesheet image with an empty cache 0 0.5 1 1.5 2 2.5 3
  • 38. Empty vs. Full Cache 2 3 1 user re-requests user requests user requests www.yahoo.com www.yahoo.com other web pages
  • 39. Empty vs. Full Cache 2 3 1 user re-requests user requests user requests www.yahoo.com www.yahoo.com other web pages
  • 40. Empty vs. Full Cache 2 3 1 user re-requests user requests user requests www.yahoo.com www.yahoo.com other web pages
  • 42. Empty vs. Full Cache empty = 2.4 seconds full = 0.9 second full = 83% fewer bytes. full = 90% fewer HTTP requests.
  • 43. 3b (sadly, the cache doesn’t work as well as we wish it did.)
  • 44. How much does caching benefit our users?
  • 45. How much does caching benefit our users? Q1: What % of unique users view a page with an empty cache?
  • 46. How much does caching benefit our users? Q1: What % of unique users view a page with an empty cache? Q2: What % of page views are with an empty cache?
  • 47. Browser Cache Experiment Add a new image to your page <img src=quot;image/blank.gifquot; height=quot;1quot; width=quot;1quot;/> }1 px with the following response headers: Expires: Thu, 15 Apr 2004 20:00:00 GMT Last-Modified: Wed, 28 Sep 2006 23:49:57 GMT
  • 48. Browser Cache Experiment Add a new image to your page <img src=quot;image/blank.gifquot; height=quot;1quot; width=quot;1quot;/> }1 px with the following response headers: Expires: Thu, 15 Apr 2004 20:00:00 GMT Last-Modified: Wed, 28 Sep 2006 23:49:57 GMT
  • 49. Browser Cache Experiment Two possible response codes: 200 – The browser does not have the image in its cache. 304 – The browser has the image in its cache, but needs to verify the last modified date.
  • 50. Browser Cache Experiment # unique users with at least Q1: What % of one 200 response unique users view total # unique users with an empty cache? total # of 200 responses Q2: What % of page # of 200 + # of 304 responses views are with an empty cache? }1 px
  • 51. Surprising Results 1.00 0.75 0.50 0.25 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 uu w/ empty cache pv w/ empty cache
  • 52. Surprising Results 1.00 0.75 0.50 0.25 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 uu w/ empty cache pv w/ empty cache
  • 53. 40-60% UUs w/ empty cache 20% PVs w/ empty cache
  • 54. Experiment Takeaways 1. The empty cache user experience is more prevalent than you think! 2. Therefore, optimize for both full cache and empty cache experience.
  • 58. Set Scope Correctly 1 user requests www.yahoo.com HTTP response header sent by the web server: HTTP/1.1 200 OK Content-Type: text/html; charset=utf-8 Set-Cookie: C=abcdefghijklmnopqrstuvwxyz; domain=.yahoo.com
  • 59. Because broad scope adds up 2 1 user requests user requests finance.yahoo.com www.yahoo.com HTTP request header sent by the browser: GET / HTTP/1.1 Host: finance.yahoo.com User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; … Cookie: C=abcdefghijklmnopqrstuvwxyz;
  • 60. Impact on Response Time Cookie Size Time Delta 0 bytes 78 ms 0 ms 500 bytes 79 ms +1 ms 1000 bytes 94 ms +16 ms 1500 bytes 109 ms +31 ms 2000 bytes 125 ms +47 ms 2500 bytes 141 ms +63 ms 3000 bytes 156 ms +78 ms
  • 61. Cookie Sizes across the Web Total Cookie Size Amazon 60 bytes Google 72 bytes Yahoo 122 bytes CNN 184 bytes YouTube 218 bytes MSN 268 bytes eBay 331 bytes MySpace 500 bytes
  • 62. Experiment Takeaways • eliminate unnecessary cookies • keep cookie sizes low • set cookies at the appropriate domain (or sub-domain) level • set Expires date appropriately
  • 65. Parallel Downloads Two components in parallel per hostname GIF GIF GIF GIF GIF GIF per HTTP/1.1
  • 67. Parallel Downloads html component component Two in parallel component component component component component component component component 0 0.425 0.850 1.275 1.700 Four in parallel Eight in parallel
  • 68. Parallel Downloads html component component Two in parallel component component component component component component component component 0 0.425 0.850 1.275 1.700 html component component component Four in parallel component component component component component component component 0 0.375 0.750 1.125 1.500 Eight in parallel
  • 69. Parallel Downloads html component component Two in parallel component component component component component component component component 0 0.425 0.850 1.275 1.700 html component component component Four in parallel component component component component component component component 0 0.375 0.750 1.125 1.500 html component component component component component Eight in parallel component component component component component 0 0.375 0.750 1.125 1.500
  • 70. Maximizing Parallel Downloads response time (seconds) aliases
  • 71. Maximizing Parallel Downloads 1.4 36 x 36 px (0.9 Kb) 116 x 61 px (3.4 Kb) 1.2 1.0 0.8 response time (seconds) 0.6 0.4 0.2 0 1 2 4 5 10 aliases
  • 72. Maximizing Parallel Downloads 1.4 36 x 36 px (0.9 Kb) 116 x 61 px (3.4 Kb) average 1.2 1.0 0.8 response time (seconds) 0.6 0.4 0.2 0 1 2 4 5 10 aliases
  • 73. Maximizing Parallel Downloads 1.4 36 x 36 px (0.9 Kb) 116 x 61 px (3.4 Kb) average 1.2 1.0 0.8 response time (seconds) 0.6 0.4 0.2 0 1 2 4 5 10 rule of thumb: use at least 2 but no more than 4 aliases
  • 74. Experiment Takeaways • beware the effects of CPU thrashing • DNS lookup times vary across ISPs and geographic locations • domain names may not be cached
  • 77. Summary What the 80/20 Rule Tells Us about Reducing HTTP Requests http://yuiblog.com/blog/2006/11/28/performance-research-part-1/ Browser Cache Usage – Exposed! http://yuiblog.com/blog/2007/01/04/performance-research-part-2/ When the Cookie Crumbles http://yuiblog.com/blog/2007/03/01/performance-research-part-3/ Maximizing Parallel Downloads in the Carpool Lane http://yuiblog.com/blog/2007/04/11/performance-research-part-4/
  • 79. Rule: Make fewer HTTP requests. • CSS sprites • Combined / concatenated JS and CSS files • image maps • inline (data) images
  • 80. CSS Sprites <span style=quot; background-image: url('sprites.gif'); background-position: -260px -90px;quot;> </span> size of combined image is less http://alistapart.com/articles/sprites
  • 81. Combined Scripts, Combined Stylesheets Scripts Stylesheets amazon.com 3 1 aol.com 18 1 cnn.com 11 2 ebay.com 7 2 froogle.google.com 1 1 msn.com 9 1 myspace.com 2 2 wikipedia.org 3 1 yahoo.com 4 1 youtube.com 7 3 Average 6.5 1.5
  • 82. (This could well be) The End.
  • 83. Rule: Use a CDN amazon.com Akamai aol.com Akamai cnn.com ebay.com Akamai, Mirror Image google.com msn.com SAVVIS myspace.com Akamai, Limelight wikipedia.org yahoo.com Akamai youtube.com distribute your static content before distributing your dynamic content
  • 84. Rule: Add an Expires header (not just for images) Median Images Stylesheets Scripts % Age amazon.com 0/62 0/1 0/3 0% 114 days aol.com 23/43 1/1 6/18 48% 217 days cnn.com 0/138 0/2 2/11 1% 227 days ebay.com 16/20 0/2 0/7 55% 140 days froogle.google.com 1/23 0/1 0/1 4% 454 days msn.com 32/35 1/1 3/9 80% 34 days myspace.com 0/18 0/2 0/2 0% 1 day wikipedia.org 6/8 1/1 2/3 75% 1 day yahoo.com 23/23 1/1 4/4 100% n/a youtube.com 0/32 0/3 0/7 0% 26 days
  • 86. Rule: Gzip components • you can aect users' download times • 90%+ of browsers support compression
  • 87. Gzip: not just for HTML HTML Scripts Stylesheets amazon.com x aol.com x some some cnn.com ebay.com x froogle.google.com x x x msn.com x deflate deflate myspace.com x x x wikipedia.org x x x yahoo.com x x x youtube.com x some some gzip scripts, stylesheets, XML, JSON (not images, PDF)
  • 88.
  • 89. YUI’s Free Hosting: • Aggregated files • With Expires headers • On a CDN • Gzipped
  • 90. Rule: Put CSS at the top • stylesheets block rendering in IE • solution: put stylesheets in HEAD (per spec) • avoids Flash of Unstyled Content use link (not @import)
  • 92. Rule: Choose link over @import • When you use @import you override the browsers’ native performance assistance.
  • 93. Rule: Move scripts to the bottom • scripts block rendering of everything below them in the page • scripts block parallel downloads across all hostnames
  • 94. What about defer? script defer attribute is not a solution • blocks rendering and downloads in FF • slight blocking in IE
  • 95. Rule: Avoid CSS expressions Can be used to set CSS properties dynamically in IE width: expression( document.body.clientWidth 600 ? “600px” : “auto” ); But problematic because expressions execute many times – mouse move, key press, resize, scroll, etc.
  • 96. Rule: Make JS CSS external Inline: bigger HTML but no HTTP request External: cachable but extra HTTP Variables: – page views per user (per session) – empty vs. full cache stats – component re-use External is typically better – home pages may be an exception due to cache behavior of browser’s startpage.
  • 97. Rule: Reduce DNS lookups typically 20-120 ms block parallel downloads OS and browser both have DNS caches Best practice: Max 2-4 hosts Use keep-alive
  • 98. Rule: Minify JavaScript Minify Minify Inline? External? www.amazon.com no no www.aol.com no no www.cnn.com no no www.ebay.com yes no froogle.google.com yes yes www.msn.com yes yes www.myspace.com no no www.wikipedia.org no no www.yahoo.com yes yes www.youtube.com no no don’t forget to minify inline scripts, too
  • 99. Which Compressor? • YUI Compressor is highly regarded • web search “CompressorRater”
  • 100. Rule: Avoid redirects 3xx status codes – mostly 301 and 302 HTTP/1.1 301 Moved Permanently Location: http://yahoo.com/newuri add Expires headers so redirect headers are cached Redirects are worst form of blocking http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
  • 101. Rule: Make AJAX cacheable and small • XHR, JSON, iframe, dynamic scripts can still be cached, minified, and gzipped • a personalized response should still be cacheable by that person
  • 102. Rule: Use GET for AJAX Requests • POST is a two-step process. • GET can send in one packet. Use if possible. • Max payload is 2K in IE.
  • 103. Rule: Post-load Components • Delay all non-crucial elements. • YUI Image Loader offers precise control. • YUI Get makes on-the-fly JS CSS easy. • Used on www.yahoo.com homepage.
  • 104. Rule: Preload Components • Unconditional preload - all following onload • Ex: google.com’s sprite • Conditional preload - based on user action • Ex: search.yahoo.com’s Search Assist • Anticipated preload - give redesigns a boost
  • 105. Rule: Minimize iFrames • Costly even if blank • Blocks page onload • Questionable semantic value
  • 106. Rule: Smart Event Handles • Event Delegation to reduce total number • onAvailable (etc) for earlier access • YUI Event has onAvailable, onContentReady, onDomReady
  • 107. Rule: Optimize CSS Sprites • Horizontal alignment is usually smaller than vertical. • Combine similar colors in a sprite to minimize color count. • Only 256 colors can fit in a PNG8. • Be mobile-friendly. Avoid big gaps between images. Minimal impact on k-size, but takes more memory to decompress.
  • 108. Rule: favicon.ico • Always provide a favicon.ico so the request doesn’t 404 • And the request carries cookies • Mitigate by setting an expires header, • (but NOT forever since you can’t rename the file.) • Keep under 1K
  • 109. Rule: iPhone-Friendly Tip • iPhone will not cache assets larger than 25K • That’s 25K uncompressed. • http://yuiblog.com/blog/2008/02/06/iphone- cacheability/
  • 110. Tools for your own analysis
  • 111. IBM Page Detailer Packet sniffer. Windows only (IE, FF, any .exe). Free trial, $300 license http://alphaworks.ibm.com/tech/ pagedetailer
  • 112. LiveHTTPHeaders View HTTP headers. Firefox extension. Free.
  • 113. Firebug • web development evolved • inspect and edit HTML, tweak and visualize CSS, debug and profile JavaScript • monitor network activity (caveat: caching) • Free Firefox extension
  • 115. YSlow • Extension for Firebug extension • Performance report card • HTTP/HTML summary • List of components in the page • Tools including JSLint
  • 116.
  • 118. Takeaways • focus on the front-end • harvest the low-hanging fruit • reduce HTTP requests • enable caching • you do control user response times • LOFNO – be an advocate for your users
  • 120. High Performance Web Sites Essential Knowledge for Front-End Engineers by Steve Souders, with research from Yahoo!’s Performance Engineering team.
  • 121. Exceptional Performance on YDN http://developer.yahoo.com/ performance
  • 123. Let’s keep talking... nate@koechley.com http://nate.koechley.com/blog “natekoechley” Thanks again to Yahoo!’s Exceptional Performance Engineering Team
  • 124. 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
  • 125. 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/
  • 126. nate@koechley.com http://nate.koechley.com/blog natekoechley = twitter, delicious, flickr, tripit, last.fm, linkedin, fireeagle, friendfeed, ... everywhere. Thanks again to Yahoo!’s Exceptional Performance Engineering Team