Blog Posts by Steve Souders

  • Performance Draws a Crowd in Beijing

    Last week Tenni Theurer, manager of Yahoo!'s Exceptional Performance group and my main performance co-hort, returned from her appearance at the CSDN-Dr.Dobbs Software Developer 2.0 Conference in Beijing, China. This was a big conference, perhaps the biggest software conference ever in China. I was psyched when Tenni told me her talk drew a crowd and was one of the best talks of the conference! CSDN's SD2.0 web site says, "Based on our SD conference survey result, Tenni Theurer’s session ranked as one of the top 3 sessions and was also selected by our editors as the most popular speaker." It's great to see interest in fast web pages has spread worldwide. Upcoming performance performances include the WebGuild Web 2.0 Conference in Santa Clara on January 29 and Velocity, the web performance conference from O'Reilly on June 23-24 near San Francisco.

    Steve Souders
    Chief Performance Yahoo!

    Read More »from Performance Draws a Crowd in Beijing
  • YSlow 0.9 Release – Better Support for Web 2.0

    We're excited to announce the release of YSlow 0.9, Yahoo!'s web page performance analysis tool. There are two big features in this release. By integrating more tightly with Firebug's Net Panel, YSlow now finds non-DOM components such as Ajax requests and image beacons. And YSlow now crawls frames and iframes and analyzes those resources as well. There are several other new features and bug fixes described in the release notes including highlighting 404s, better detection of CSS expressions and JavaScript minification, and searching within the YSlow panel.

    These features make YSlow stronger at identifying performance improvements for Web 2.0 applications. It's great that YSlow does even better performance analysis of pages, but be forewarned that your previous YSlow scores will drop if these new-found components exhibit bad performance characteristics. As mentioned in Rule 14 - Make Ajax Cacheable, some of the performance improvements that are readily applied to static content (far

    Read More »from YSlow 0.9 Release – Better Support for Web 2.0
  • Virgin America tunes up with YSlow

    I get feedback daily on people using YSlow. The emails are all positive, even the ones that report bugs. The best emails describe how YSlow helped a company make their web pages load faster. It was fun to read this article on The Register today: Virgin America tunes up with YSlow. If anyone else has YSlow experiences they wish to share, please post them on the Exceptional Performance Yahoo! group or send them to YSlow feedback.

    Steve Souders
    Chief Performance Yahoo! and creator of YSlow

  • Velocity Web Performance and Operations Conference

    O'Reilly just announced Velocity, their first conference focused on web performance and operations. It's scheduled for June 23-24, 2008 at the San Francisco Airport Marriott in Burlingame. I'm proud to say that Jesse Robbins and I are co-chairing Velocity.

    The idea for this conference came after a late night dinner in Seattle with several performance gurus including John Jenkins (Amazon), John Rauser (Farecast), and Nate Moch (Zillow). We had spent the night exchanging ops war stories and performance insights. I hated seeing the night come to an end and promised to find a venue for us and others to gather and share best practices. The idea of learning from other experts and sharing our lessons learned to help others avoid the pitfalls we had already discovered was exciting. JJ, Nate, and I, along with Jesse Robbins and Artur Bergman, met with Tim O'Reilly and Brady Forrest at OSCON and got the ball rolling.

    If you're the person your company turns to to keep the web site running, you'll

    Read More »from Velocity Web Performance and Operations Conference
  • Web Site Optimization: a Practical Perspective

    Stoyan Stefanov just published an article entitled Web Site Optimization: 13 Simple Steps. People have commented that Yahoo!'s Performance Rules are geared towards large web sites (like Yahoo!). Stoyan's article approaches the best practices from a different angle.

    This tutorial takes a practical, example-based approach to implementing those rules. It's targeted towards web developers with a small budget, who are most likely using shared hosting, and working under the various restrictions that come with such a setup.

    He also brings up some points that aren't mentioned in Yahoo's best practices, such as:

    • increasing parallel downloads by splitting resources across multiple domains
    • hosting static resources on a domain that's free of cookies
    • configuring compression in different environments
    • code examples for preloading resources
    • tools for minifying CSS

    A quick aside about Stoyan: Stoyan blogs on and has co-authored several books including PHP Programming with PEAR and

    Read More »from Web Site Optimization: a Practical Perspective
  • YSlow 0.8 Patches Firebug’s Net Panel

    At Future of Web Apps in London I announced the release of YSlow 0.8. This update includes a few enhancements, but the biggest change is a patch to Firebug's Net Panel. I discovered that resources (scripts, stylesheets, images) read from the browsers cache (with no HTTP traffic) still show up in Net Panel. This has caused confusion when people thought their cacheable components were not actually being cached by the browser. I talked to Joe Hewitt and settled on a fix that comes with this version of YSlow. The full details are found in the article Bug (fix) in Firebug's Net Panel. Enjoy and send your feedback.

    Steve Souders
    Chief Performance Yahoo!

  • High Performance Web Sites: Rule 14 – Make Ajax Cacheable

    People ask whether these performance rules apply to Web 2.0 applications. They definitely do! This rule is the first rule that resulted from working with Web 2.0 applications at Yahoo!.

    One of the cited benefits of Ajax is that it provides instantaneous feedback to the user because it requests information asynchronously from the backend web server. However, using Ajax is no guarantee that the user won't be twiddling his thumbs waiting for those asynchronous JavaScript and XML responses to return. In many applications, whether or not the user is kept waiting depends on how Ajax is used. For example, in a web-based email client the user will be kept waiting for the results of an Ajax request to find all the email messages that match their search criteria. It's important to remember that "asynchronous" does not imply "instantaneous".

    To improve performance, it's important to optimize these Ajax responses. The most important way to improve the performance of Ajax is to make the responses

    Read More »from High Performance Web Sites: Rule 14 – Make Ajax Cacheable
  • YSlow Release on YDN

    Yahoo! has released YSlow, their web performance tool, on YDN under an open source license. Steve Souders, Yahoo!'s Chief Performance Yahoo!, made the announcement during his session at OSCon.

    YSlow measures web page performance based on the best practices evangelized by Yahoo!'s Exceptional Performance team. Since many of these best practices focus on the frontend, YSlow is integrated with Joe Hewitt's Firebug, the web development tool of choice for frontend developers.

    YSlow has three main views: Performance, Stats, and Components. Performance view scores the page against each performance rule, generates an overall YSlow grade for the page, and lists specific recommendations for making the page faster. Stats view summarizes the total page weight, cookie size, and HTTP request count. Components view lists each component (image, stylesheet, script, Flash object, etc.) in the page along with HTTP information relevant to page load times. It also contains several tools including JSLint.

    Read More »from YSlow Release on YDN
  • High Performance Web Sites: Rule 13 – Configure ETags

    Entity tags (ETags) are a mechanism that web servers and browsers use to determine whether the component in the browser's cache matches the one on the origin server. (An "entity" is another word for what I've been calling a "component": images, scripts, stylesheets, etc.) ETags were added to provide a mechanism for validating entities that is more flexible than the last-modified date. An ETag is a string that uniquely identifies a specific version of a component. The only format constraints are that the string be quoted. The origin server specifies the component's ETag using the ETag response header.

    HTTP/1.1 200 OK
    Last-Modified: Tue, 12 Dec 2006 03:03:59 GMT
    ETag: "10c24bc-4ab-457e1c1f"
    Content-Length: 12195

    Later, if the browser has to validate a component, it uses the If-None-Match header to pass the ETag back to the origin server. If the ETags match, a 304 status code is returned reducing the response by 12195 bytes for this example.

    GET /i/yahoo.gif HTTP/1.1
    Read More »from High Performance Web Sites: Rule 13 – Configure ETags
  • High Performance Web Sites: Rule 12 – Remove Duplicate Scripts

    It hurts performance to include the same JavaScript file twice in one page. This isn’t as unusual as you might think. A review of the ten top U.S. web sites shows that two of them contain a duplicated script. Two main factors increase the odds of a script being duplicated in a single web page: team size and number of scripts. When it does happen, duplicate scripts hurt performance by creating unnecessary HTTP requests and wasted JavaScript execution.

    Unnecessary HTTP requests happen in Internet Explorer, but not in Firefox. In Internet Explorer, if an external script is included twice and is not cacheable, it generates two HTTP requests during page loading. Even if the script is cacheable, extra HTTP requests occur when the user reloads the page.

    In addition to generating wasteful HTTP requests, time is wasted evaluating the script multiple times. This redundant JavaScript execution happens in both Firefox and Internet Explorer, regardless of whether the script is cacheable.

    One way to

    Read More »from High Performance Web Sites: Rule 12 – Remove Duplicate Scripts


(22 Stories)