Almost without fail I add caching to all the sites I deal with for customers (and myself) at the end of the project. Â And for the longest time the procedure was always the same thing: Â add WP-SuperCache, enable it, and do just a slight bit of tweaking to get it all nice and streamlined.
WP-SuperCache doesn’t seem to make THAT much difference under a light load – however, when you have a site that’s being banged on by 50,000 visitors in a month (yes, one of the sites I deal with does that much traffic) WP-SuperCache saves your butt. Â And I’m one of those once I find something that works very well, I tend to stick with it for quite a while – unless I find a good excuse to go out and test new stuff. Â (And I will admit that quite often I make up my own excuses to try out new tech – often the excuse is “I need to explore it so I can explain it to my customer base.”)
I found an excuse to re-think all of my setups for WordPress. Â For some reason the server started taking a really hard beating, and was frequently falling over dead from lack of memory. Â After doubling the amount memory available it would still fall over in the middle of the night according to my monitoring system.
Hrm.
I started doing some digging, and I won’t get into the unimportant parts, but WordPress 3.2.1 seems to be using a bit more memory than previous versions.  So I started looking at my other options – my first stop was the excellent W3 Total Cache.  I had read some good comments on it, but I had also seen a few negative reviews of it – so I gave it a shot.
Right off the bat I could see a reduction in load times – nothing spectacular, and the server wasn’t using any less memory than it was before, unfortunately. Â Since my problem was running out of memory, not CPU utilization, I turned off a few things like gzip compression, trying to find a balance between speedup and memory usage – turning off gzip saves a bit during the caching process.
Next I wanted to try out something: Cloud Flare. Â Cloud Flare is a Content Delivery Network (CDN, for those who’ve seen the TLA but wondered what it meant), and unlike Amazon S3 and a number of others, it’s free. Â Well, OK, it’s a “freemium” service – it’s core is free, but there’s a number of add ons you can put into it, plus they appear to make money from advertising other services that are in-line with the Cloud Flare network. Â Cloud Flare has it’s own WordPress plugin, but W3 Total Cache also has provisions for it built in – just fill in your account information.
Now, Cloud Flare does slightly go against my “everything under my control” policies – you have to make a few changes to your DNS settings that point at Cloud Flare, moving requests through their network first. Â HRM. Â The downside would be those moments when Cloud Flare has a network failure, you’re SOL. Â Every layer between you and your content is yet another thing that can break. Â On the other hand, CDN’s are distributed networks with fewer single points of failure than your standard host.
I tweaked the standard Cloud Flare setup just a bit, but when I was finally happy with performance I was flat out impressed. Â Using a fresh browser (FireFox, which I hadn’t used for my testing so it had nothing already cached locally) the front page took 3 seconds to load. Â Not bad at all, considering the front page used to take about 8 seconds to get fully loaded. Â Any other page after that took less than a second, and a few loaded about as close to instantly as you can get without having a pre-load caching system going (Cloud Flare offers preload caching if you go Pro with it – I didn’t, so there was no pre-load involved.) Â Same went for Safari, Chrome, though I haven’t tested IE yet.
For mobile platforms, performance improvement was great too – an iPhone 3GS on AT&T with three bars of service took 7 seconds to load the initial page (meh), and 3 seconds for each addition page (not bad!)
Overall, I can’t say enough good things about the W3 Total Cache + Cloud Flare combination – at the moment. Â As with many things there’s a lot of variables involved – your server configuration, for instance might not like W3 Total Cache that well, requiring more tweaking to find optimal results. Â And I need to wait and see if the Cloud Flare network has problems or not. Â So far it’s all been good!
if you’re curious, and end up using Cloud Flare, here’s the configuration settings I’m using across four domains at the moment:
- Security: Medium
- Caching Level: Â Agressive
- Rocket Loader: Automatic (it’s a beta feature)
- Track Outbound Links: On
- Hotlink Protection: On
- Google Analytics is turned on (and I turned off the WordPress plugin I was using for it)
The rest of it is set for defaults.
At some point I’ll probably throw up an update on it as one of the sites – the Great Plains Ren Fest – hits around 50,000 visitors a month when the next faire rolls around (in October). Â It should be interesting to see what sort of results it gets under that load!
Oddly enough… my server still seems to be having some memory issues. Â It’s using more than it should, IMO – but it’s no longer falling over and dying in the middle of the night, so the reduction in load is a win 🙂
good article. i think i will try Cloudflare as well.