A Faster Drupal—a Faster Web

I just sent a new note to the Flocknote Development list about making Flocknote speedier. Flocknote is a very complex web application, and at the beginning of this summer, I noticed that some pages were taking more than a second to generate on our server (that's before the page would be sent to the end user!).

Investigating the performance problems using MySQL's EXPLAIN, the PHP profiler XHProf, and Drupal's Devel module, I found the culprits to be some inefficient and memory-hungry caches and some inefficient database queries. Applying a couple patches that are in development for Drupal, and adding a couple indexes on different tables more than halved average page load time.

I also am actively trying to get these patches accepted into Drupal core and the Views module. Once the patches are incorporated, millions of other Drupal websites and applications will be able to conserve memory and clock cycles as well. You could easily substitute 'Wordpress', 'Joomla', 'DotNetNuke', or any other CMS or platform for 'Drupal' here.

When we shave milliseconds off page load times, or optimize CSS and JavaScript to conserve CPU time on an end user's computer or mobile device, we are not only making end users happier, we're effectively:

  • Conserving battery life, and thus recharging time—reducing power demands altogether.
  • Making end users enjoy (and thus continue) using our websites and products.
  • Allowing for more free memory and CPU time on our servers, which in turn increases capacity.

These are very real benefits of pursuing better performance. Do you performance test your code when you add new features? Do you run something like Google PageSpeed to make sure your fancy new scripted widget doesn't kill performance on older Android devices, iPhones, and PCs?

Just like with rampant misuse of Adobe Flash everywhere in the early part of this millenium, many people seem to be adding features, effects and widgets wily-nily to their sites and platforms with little regard for their frying servers or those using the sites. Do you really need a 3D tag cloud on your site, when it costs tons more time to generate on the backend, and tons of time to render in a browser?

Consider learning about improved performance techniques and incorporating performance testing in all the development you do—no matter what kind of software platform or website you're building. And if you can help large web platforms like Drupal, Wordpress and Joomla work faster using less memory, that's a win for everyone.

Comments

Matthew West's picture

Thanks Jeff for sharing the list of tools you used. It's way to easy to add plugins and modules that the temptation to do so without regard is common and there's often many different choices it should be part of the workflow to test them. I test primarily with firebug but actually rounding up and correcting the problem is a mystery to me. I'll be digging in to these!