際際滷

際際滷Share a Scribd company logo
Even Faster Web Sitesstevesouders.com/docs/wdx-20101014.pptxDisclaimer: This content does not necessarily reflect the                   opinions of my employer.flickr.com/photos/ddfic/722634166/
how exciting is web dev?flickr.com/photos/joshme17/1557627176/
darn exciting!flickr.com/photos/dougbrown47/4468708942//
flickr.com/photos/halans/5079721630/
darn exciting!flickr.com/photos/dougbrown47/4468708942//
flickr.com/photos/bekahstargazing/318930460/
 carsonified.com/blog/business/fred-wilsons-10-golden-principles-of-successful-web-apps/#1. Speed:        First and foremost, we believe that speed is more than a feature. Speed is the most important feature.
en.oreilly.com/velocity2009/public/schedule/detail/8523
en.oreilly.com/velocity2009/public/schedule/detail/8523
Yahoo!	0.4 sec slower	traffic  5-9%slideshare.net/stoyan/dont-make-me-wait-or-building-highperformance-web-applicationsslideshare.net/stoyan/yslow-20-presentation
blog.mozilla.com/metrics/category/website-optimization/shaved 2.2 seconds off the average page load time and increased download conversions by 15.4%!
en.oreilly.com/velocity2009/public/schedule/detail/7709blog.mozilla.com/metrics/category/website-optimization/shaved 2.2 seconds off the average page load time and increased download conversions by 15.4%!
en.oreilly.com/velocity2008/public/schedule/detail/3632
Site speed in search rankScreen shot of blog postwe've decided to take site speed into account in our search rankings.googlewebmastercentral.blogspot.com/2010/04/using-site-speed-in-web-search-ranking.html
Web Directions South - Even Faster Web Sites
Bothcombine scriptscombine stylesheetsadd an Expires headergzip responsesput stylesheets at the topput scripts at the bottomavoid CSS expressionsmake JS and CSS externalreduce DNS lookupsminify JS and CSSavoid redirectsremove duplicate scriptsmake Ajax cacheablereduce cookie sizeuse cookie-free domainsdon't scale imagesYSlowuse CSS spritesuse a CDNconfigure ETagsuse GET for Ajax requestsreduce # of DOM elementsno 404savoid image filtersoptimize faviconPage Speeddefer loading JSremove unused CSSuse efficient CSS selectorsoptimize imagesoptimize order of CSS & JSshard domainsleverage proxy caching
Web Directions South - Even Faster Web Sites
Web Directions South - Even Faster Web Sites
WebPerformanceOptimizationWPOdrives trafficimproves UXincreases revenuereduces costsflickr.com/photos/pedromourapinheiro/3123885534/
What makes sites feel slow?flickr.com/photos/kevincollins/234678305/
(lack of)Progressive Rendering[next page being loaded]flickr.com/photos/kevincollins/234678305/
Web Directions South - Even Faster Web Sites
Web Directions South - Even Faster Web Sites
Web Directions South - Even Faster Web Sites
Search
Sports
News
Shopping
Progressive Enhancementdeliver HTMLdefer JSavoid DOMdecorate later
Progressive EnhancementProgressive Rendering
<script src=/slideshow/web-directions-south-even-faster-web-sites/5495374/"A.js"> blocks parallel downloads and rendering9 secs: IE 6-7, FF 3.0, Chr 1, Op 9-10, Saf 37 secs: IE 8-9, FF 3.6, Chr6, Saf 4Why focus on JavaScript?
29% avg229 K avginitial payload and execution
split the initial payloadsplit your JavaScript between what's needed to render the page and everything elsedefer "everything else"split manually (Page Speed), automatically (Microsoft Doloto)load scripts without blockinghttp://www.flickr.com/photos/devcentre/108032900/
Loading Scripts Without BlockingXHR EvalXHR InjectionScript in IframeScript DOM ElementScript Deferdocument.write Script Tag
XHR EvalvarxhrObj = getXHRObject();xhrObj.onreadystatechange =   function() {     if ( xhrObj.readyState != 4 ) return;eval(xhrObj.responseText);  };xhrObj.open('GET', 'A.js', true);xhrObj.send('');script & page must be same domain
Script DOM Elementvar se = document.createElement('script');se.src = /slideshow/web-directions-south-even-faster-web-sites/5495374/& script & page domains can differmay not preserve execution order
MeeboIframed JSvar iframe = document.createElement('iframe');document.body.appendChild(iframe);var doc = iframe.contentWindow.document;doc.open().write('<body onload="insertJS()">');doc.close();loads asynchronouslydelays parents load event: FF, Chr, Safgreat for 3rd party scriptsbetter for sandboxing & securityavoids iframe src roundtrip
GMail Mobile<script type="text/javascript">/*var ... */</script>get script DOM element's textremove commentseval() when invokedinline or iframeawesome for prefetching JS that might (not) be needed
Web Directions South - Even Faster Web Sites
window.setTimeout(function(){vara=document.createElement("script"); a.src=/slideshow/web-directions-south-even-faster-web-sites/5495374/"/extern_js/f/CgJlbhz8US8_w.js"; (document.getElementById("xjsd")||document.body).appendChild(a);},0);Google Search
Bootloader.setResourceMap({"CDYbm": {"name":"js32kskxvl4c8w0848.pkg.js",  "type":"js",  "src":"http:...1fakc64i.js"},...});var c=a ? document.body : document.getElementsByTagName('head')[0];vard=document.createElement('script');d.type='text/javascript';d.src=/slideshow/web-directions-south-even-faster-web-sites/5495374/f;c.appendChild(d);Facebook
YUI.presentation.lazyScriptList = 	["http://l.yimg.com/a/combo?arc/yui/substitute_0.1.9.js&arc/yui/oop_0.1.10.js&[...58 more!...]"];d = w.document; h = d.getElementsByTagName("head")[0];n = d.createElement("script"),n.src = /slideshow/web-directions-south-even-faster-web-sites/5495374/url;h.appendChild(n);Yahoo! FP
<head>...<script src=/slideshow/web-directions-south-even-faster-web-sites/5495374/"http:/s.ytimg.com/yt/jsbin/www-core-vfl1I8mph.jsA"></script>...</head>YouTube
<body><div><table>[~40%]<script src=/slideshow/web-directions-south-even-faster-web-sites/5495374/"http:/z-ecx.images-amazon.com/images/G/01/browser-scripts/us-site-wide-1.2.6/site-wide-4183309070.js._V198471533_.js"></script> Amazon
<script src=/slideshow/web-directions-south-even-faster-web-sites/5495374/"/js/jquery-1.4.2.js"></script></body></html>subsequent page:<script src="/js/jquery-1.4.2.js"></script><script src="/js/toChecklist.js"></script><script src="/js/tocs.js"></script></body></html>Craigslistprefetching?
<body><script src=/slideshow/web-directions-south-even-faster-web-sites/5495374/"http:/include.ebaystatic.com/v4js/en_US/e673/SYS-RA_vjo_e67311309442_1_en_US.js"></script><script src="http://include.ebaystatic.com/v4js/en_US/e673/GH-RA_ReskinEbay_e67311309442_1_en_US.js"></script>...<script src="http://include.ebaystatic.com/v4js/en_US/e673/SYS-RA_vjo_e67311252543_opta_en_US.js"><script src="http://include.ebaystatic.com/v4js/en_US/e673/CCHP_HomepageV4_SLDR_e67311252543_6_en_US.js"></script></body>eBay
$LAB   .wait(function() {    $LAB      .script("http://a1.twimg.com/a/1286563368/javascripts/phoenix.bundle.js")      .wait(function() {        ...      });    $LAB      .script("http://a1.twimg.com/a/1286563368/javascripts/api.bundle.js")      .wait(function() {        ...      });  });(new)Twitterhttp://labjs.com/
vara=_d.createElement("script");a.type="text/javascript";a.src=/slideshow/web-directions-south-even-faster-web-sites/5495374/b;_d.getElementsByTagName("head")[0].appendChild(a);Bingonload
<script src=/slideshow/web-directions-south-even-faster-web-sites/5495374/"http:/bits.wikimedia.org/skins-1.5/common/wikibits.js?281c" type="text/javascript"></script><script src="http://bits.wikimedia.org/skins-1.5/common/jquery.min.js?281c" type="text/javascript"></script><script src="http://bits.wikimedia.org/skins-1.5/common/ajax.js?281c" type="text/javascript"></script><script src="http://bits.wikimedia.org/skins-1.5/common/mwsuggest.js?281c" type="text/javascript"></script><script src="http://bits.wikimedia.org/w/extensions/UsabilityInitiative/js/plugins.combined.min.js?281c" type="text/javascript"></script><script src="http://bits.wikimedia.org/w/extensions/UsabilityInitiative/Vector/Vector.combined.min.js?281c" type="text/javascript"></script><script src="http://upload.wikimedia.org/centralnotice/wikipedia/en/centralnotice.js?281c" type="text/javascript"></script><script src="/w/index.php?title=-&amp;action=raw&amp;gen=js&amp;useskin=vector&amp;281c" type="text/javascript"></script></head>Wikipedia
frontend SPOF8.2secshttp://en.wikipedia.org/wiki/Flowers (from NZ)
Web Directions South - Even Faster Web Sites
Ray MorganZappos.comMakindeAdeagboFacebookJenn LukasHappy Cogflickr.com/photos/waltzaround/4041024134/
new stuff
mobile waterfalls (!)
Web Directions South - Even Faster Web Sites
mobile waterfalls (!)

