WordPress is a great CMS, but if you’re hosting your own install you’ll want to pay attention to keeping its performance nimble. Here are a few tips I picked up this week after reading this post and thinking about how to apply those ideas to my own site:
1. Optimize the database.
WordPress handily saves every revision of every page and post you create. That’s great for retrieving a lost paragraph, but it can add hundreds of rows to the
wp_posts table — especially if, like me, you save revisions often. Eventually, the database grows big enough to affect query performance, which can slow page loads.
There’s a remedy: Delete those unnecessary rows and optimize your tables.
The WordPress plugin directory lists several database optimizers, but they make me nervous. They all claim to optimize but don’t say exactly what changes they make. Instead, I dug straight into my site’s MySQL database using my web host’s phpMyAdmin interface.
Sanity check: Back up your database first.
Once that’s done, run this in the SQL pane:
DELETE FROM wp_posts WHERE post_type = "revision";
Next, use phpMyAdmin to optimize your tables (Structure Pane > Select All > choose Optimize Table from the drop down).
This trick shrank my database from 5.5MB to less than 1MB.
2. Install a caching plugin.
If something I write here goes viral, I’d like to avoid watching my server fry. One way to head this off is to set up caching so that every page load isn’t executing a query on your server.
It loads like any WordPress plugin, but it has many options. This tutorial gives great step-by-step directions.
3. Remove unneeded PHP calls
Most WordPress themes, including the one I built for my site, include calls designed to fetch info from the MySQL database. The idea is to make the theme easily customizable via the admin and make the theme portable to millions of users.
But unless you plan to change your site’s name, tagline or url often, there’s no reason to have your theme fetch those every time it loads your header.
For example, in my header.php file, I changed this:
<h1><a href="<?php bloginfo('url'); ?>"><?php bloginfo('name'); ?></a></h1>
<h1><a href="http://www.anthonydebarros.com">Anthony DeBarros</a></h1>
That’s two fewer calls each time that page loads. Depending on your theme, you might be able to find many more calls to eliminate.
There’s a lot more you can tweak under the hood, and that means plenty of chances to learn more goodness about server configurations. Here are some of the places where I picked up these tricks and where you can find a lot more detail. Happy optimizing!