<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.3" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>High Performance Web Sites</title>
	<link>http://www.stevesouders.com/blog</link>
	<description>Essential knowledge for making your web pages faster.</description>
	<pubDate>Tue, 22 Jul 2008 06:44:22 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
	<language>en</language>
			<item>
		<title>See You at OSCON</title>
		<link>http://www.stevesouders.com/blog/2008/07/18/see-you-at-oscon/</link>
		<comments>http://www.stevesouders.com/blog/2008/07/18/see-you-at-oscon/#comments</comments>
		<pubDate>Sat, 19 Jul 2008 06:14:17 +0000</pubDate>
		<dc:creator>Steve Souders</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.stevesouders.com/blog/2008/07/18/see-you-at-oscon/</guid>
		<description><![CDATA[I&#8217;ll be up at OSCON in Portland this week. I&#8217;m speaking Thursday 2:35pm on Even Faster Web Sites, the next set of performance best practices I&#8217;m working on. I&#8217;m signing books Thursday 12:20pm at the Powells table, and I&#8217;ll be in the Google booth Thursday 4pm. At the Google booth I&#8217;ll be doing performance consulting [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll be up at OSCON in Portland this week. I&#8217;m speaking Thursday 2:35pm on <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/2841">Even Faster Web Sites</a>, the next set of performance best practices I&#8217;m working on. I&#8217;m signing books Thursday 12:20pm at the Powells table, and I&#8217;ll be in the Google booth Thursday 4pm. At the Google booth I&#8217;ll be doing performance consulting - anyone can stop by and ask questions about their web site&#8217;s performance, or we can just fire up a packet sniffer and YSlow to see what jumps out.</p>
<p style="margin-bottom: 0pt">There are a lot of great talks this year. Here are a few I&#8217;ve earmarked:</p>
<ul style="margin-top: 0pt">
<li><a href="http://en.oreilly.com/oscon2008/public/schedule/detail/2903">Full-stack Introspection Crash Course</a> by Theo Schlossnagle</li>
<li><a href="http://en.oreilly.com/oscon2008/public/schedule/detail/3407">An Open Source Project Called &#8220;Failure:&#8221;</a> with Josh Berkus. Shane Warden, Ben Collins-Sussman, Brian Fitzpatrick, and Karl Fogel</li>
<li><a href="http://en.oreilly.com/oscon2008/public/schedule/detail/2704">Barely Legal XXX Perl</a> by Jos Boumans (entertaining speaker)</li>
<li><a href="http://en.oreilly.com/oscon2008/public/schedule/detail/3064">Experience-driven Development: Designers and Developers Working in Harmony</a> by Chris Shiflett and Jon Tan</li>
<li><a href="http://en.oreilly.com/oscon2008/public/schedule/detail/2887">Do You Believe in the Users?</a> by Ben Collins-Sussman and Brian Fitzpatrick</li>
<li><a href="http://en.oreilly.com/oscon2008/public/schedule/detail/2737">CSS for High Performance JavaScript UI</a> by Gavin Doughtie (this looks really good)</li>
<li><a href="http://en.oreilly.com/oscon2008/public/schedule/detail/2607">Using Puppet: Real World Configuration Management</a> by James Turnbull and Luke Kanies (this is at the same time as my talk, but if you&#8217;re more interested in ops Luke is doing great stuff)</li>
</ul>
<p>If you&#8217;re going to OSCON please come by and say Hi.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevesouders.com/blog/2008/07/18/see-you-at-oscon/feed/</wfw:commentRss>
		</item>
		<item>
		<title>YUI&#8217;s Combo Handler CDN Service</title>
		<link>http://www.stevesouders.com/blog/2008/07/17/yuis-combo-handler-cdn-service/</link>
		<comments>http://www.stevesouders.com/blog/2008/07/17/yuis-combo-handler-cdn-service/#comments</comments>
		<pubDate>Thu, 17 Jul 2008 18:33:13 +0000</pubDate>
		<dc:creator>Steve Souders</dc:creator>
		
		<category><![CDATA[HTTP]]></category>

		<category><![CDATA[Performance]]></category>

		<category><![CDATA[Tools]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[YSlow]]></category>

		<category><![CDATA[cdn scripts javascript http]]></category>

		<guid isPermaLink="false">http://www.stevesouders.com/blog/2008/07/17/yuis-combo-handler-cdn-service/</guid>
		<description><![CDATA[Eric Miraglia wrote a post yesterday called Combo Handler Service Available for Yahoo-hosted JS. One of the advantages of YUI over other JavaScript frameworks is its à la carte capabilities. Developers can choose just the parts they want, rather than being saddled with the whole kit and caboodle. It&#8217;s great to download fewer bytes, but [...]]]></description>
			<content:encoded><![CDATA[<p>Eric Miraglia wrote a post yesterday called <a href="http://yuiblog.com/blog/2008/07/16/combohandler/">Combo Handler Service Available for Yahoo-hosted JS</a>. One of the advantages of <a href="http://developer.yahoo.com/yui/">YUI</a> over other JavaScript frameworks is its à la carte capabilities. Developers can choose just the parts they want, rather than being saddled with the whole <a href="http://www.worldwidewords.org/qa/qa-who2.htm">kit and caboodle</a>. It&#8217;s great to download fewer bytes, but choosing a subset of modules results in downloading multiple external scripts, something that&#8217;s <a href="http://developer.yahoo.net/blog/archives/2007/04/rule_1_make_few.html">bad for performance</a> and costs <a href="http://developer.yahoo.com/yslow/">YSlow</a> points. That&#8217;s where Eric&#8217;s post comes in.</p>
<p>The Combo Handler Service lets developers choose a customized subset of modules and have them served as a single HTTP request from Yahoo!&#8217;s worldwide CDN for faster delivery. Each module (file) is listed in the querystring. As an example, Eric shows that loading the <a href="http://developer.yahoo.com/yui/examples/editor/cal_editor.html">YUI Rich Text Editor</a> the old way would require downloading six separate scripts:</p>
<p style="border: 1px solid #cccccc; padding: 8px; background: #f0f0f0 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: auto; font-size: 0.8em; font-family: 'Courier New'"> &lt;script src=&#8221;http://yui.yahooapis.com/2.5.2/build/yahoo-dom-event/yahoo-dom-event.js&#8221;&gt;<br />
&lt;/script&gt;<br />
&lt;script src=&#8221;http://yui.yahooapis.com/2.5.2/build/container/container_core-min.js&#8221;&gt;<br />
&lt;/script&gt;<br />
&lt;script src=&#8221;http://yui.yahooapis.com/2.5.2/build/menu/menu-min.js&#8221;&gt;<br />
&lt;/script&gt;<br />
&lt;script src=&#8221;http://yui.yahooapis.com/2.5.2/build/element/element-beta-min.js&#8221;"&gt;<br />
&lt;/script&gt;<br />
&lt;script src=&#8221;http://yui.yahooapis.com/2.5.2/build/button/button-min.js&#8221;&gt;<br />
&lt;/script&gt;<br />
&lt;script src=&#8221;http://yui.yahooapis.com/2.5.2/build/editor/editor-beta-min.js&#8221;&gt;<br />
&lt;/script&gt;</p>
<p>This is reduced to a single HTTP request by using the Combo Handler:</p>
<p style="border: 1px solid #cccccc; padding: 8px; background: #f0f0f0 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: auto; font-size: 0.8em; font-family: 'Courier New'"> &lt;script src=&#8221;http://yui.yahooapis.com/combo?2.5.2/build/yahoo-dom-event/yahoo-dom-event.js&amp;<br />
2.5.2/build/container/container_core-min.js&amp;2.5.2/build/menu/menu-min.js&amp;<br />
2.5.2/build/element/element-beta-min.js&amp;2.5.2/build/button/button-min.js&amp;<br />
2.5.2/build/editor/editor-beta-min.js&#8221;&gt;<br />
&lt;/script&gt;</p>
<p>It&#8217;s important that developers using Combo Handler pay particular attention that they get the dependency order correct. I created the <a href="http://stevesouders.com/misc/yui-combo-handler.php">YUI Combo Handler: preserving order</a> test page to show what happens if prerequisites are listed incorrectly. In this page instead of putting <code>editor-beta-min.js</code> as the last querystring parameter, I make it the first parameter. Not surprisingly, the page produces JavaScript errors. It would be great if Combo Handler ensured that the response had all the necessary prerequisites in the right order. With this enhancement the single request would be much simpler:</p>
<p style="border: 1px solid #cccccc; padding: 8px; background: #f0f0f0 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: auto; font-size: 0.8em; font-family: 'Courier New'"> &lt;script src=&#8221;http://yui.yahooapis.com/combo?2.5.2/build/editor/editor-beta-min.js&#8221;&gt;<br />
&lt;/script&gt;</p>
<p>This is a great announcement. Web developers using YUI can now get a customized rollup hosted on Yahoo!&#8217;s CDN! This is the best of all worlds - reduced download size, fewer HTTP requests, and CDN hosting. I encourage other JavaScript frameworks to adopt YUI&#8217;s à la carte flexibility. Perhaps <a href="http://code.google.com/apis/ajaxlibs/">Google Ajax Libraries</a> could then support features to serve up customized builds similar to what Combo Handler does. Well done.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevesouders.com/blog/2008/07/17/yuis-combo-handler-cdn-service/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Women are Geeks (too!)</title>
		<link>http://www.stevesouders.com/blog/2008/07/12/women-are-geeks-too/</link>
		<comments>http://www.stevesouders.com/blog/2008/07/12/women-are-geeks-too/#comments</comments>
		<pubDate>Sat, 12 Jul 2008 19:13:28 +0000</pubDate>
		<dc:creator>Steve Souders</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.stevesouders.com/blog/2008/07/12/women-are-geeks-too/</guid>
		<description><![CDATA[As a father of three girls I watch for indicators of the level to which women are represented in the tech community. I decided to write a blog post about this while sitting at the ACM Awards Banquet a week ago. My experience coming from tech companies, including Yahoo! and Google, is that women are [...]]]></description>
			<content:encoded><![CDATA[<p>As a father of three girls I watch for indicators of the level to which women are represented in the tech community. I decided to write a blog post about this while sitting at the <a href="http://www.acm.org/membership/2008awards">ACM Awards Banquet</a> a week ago. My experience coming from tech companies, including <a href="http://www.yahoo.com/">Yahoo!</a> and <a href="http://www.google.com/">Google</a>, is that women are incredibly, and sadly, underrepresented in engineering. That&#8217;s why I was pleased to see that so many of the ACM award winners were women. I generated a chart showing the number of woman ACM award winners over the last 30 years. It&#8217;s a small sample size, so I plotted the moving average to smooth out the spikes.</p>
<p><img src="http://stevesouders.com/images/acm-woman-awardees.gif" alt="ACM Woman Awardees" height="296" width="502" /></p>
<p>I&#8217;m happy to see the number of woman awardees is increasing, with a real jump in the last two years. But I have two reservations. The percentage of woman winners is low, averaging only 5% over the last 30 years with a spike to 10% in the last two years. Also, most ACM award winners come from academia. I&#8217;m concerned that an analysis of similar award winners from industry would reveal even lower percentages for women.  <a href="http://www.stevesouders.com/blog/2008/07/12/women-are-geeks-too/#more-19" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevesouders.com/blog/2008/07/12/women-are-geeks-too/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Velocity Wrap-up</title>
		<link>http://www.stevesouders.com/blog/2008/06/26/velocity-wrap-up/</link>
		<comments>http://www.stevesouders.com/blog/2008/06/26/velocity-wrap-up/#comments</comments>
		<pubDate>Thu, 26 Jun 2008 18:51:16 +0000</pubDate>
		<dc:creator>Steve Souders</dc:creator>
		
		<category><![CDATA[Ads]]></category>

		<category><![CDATA[Conferences]]></category>

		<category><![CDATA[Firefox]]></category>

		<category><![CDATA[IE8]]></category>

		<category><![CDATA[Internet Explorer]]></category>

		<category><![CDATA[Performance]]></category>

		<category><![CDATA[Tools]]></category>

		<category><![CDATA[Velocity]]></category>

		<category><![CDATA[Velocity VelocityConf]]></category>

		<guid isPermaLink="false">http://www.stevesouders.com/blog/2008/06/26/velocity-wrap-up/</guid>
		<description><![CDATA[This week I co-chaired Velocity, the web performance and operations conference from O&#8217;Reilly. It was great! Jesse and I told the story about how the conference came about. When we proposed the conference we believed there was a community of performance and operations engineers that needed a forum to share and learn, and the attendance [...]]]></description>
			<content:encoded><![CDATA[<p>This week I co-chaired <a href="http://conferences.oreilly.com/velocity/">Velocity</a>, the web performance and operations conference from O&#8217;Reilly. It was great! Jesse and I told <a href="http://velocityconference.blip.tv/file/1018406/">the story</a> about how the conference came about. When we proposed the conference we believed there was a community of performance and operations engineers that needed a forum to share and learn, and the attendance at Velocity confirmed this. Velocity sold out with over 600 attendees!</p>
<p>The lineup of speakers was great. There was a lot of material packed in a 2-day conference. I stayed in the Performance track, but wanted to attend every session in the Operations track, too. Many speakers shared their <a href="http://en.oreilly.com/velocity2008/public/schedule/proceedings">slides</a>, and there are <a href="http://velocityconf.blip.tv/">videos</a> and <a href="http://flickr.com/photos/x180/sets/72157605770492224/">photos</a> from some of the talks.</p>
<p> <a href="http://www.stevesouders.com/blog/2008/06/26/velocity-wrap-up/#more-18" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevesouders.com/blog/2008/06/26/velocity-wrap-up/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Velocity Product Launch: KITE 2.0</title>
		<link>http://www.stevesouders.com/blog/2008/06/21/velocity-product-launch-kite-20/</link>
		<comments>http://www.stevesouders.com/blog/2008/06/21/velocity-product-launch-kite-20/#comments</comments>
		<pubDate>Sat, 21 Jun 2008 17:54:50 +0000</pubDate>
		<dc:creator>Steve Souders</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.stevesouders.com/blog/2008/06/21/velocity-product-launch-kite-20/</guid>
		<description><![CDATA[A few product launches are being announced at Velocity. I was able to get an early look at KITE 2.0 from Keynote. I&#8217;ve worked with Keynote for years. They have a strong platform of services for measuring web site availability and performance. KITE, Keynote&#8217;s Internet Testing Environment, is the customer tool for creating test scripts. [...]]]></description>
			<content:encoded><![CDATA[<p>A few product launches are being announced at <a href="http://conferences.oreilly.com/velocity/">Velocity</a>. I was able to get an early look at <a href="http://blogs.keynote.com/the_watch/2008/06/announcing-kite.html">KITE 2.0</a> from Keynote. I&#8217;ve worked with Keynote for years. They have a strong platform of services for measuring web site availability and performance. KITE, Keynote&#8217;s Internet Testing Environment, is the customer tool for creating test scripts. KITE 2.0 has many new features that caught my eye:</p>
<ul>
<li>Test scripts can include taking actions based on DOM events, such as the creation of a DOM element or even the contents of a DOM element matching a specified pattern.</li>
<li>An intuitive HTTP profile is displayed in the client app.</li>
<li>Tests can be executed at five cites worldwide on the Keynote backbone.</li>
<li>It&#8217;s free! You don&#8217;t need to be a Keynote customer to use it.</li>
</ul>
<p>KITE 2.0 is available through an <a href="http://kite.keynote.com/">early adopters program</a>. There are some features I&#8217;d like to see added: the ability to execute a test script multiple times, exporting test results measured from my client, and getting time measurements that correspond to certain events in the page. I recommend trying this early version if you&#8217;re looking for a tool to record and execute web page test scripts.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevesouders.com/blog/2008/06/21/velocity-product-launch-kite-20/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Andy Hopper: Computing for the Future of the Planet</title>
		<link>http://www.stevesouders.com/blog/2008/05/30/andy-hopper-computing-for-the-future-of-the-planet/</link>
		<comments>http://www.stevesouders.com/blog/2008/05/30/andy-hopper-computing-for-the-future-of-the-planet/#comments</comments>
		<pubDate>Fri, 30 May 2008 23:30:18 +0000</pubDate>
		<dc:creator>Steve Souders</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.stevesouders.com/blog/2008/05/30/andy-hopper-computing-for-the-future-of-the-planet/</guid>
		<description><![CDATA[
I recently hosted Andy Hopper (University of Cambridge) at Google to deliver his talk on Computing for the Future of the Planet (YouTube video). He covered a variety of areas that ranged from practical deployment issues that should be addressed today to futuristic concepts. The beginning of the talk, the part that was of most [...]]]></description>
			<content:encoded><![CDATA[<p style="float: right"><a href="http://www.cl.cam.ac.uk/research/dtg/~ah12/CFP%20RS%20slides.pdf"><img src="http://veimages.gsfc.nasa.gov//2154/wind_speed_climatology.jpg" border="0" width="250" /></a></p>
<p>I recently hosted <a href="http://en.wikipedia.org/wiki/Andy_Hopper">Andy Hopper</a> (University of Cambridge) at Google to deliver his talk on <a href="http://www.cl.cam.ac.uk/research/dtg/~ah12/CFP%20RS%20slides.pdf">Computing for the Future of the Planet</a> (<a href="http://www.youtube.com/watch?v=LN4H6vk1xYA">YouTube video</a>). He covered a variety of areas that ranged from practical deployment issues that should be addressed today to futuristic concepts. The beginning of the talk, the part that was of most interest to me, was about energy efficient computing: adaptive datacentres and a &#8220;virtual battery&#8221; (moving computing tasks to where energy is available). Power consumption is certainly a key focus for Google and other large web companies. It&#8217;s intriguing to think about shifting data and processes in real time based on the cost of energy.</p>
<p> <a href="http://www.stevesouders.com/blog/2008/05/30/andy-hopper-computing-for-the-future-of-the-planet/#more-16" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevesouders.com/blog/2008/05/30/andy-hopper-computing-for-the-future-of-the-planet/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Google AJAX Libraries API</title>
		<link>http://www.stevesouders.com/blog/2008/05/27/google-ajax-libraries-api/</link>
		<comments>http://www.stevesouders.com/blog/2008/05/27/google-ajax-libraries-api/#comments</comments>
		<pubDate>Wed, 28 May 2008 06:47:06 +0000</pubDate>
		<dc:creator>Steve Souders</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.stevesouders.com/blog/2008/05/27/google-ajax-libraries-api/</guid>
		<description><![CDATA[Today Dion Almaer announced the Google AJAX Libraries API. This is a great resource for developers using any of the popular JavaScript frameworks including Prototype, Script.aculo.us, jQuery, Dojo, and MooTools. Rather than downloading it to your own server and hosting it from there, you can request your preferred JavaScript library from ajax.googleapis.com:
 &#60;script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"&#62;
&#60;/script&#62;
The greatest [...]]]></description>
			<content:encoded><![CDATA[<p>Today <a href="http://ajaxian.com/archives/announcing-ajax-libraries-api-speed-up-your-ajax-apps-with-googles-infrastructure">Dion Almaer announced</a> the <a href="http://code.google.com/apis/ajaxlibs/">Google AJAX Libraries API</a>. This is a great resource for developers using any of the popular JavaScript frameworks including Prototype, Script.aculo.us, jQuery, Dojo, and MooTools. Rather than downloading it to your own server and hosting it from there, you can request your preferred JavaScript library from <code>ajax.googleapis.com</code>:</p>
<p style="border: 1px solid #cccccc; padding: 8px; background: #f0f0f0 none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; margin-left: 20px; width: auto"><code> &lt;script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"&gt;<br />
&lt;/script&gt;</code></p>
<p>The greatest benefit in my opinion is that any developer can leverage Google&#8217;s CDN to deliver the bulk of their JavaScript. From <a href="http://developer.yahoo.com/yslow/">YSlow</a> and <a href="http://www.amazon.com/dp/0596529309?tag=stevsoud-20&amp;camp=14573&amp;creative=327641&amp;linkCode=as1&amp;creativeASIN=0596529309&amp;adid=1S1KP4EV129EN37422C0&amp;">my book</a> I received a lot of feedback that Rule 2: Use a CDN was out of reach for many developers. I use jQuery in one of my personal projects and serve it on my hosted web site from one geographic location. Ouch. Being able to move that 21K closer to my users is great.</p>
<p> <a href="http://www.stevesouders.com/blog/2008/05/27/google-ajax-libraries-api/#more-15" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevesouders.com/blog/2008/05/27/google-ajax-libraries-api/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Split the Initial Payload</title>
		<link>http://www.stevesouders.com/blog/2008/05/14/split-the-initial-payload/</link>
		<comments>http://www.stevesouders.com/blog/2008/05/14/split-the-initial-payload/#comments</comments>
		<pubDate>Wed, 14 May 2008 23:09:39 +0000</pubDate>
		<dc:creator>Steve Souders</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.stevesouders.com/blog/2008/05/14/split-the-initial-payload/</guid>
		<description><![CDATA[[This post is based on a chapter from my next book, a follow-up to High Performance Web Sites containing more best practices for faster web sites.]
 The growing adoption of Ajax and DHTML means today&#8217;s web pages have more JavaScript than ever before. The average top ten U.S. web site[1] contains 252K of JavaScript. JavaScript [...]]]></description>
			<content:encoded><![CDATA[<p><em>[This post is based on a chapter from my <a href="http://www.stevesouders.com/blog/2008/04/30/high-performance-web-sites-part-2/">next book</a>, a follow-up to <a href="http://www.amazon.com/dp/0596529309?tag=stevsoud-20&amp;camp=14573&amp;creative=327641&amp;linkCode=as1&amp;creativeASIN=0596529309&amp;adid=1S1KP4EV129EN37422C0&amp;">High Performance Web Sites</a> containing more best practices for faster web sites.]</em></p>
<p class="MsoBodyText"> The growing adoption of Ajax and DHTML means today&#8217;s web pages have more JavaScript than ever before. The average top ten U.S. web site[<a href="http://www.stevesouders.com/blog/2008/05/14/split-the-initial-payload/#footnote1">1</a>] contains 252K of JavaScript. JavaScript slows pages down. When the browser starts downloading or executing JavaScript it won&#8217;t start any other parallel downloads. Also, anything below an external script is not rendered until the script is completely downloaded and executed. Even in the case where external scripts are cached the execution time can still slow down the user experience and thwart progressive rendering.</p>
<p class="MsoBodyText">Every line of JavaScript code matters to a fast loading page. And yet, as shown in Table 1, the average top ten U.S. web site only executes 25% of the JavaScript functionality before the onload event.[<a href="http://www.stevesouders.com/blog/2008/05/14/split-the-initial-payload/#footnote2">2</a>] Why track this relative to the onload event? Any code needed after the onload event (for dropdown menus, Ajax requests, etc.) could be downloaded later, making the initial page render more quickly.</p>
<p class="MsoBodyText"> <a href="http://www.stevesouders.com/blog/2008/05/14/split-the-initial-payload/#more-14" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevesouders.com/blog/2008/05/14/split-the-initial-payload/feed/</wfw:commentRss>
		</item>
		<item>
		<title>High Performance Web Sites, Part 2</title>
		<link>http://www.stevesouders.com/blog/2008/04/30/high-performance-web-sites-part-2/</link>
		<comments>http://www.stevesouders.com/blog/2008/04/30/high-performance-web-sites-part-2/#comments</comments>
		<pubDate>Thu, 01 May 2008 00:02:08 +0000</pubDate>
		<dc:creator>Steve Souders</dc:creator>
		
		<category><![CDATA[HPWS]]></category>

		<category><![CDATA[Performance]]></category>

		<category><![CDATA[best practices]]></category>

		<category><![CDATA[book]]></category>

		<category><![CDATA[O'Reilly]]></category>

		<guid isPermaLink="false">http://www.stevesouders.com/blog/2008/04/30/high-performance-web-sites-part-2/</guid>
		<description><![CDATA[In my first book, High Performance Web Sites, I presented 14 rules for making web pages faster. I&#8217;ve got some good news and some bad news. Bad news first: there are more than 14 things you have to do to speed up your pages. The good news is I&#8217;ve started another book that describes more [...]]]></description>
			<content:encoded><![CDATA[<p>In my first book, <a href="http://www.amazon.com/dp/0596529309?tag=stevsoud-20&amp;camp=14573&amp;creative=327641&amp;linkCode=as1&amp;creativeASIN=0596529309&amp;adid=1S1KP4EV129EN37422C0&amp;">High Performance Web Sites</a>, I presented 14 rules for making web pages faster. I&#8217;ve got some good news and some bad news. Bad news first: there are more than 14 things you have to do to speed up your pages. The good news is I&#8217;ve started another book that describes more best practices for web performance. The working title is <em>High Performance Web Sites, Part 2</em>. Here&#8217;s the set of rules I have so far:</p>
<ol>
<li> Split the initial payload</li>
<li> Load scripts without blocking</li>
<li> Don&#8217;t scatter scripts</li>
<li> Split dominant content domains</li>
<li> Make static content cookie-free</li>
<li> Reduce cookie weight</li>
<li> Minify CSS</li>
<li> Optimize images</li>
<li> Use iframes sparingly</li>
<li> To www or not to www</li>
</ol>
<p> <a href="http://www.stevesouders.com/blog/2008/04/30/high-performance-web-sites-part-2/#more-13" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevesouders.com/blog/2008/04/30/high-performance-web-sites-part-2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Cuzillion</title>
		<link>http://www.stevesouders.com/blog/2008/04/25/cuzillion/</link>
		<comments>http://www.stevesouders.com/blog/2008/04/25/cuzillion/#comments</comments>
		<pubDate>Fri, 25 Apr 2008 17:52:39 +0000</pubDate>
		<dc:creator>Steve Souders</dc:creator>
		
		<category><![CDATA[HTTP]]></category>

		<category><![CDATA[Performance]]></category>

		<category><![CDATA[Tools]]></category>

		<category><![CDATA[browsers]]></category>

		<category><![CDATA[Cuzillion]]></category>

		<category><![CDATA[parallel downloads]]></category>

		<guid isPermaLink="false">http://www.stevesouders.com/blog/2008/04/25/cuzillion/</guid>
		<description><![CDATA[
 At Web 2.0 Expo today I announce the release of Cuzillion. The tag line is &#8216;cuz there are zillion pages to check. It&#8217;s indispensable for people like me who are always pushing browsers to their limit trying to figure out how to squeeze out a little more performance.
I&#8217;m constantly thinking of or being asked [...]]]></description>
			<content:encoded><![CDATA[<p style="float: right"><a href="http://stevesouders.com/cuzillion/"><img src="http://stevesouders.com/images/screenshot-360x260.gif" border="1" /></a></p>
<p> At Web 2.0 Expo today I announce the release of <em>Cuzillion</em>. The tag line is <em>&#8216;cuz there are zillion pages to check</em>. It&#8217;s indispensable for people like me who are always pushing browsers to their limit trying to figure out how to squeeze out a little more performance.</p>
<p>I&#8217;m constantly thinking of or being asked about how browsers handle different sets of resources loaded in various ways. Before I would open an editor and build some test pages. Firing up a packet sniffer I would load these pages in different browsers to diagnose what was going on. I was starting my research on advanced techniques for loading scripts without blocking and realized the number of test pages needed to cover all the permutations was in the hundreds. That was the birth of Cuzillion. <a href="http://www.stevesouders.com/blog/2008/04/25/cuzillion/#more-12" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.stevesouders.com/blog/2008/04/25/cuzillion/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