More Related Content

Web Directions South - Even Faster Web Sites

Editor's Notes

  1. Fred Wilson is Managing Partner of two venture capital firms, Flatiron Partners (Yoyodyne, Geocities) and Union Square Ventures (Twitter, delicious,Etsy, Feedburner).SpeedInstant utilitySoftware is mediaLess is moreMake it programmableMake it personalRESTfulDiscoverabilityCleanPlayful
  2. if were able to achieve a similar performance boost across ourothertoplanding pages, well drive in excess of 60 million yearly Firefox downloads.
  3. This was a ~5 second speed up.
  4. Time measurements from real users.
  5. http://www.webpagetest.org/video/view.php?id=100630_734a5096ca2b97a217b756b277520c0a68e911d5.slow
  6. http://www.webpagetest.org/video/view.php?id=100608_ecbc76305fba361cafb31c0abd27d46617e65c24
  7. http://www.webpagetest.org/video/view.php?id=100608_ab0ebdaa528ad2c480ff16fb4e59e50a52bdd71f
  8. http://www.webpagetest.org/video/compare.php?tests=100607_SN,100607_SM,100607_SK,100607_SJ,100607_S6http://www.google.com/search?q=flowershttp://search.yahoo.com/search?p=flowershttp://www.bing.com/search?q=flowershttp://www.ask.com/web?q=flowershttp://search.aol.com/aol/search?q=flowersIE7, Dulles VA, DSL
  9. http://www.webpagetest.org/video/compare.php?tests=100608_e6e0257fd833ca1eb5669cd42e49570c%2C100608_7b873ad39b553f0dec08b2ec9fb14db0%2C100608_be6ad18d17fdcbd0ad4d5e5430db4815%2C100608_b8b544a8cf71bf02171a2bf473b56a03&amp;thumbSize=150&amp;ival=1000
  10. http://www.webpagetest.org/video/compare.php?tests=100608_1F9%2C100608_1FA%2C100608_1FB%2C100608_1FC%2C100608_1FD&amp;thumbSize=150&amp;ival=1000
  11. http://www.webpagetest.org/video/compare.php?tests=100608_1GG%2C100608_1GF%2C100608_1GD%2C100608_1GC%2C100608_1GB&amp;thumbSize=150&amp;ival=2000
  12. Data source: Steve Souders, updated April 2010
  13. All of these allow for parallel downloads, but none of them allow for parallel JS execution that&apos;s not possible (currently, WebKit is doing some stuff on that).
  14. GMail Mobile: http://googlecode.blogspot.com/2009/09/gmail-for-mobile-html5-series-reducing.htmlSproutCore: http://blog.sproutcore.com/post/225219087/faster-loading-through-eval
  15. GMail Mobile: http://googlecode.blogspot.com/2009/09/gmail-for-mobile-html5-series-reducing.htmlSproutCore: http://blog.sproutcore.com/post/225219087/faster-loading-through-eval
  16. http://www.webpagetest.org/result/100708_13X0/1/details/
  17. http://www.browserscope.org/?category=network&amp;v=1&amp;ua=Android%202,Blackberry%206,Blackberry%208330,Blackberry%209700,Chrome%206,Firefox%203,IE%208,IE%20Mobile%208,iPad%204,iPhone%204,Nokia%2097,Opera%20Mini%204,Opera%20Mobile%2010,Palm%20Pre%201,Safari%204