I just discovered (after asking about it in the #drupal IRC channel) the wonderful little program ab, included in an Apache installation. This little nugget does one thing, and does it well: It beats the heck out of your server, then tells you how your server did in terms of page serving. I tested a few different configurations on a dedicated, 4-core, 4 GB RAM server from SoftLayer, and used the following two commands:
1. Download the specified URL 1,000 times, with KeepAlive turned off (each request gets a new http connection):
ab -n 1000 -c 5 http://ip.address.of.site/path-to-page.php
2. Downlaod the specified URL 1,000 times, with KeepAlive turned on (thus allowing the connection to be maintained for as many http downloads as you have set in your httpd.conf file):
ab -n 1000 -kc 5 http://ip.address.of.site/path-to-page.php
I ran these tests a few different ways, and here are the results of the tests I ran with KeepAlive on, with the number of pages per second ab reported listed after the method:
- Drupal - normal page caching turned on, css/js aggregation, 55kb page – 12.5 pages/sec
- Joomla - no page caching (disabled due to buggy 1.x caching), 65kb page – 8.2 pages/sec
- Drupal - boost module enabled, serving up the boost-cached file – 3,250 pages/sec
- Joomla - custom page caching system enabled, serving static html file – 2,600 pages/sec
Speed boost due to caching: ~250x faster!
Now, this is not a comparison between Joomla and Drupal speeds, as the two sites are completely different, and have a vastly different purpose/scope. The point is this: caching your dynamic website to static html pages will increase your server capacity significantly. I'll state it differently:
There is nothing more effective to speeding up your website for anonymous visitors than using a static page cache.
No matter what kind of host you end up using, make sure you turn on and enable as much caching as you possibly can; your website could load 250x faster, and your server could survive being on the frontpage of digg, slashdot and yahoo at the same time!
Also read other resources on Midwestern Mac, LLC, on server optimization: