High Performance Web Sites, Part 2

April 30, 2008 4:02 pm | 17 Comments

In my first book, High Performance Web Sites, I presented 14 rules for making web pages faster. I’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’ve started another book that describes more best practices for web performance. The working title is High Performance Web Sites, Part 2. Here’s the set of rules I have so far:

  1. Split the initial payload
  2. Load scripts without blocking
  3. Don’t scatter scripts
  4. Split dominant content domains
  5. Make static content cookie-free
  6. Reduce cookie weight
  7. Minify CSS
  8. Optimize images
  9. Use iframes sparingly
  10. To www or not to www

As I finish chapters I’ll talk about my findings at conferences. My slides from Web 2.0 Expo last week contain information about the first three rules. In the future I’ll be speaking at Google I/O, Velocity, OSCON, and The Ajax Experience, so please come see me if you’re there. Also, I’ll write a blog post about each chapter. (Posts on Rules 1-3 are coming soon.)

The book should be out in early 2009. As I continue my research on web performance here at Google I’ll come up with another 5-10 rules to include. But I also wanted to ask you for suggested rules. What do you think is the performance killer for your web app? Better yet, what performance best practices have you discovered? For example, I think 3rd party rich media (Flash and JavaScript) ads are the long pole in the tent for many sites, and knowing the best way to embed widgets is growing more and more important. If you have a suggestion for a performance rule add it in a comment below and I’ll check it out.

OK, time to put the nose to the grindstone.

17 Responses to High Performance Web Sites, Part 2

  1. Two suggestions to refine your writing.

    Most of your comments and ideas have to do with large sites and with developers who understand and work with Ajax complexities etc.

    Please add commentary for people with smaller sites by people who are not developers.

    Second thing — ASP.NET sites are terrible for startup. Suggestions specifically for ASP.NET sites (e.g. DNN is terrible!!) in addition to implementing some kind of keep-alive mechanism that periodically pings an ASP.NET site, in addition to all your other goodness, would be appreciated by many.

    Thank you, Tom

  2. I’d tend to disagree about the value of ASP.NET specific information. One of the values of this type of info. is that its applicable to any server environment (ASP.NET, PHP, JSP, etc.) because it’s speaking directly to the ‘three legged stool’ of web development: HTML, ECMAScript, and CSS.

    Thanks for all the hard work, Steve.

    -Andy

  3. Steve love your work it has made a big difference in speed and performance of the sites I am responsible for. How about looking at some of the performance aspects of .htaccess stuff like directoryindex order (i.e., htm or php first), and having one .htaccess file or one in each directory. Perhaps you could get into a way to do this as part of a build process using phing or ant.

  4. We have been expanding our use of JSON on our site (ex. product infomation). One topic could be about using a CDN to serve this type of content in addition to all of your static content. Another topic could be the performance implications with using eval() to compile the JSON string into an object.

  5. Doloto now has its own page:

    http://research.microsoft.com/projects/doloto/

    -Ben

  6. What about alternative stylesheets. The code I have seen to download them after the doc has loaded apply them, Which would change the style of the page.

  7. We use sprites for reducing the no of request in the scenario of calling images.

  8. Here’s an interesting link you might want to check out about CSS selectors being a factor in load time:

    http://www.downloadsquad.com/2008/06/11/tests-confirm-css-selectors-slow-load-times/

  9. Tom, Pre-Compile your sites to get around the Batch Compiler. And DNN just has issues, stop using it it my advice.
    I do think covering issues related to proper user of AJAX principles would be fantastic. Be sure to include comments about the latest ASP.NET AJAX because the team has done a great job making it optimizable. Not to be platform specific, just suggesting. :)

  10. a good read.

  11. A colleague from Yahoo!, Robert Ames, sent me this suggestion:

    Setting “navigator.userAgent = null” saves a bajillion bytes that the
    browser sends (upstream) on heavy ajax applications. Nifty little
    trick.

    http://blog.mibbit.com/?p=143

  12. Just an FYI – I am not the originator of the blog.mibbit.com post, just happened to find it in my travels.

    –Robert

  13. We use sprites for reducing the no of request in the scenario of calling images.
    thanks for this article

  14. what a impressive article. last days I didn’ t read post like that. I am now your blog’ s follower thanks for this useful blog. you are now in my bookmarks.

  15. What about alternative stylesheets. The code I have seen to download them after the doc has loaded apply them, Which would change the style of the page.

  16. Informative, I recently noticed in google webmaster tools that my site loads 14.2 seconds, this is horrible.

    I am now doing a reseach on how to get my site faster thanks.

  17. How about websites having PR 7 and up? Google these days also consider the load up speed of a site as ranking metrics.