WordPress Super Cache

I’ve been using the WP-Cache 2 plugin for some time, as it offers pretty effective file-based caching of WordPress pages to help reduce the load on the database server and reduce page generation time. But the plugin has kind of languished without any real updates for months(?) or years(?).

Donncha O Caoimh, the WordPress guru who’s name I’ll never be able to pronounce, released an updated and refined caching plugin called WP-Super-Cache, based on the great start offered by WP-Cache 2.

Traditionally, if someone wanted to run a high-performance weblog, or an enterprise-level weblogging system, they really had only 2 choices.

  1. MovableType – because it generates static HTML for every page of the site, and only runs code when posting new content (posts or comments). It can, in theory, scale pretty much infinitely, but can also take for fracking EVER to publish content because it may have to regenerate static files for EVERY page on the site (if you change the theme, you get to create 5,000 new .html files to reflect it).
  2. WordPress on some bad-ass hardware. WordPress.com runs on it, but they use 23 bajillion servers, with jaw dropping MySQL clustering and replication. Dynamic content with query caching, etc… Works great, but needs a fair bit of care on the back end to manage the tiers of MySQL (or Oracle?) database servers, and multiple webservers.

Now, there’s a pretty kickass third option.

  1. WordPress on commodity hardware, with WP-Super-Cache

WP-Super-Cache does some great caching, storing the output of dynamically generated pages, and returning those rather than hitting the database. It doesn’t even have to fire up PHP to spit out the cached pages – it’s essentially running as a static file server. Kinda like MovableType. But with lazily bound cache that gets regenerated as needed. You don’t have to staticize an entire website, just the pages that are being requested. And they’re updated every hour or so, so the load on the server should be extremely low.

If your server is kosher, it’ll also gzip the cached pages, saving disk space, time and bandwidth (sadly, neither of my servers seem to play nicely with the gzip “super cache” option – I’ll play more later).

Now, my blog likely still won’t survive a full-on Slashdotting because I’m running on an inexpensive shared hosting provider (Dreamhost). But it should survive a pretty respectable amount of traffic (i.e., way more than I currently get) so I should be good to go. And ucalgaryblogs.ca should be able to serve out some pretty decent traffic loads, assuming I manage to actually market it and get folks to use it…

WP-Super-Cache also works out of the box on WordPress MultiUser. It installs as a mu-plugin with minimal effort, once you RTFM. The options, oddly, don’t show up in “Site Admin” but in the “Options” panel on the main blog of a WPMU installation.

6 thoughts on “WordPress Super Cache”

  1. One server is RedHat, the other is whateverthehell Dreamhost runs. Some Debian flavour, I believe. I’m not sure if it’s the server that wasn’t happy with gzip, or if I just misconfigured something.

    and thanks for the pronunciation – I’ve always wondered 🙂 I’d have never guessed Quiv. Sounds vaguely Qwghlmian…

  2. At first I thought this post was titled “WordPress Sugar Cube,” and I was preparing myself for a love letter to your favorite CMS. However, I was pleasantly surprised after I read your nice overview of why WordPress rules everything else.

    We’ll get ’em yet, Robin. Or are you Batman!

  3. Hi D”Arcy-
    thanks for pointing this out. I’d given up on the old WP-Cache- and wouldn’t have caught this.
    We’ll be putting this up on a few sites tomorrow to see if it helps.
    We’re running CentOS- we’ll see what happens.

  4. Hi guys,
    thanks for the article, just had a question, how would this work on a site like ours (caradvice.com.au) which runs WP but receives over 30,000 unique visitors a day, we are running a dedicated server with juice to cure cancer but the server still has relatively high CPU usage as well as high memory usage,

    my only concern is for the live comments to be updated, can you set how long u want each page to be cached for? Can you allow a certain bit of the page to be dynamically generated each time?

Comments are closed.