Performance Evaluation: Remember the Milk

If you aren't familiar with Remember the Milk, it is a totally awesome web-based to-do list manager. I use it religiously and recommend it to all my friends. The site is beautifully designed and very heavy with javascript. It uses ajax for everything and their server is extremely fast. It is very well implemented and they did almost everything right with their implementation. Going down the list of major things they did right...
  1. Gzipping the resources: They enabled gzipping. That is probably the easiest thing to do with the biggest bang for the buck. If you are using apache, which you probably are, then it is a very simple configuration change to enable mod_deflate.
  2. Minify the javascript: They compile their site's javascript files into a single file called rtm.{version}.js and minify it. That is a great practice and I highly recommend it. Adding the version number into the name is an excellent practice as well. That is critical to using far-future expires headers.
  3. Far-future expires headers: They added them to all the site's javascript, which makes up a significant portion of the total download. Doesn't help the first page load, but all subsequent access are all cached. Awesome.
Although there are a few other minor things that could be improved, the biggest performance issue with their site is the large number of image downloads. They could combine about 40 icons into a single (or maybe 2) jpg or crushed png and use css sprites to display the various icons. On my internet connection, a refresh of the page takes almost 4 seconds to download the images and that would likely be reduced to about 1/10th of the time by using a single image. Overall, they are an excellent example of how to implement a highly interactive UI in a very efficient manner. They clearly took some care in crafting it and it pays off in the load time of the page. It is a great effort and I wish more sites on the net would do the same. If you have a site that you would like me to have a look at and post my analysis and recommendations for, please leave a comment or drop a line to paul at codingfrontier.com.