Steve Souders: High Performance Websites

You may have guessed by this point that I love tech videos!  And you would be right.  I'm not sure why; I think I like the lecture format, and the sequential nature of the medium that ensures you're following the speaker's train of thought: I find too often if I'm reading a blog post or article it's way too easy to skim read it and not really take anything in.

The next series of videos I've found really useful are by Steve Souders (blog), who worked previously for Yahoo! and now Google.   The videos below are all essentially of the same talk given at different times, but each one has slightly different material although sharing a lot of the same content.

The main point of the talks is that the focus of website speed optimisations should be at the client side rather than the server side.  The reason for this is that the HTML source (which is where the bulk of the server-side processing is directed) is only a fraction of the resources that are loaded by the browser when a page is loaded.   Souders has a list of 14 rules related to reducing the time the browser takes to load these other resources:

  1. Make fewer HTTP requests
  2. Use a Content Delivery Network
  3. Add an expires header
  4. Gzip components
  5. Put stylesheets at the top
  6. Put scripts at the bottom
  7. Avoid CSS expressions
  8. Make JavaScript and CSS external
  9. Reduce DNS lookups
  10. Minify JavaScript
  11. Avoid redirects
  12. Remove duplicate scripts
  13. Configure eTags
  14. Make AJAX cacheable

Here are the talks I've found so far; between them they should cover all 14 rules, although bear in mind that the oldest one is 5 years old, so some of the content may be a little out of date:

November 2007

June 2008

March 2009

June 2009

Bonus content:  Souders has written two books on the subject, and on his blog there are some live examples of each of the 14 rules, which could be quite useful.


There are no comments yet.

Contribute your words of wisdom

Don't just stand there ... say something!

Sorry, I couldn't add your comment just yet, please check the following things:

*denotes a required field