Improving Site Performance

I run BlogEngine.NET and recently logged into Google WebMaster Tools and was a little surprised to read the following paragraph and see the related chart:

Performance overview

On average, pages in your site take 6.8 seconds to load (updated on Apr 4, 2010). This is slower than 82% of sites. These estimates are of low accuracy (fewer than 100 data points). The chart below shows how your site’s average page load time has changed over the last few months. For your reference, it also shows the 20th percentile value across all sites, separating slow and fast load times.


Yikes! Not. Good.

As you can see I was able to make some quick changes in March that helped but clearly I’m far from being in the sweet spot.

What I Did

Using Google’s Page Speed and Yahoo’s YSlow I started chipping away at the issues. I started on the JavaScript side and added this combine, compress and minify HttpHandler which turned out to be quite easy. Next, I applied Ken Silverman’s pngout utility (warning: his background will hurt your eyes) to my images and minified and combined several CSS files as well as set default images sizes.

Updated April 11, 2010 I’ve turned off Gravatar because it’s too damn slow particularly for pages with lots of comments. That page used to take 10 seconds to load now it’s just a few seconds.

Migrating to IIS7

Over the weekend I took the plunge and used the Migration tool on my discountASP.NET (which btw, I highly recommend) account and moved to IIS7. You can read about how that went here but for the most part things were pretty seamless although my site was down for 16 hours or so. After the migration I setup the MS IIS Manager for remote administration allowing me to set cache expiration headers for lots standard images.

The net result, starting at 78/100…

Page Speed Score 88/100

And from a “C” to an “A” on the YSlow report card:

YSlow performance score

At this point, it’s going to be a few more days before Google’s WebMaster Tools re-executes its performance tests but I’m hoping for some dramatically improved results.

What’s your verdict? How’d I do?

[Update April 13, 2010] This chart from Google WebMaster Tools of download times is starting to show the improvements I’ve made:


10 thoughts on “Improving Site Performance

  1. Hi Andreano,
    I will post a new chart from Google as soon as they I get a few more data points. It will probably take a week or two before I start to see any useful data but I’m expecting a pretty dramatic improvement so fingers crossed!

  2. I tried to start from the JavaScript side, i’m using WordPress and if use start to combine the JavaScript files I have to change the plugins code, it means for every new plugin update I will need to update the code again.
    The solution I found to combine the JS files, assume all JS is in one folder.
    In your .NET solution did you move all JS files to one folder?

  3. If you look at the .NET solution I used (linked above) it’s actually _much_ nicer than that. You create a text file containing the reference to the JS files you want to include and it will combine all of them for you. You can also version the file so browsers "know" when to down load it again if it’s cached.

  4. I’m on the same journey and I have also migrated to discountASP.NET – so far so good.
    I will try the minify suggestions you make. I’m also a paid-up member of the PNGOut products, but I think the link is broken. I use the paid-for Windows version he sells, which is well worth it:

  5. Hi Steve,
    I’ve been fiddling with my own personal cache/proxy server (C2010+Indy) over the last few days, and one thing that I noticed in over one thousand pages that was cached: yours was the single *only* one that used "Content-encoding: deflate"… any reason to prefer it instead of gzip?

  6. Hi PaulF,
    I use the compression as provided by IIS7 and didn’t really dig into the specifics. When I get a chance I’ll take a look and see what’s up.

Comments are closed.