For a variety of unimportant reasons, I took a look at a product called Gypsii this evening. I got stuck looking at their web site because it was just to painful to drive. The product as something to do with geo location information. (That's great but I think geo location for the web isn't a company it's a feature, but that is another story). I clicked on their web site and took a look at one of the places features on their "Places" page. At this point I still don't know what the product does mind you, but I figured I would click around and explore and see if I could figure things out.


More than twenty seconds and three annoying flashes later the web page loaded. It immediately popped a distracting "lightbox" of an image that I had to dismiss -- adding another 5 seconds to the time it took to get to the content on that page. Subsequent pages were not quite as bad -- "only" ten or so seconds to get a page loaded. This lead me to suspect some poorly implemented HTML. Sure enough -- a look at the source and I find that each web page is loading twenty-three JavaScript files and six css files per request, and that's not counting the resources included by the embedded Google map. Some of the JavaScript files are only three lines long. Is it too much to ask to combine these into five or six fewer files? Your web server would be happier too. Making fewer web requests is generally the number one way to speed up your web page. Since most of these static components also don't have a decent expires or etags header, our browsers won't effectively cache them (and nor will the upstream caches the ISPs may have).
In addition, the source of the page claims to be strict XHTML, but it has more than 600 validation errors. As these errors pile up, the browser has to take time to deal with them, and that slows things down too.
Good web designers and developers (some of whom frequent this blog) will understand these concepts. As the customers of these web sites, we should complain about how slow and resource hungry they are (perhaps by just declining to visit the site!). Here's my tip to the (probably outsourced) web developers at Gypsii: figure out how to use YSlow.

... and before I get too many complaints, I know this blog suffers from some performance limitations as well. In our defense, it's not a commercial operation, and is running a pretty stock instance of Moveable Type.