There is no doubt that W3 Total Cache has so many options to optimize any WordPress site than any other caching plugin. Even if you use all the features it offers there are other ways to achieve the same, manually, with better efficiency and better results.
Additionally, if you have used W3 Total Cache plugin for at least a year, especially on a multisite, you’d know that it is not a perfect plugin. As with any other plugin out there, it has its own bugs, does some nasty things, some unsatisfied users, had some security flaws on some hosts and a lot more.
What’s more, it is not actively developed as of now. The latest development log shows that it’s been 5 months since the last commit with the number of unanswered questions growing by every day in the WordPress support forums.
- Jan 25, 2013 – W3 Total Cache is back in active development. Check out the screenshots of the beta version of the next major revision in W3TC!
- Jan 25, 2013 – mod_pagespeed added to the list of alternatives.
The following section assumes you are using a VPS or a dedicated server. Because on a traditional shared host, the options are very limited and the support for caching plugins vary greatly among the hosts. For example, in HostGator sharing hosting, one could hardly use W3TC as there are numerous issues reported by the users so far.
Let’s dive into the alternatives now…
APC (Alternative PHP Cache)
It is by far the easiest way to get started with cache that runs silently on the server. It can be used as the backend for BatCache too. The APC Object Cache Backend plugin is still being actively maintained by Mark Jaquith (just a few hours back, he did a commit in the development version of this plugin). Please note that by default APC is not compatible with suPHP. If your host runs both, make sure APC is working as expected. An easy way to check, if APC is working on your host is by copying apc.php to your WordPress root directory and access it from your primary domain. You can check a lot of things using apc.php such as how much memory is used by APC, the number of hits and misses, etc.
If you are running (or can afford) more than one server, then this is what you’d want to consider for distributed caching. Memcached Object Cache plugin does the same job as APC does for Batcache, running as a backend. You can even run in on a single server where suPHP doesn’t let you to use APC. As memcached runs as an independently as a daemon, you may expect better results. Also, you’d have less issues running a memcached server than APC.
I love the simplicity of this plugin. It runs smoothly and effortlessly. Most importantly, it doesn’t break anything. :) If you already have APC installed on your server, then this plugin uses APC to cachify your posts and pages. It works completely different from the traditional plugins. That’s why it doesn’t even require you to define the cache in wp-config.php file. You’d sure love it once you set it up. Cachify works effortlessly with Nginx too.
Nginx has built-in caching support, acts as proxy cache for static files. Check out how Nginx serves blogs.law.harvard.edu that runs on WordPress multisite. Please note that Nginx doesn’t offer a way to purge the cache like Varnish does. Also there are no bells and whistles in letting Nginx to handle the cache. It only caches the data and then after they expire, it throws the cached data out of its memory. Simple, yet, not recommended for many situations. You may go crazy when the updated post (or style) doesn’t show up for non-logged in users for sometime. :)
For best results, I’d recommend Varnish. It may not be easy to set up. But, once it gets going, you wouldn’t believe how efficient it could be. WordPress.com uses Varnish too to cache static files that are stored in Amazon S3 containers. When Varnish is serving the cached content, the user request would never reach the PHP and / or MySQL. Only logged-in users would need PHP/MySQL.
WP-FFPC (WordPress – Fast Full Page Cache)
An innovative plugin from Péter Molnár. It makes use of memcached as the backend and let Nginx serve the cached pages directly from memcached. What an idea! However, I have had a couple of issues making it to work. I solved one of those with the help of the plugin author. One more issue still remains. If you have successfully deployed this in your site, I’m all ears. :)
After many months of testing (in beta), mod_pagespeed module for Apache came out with a stable release in late 2012 and became a standard for many web masters who are interested in tweaking the overall performance of most sites, including WordPress powered sites. It offers tons of filters to tweak each part of a site. Though WordPress works very differently, it is still possible to tweak it to work with mod_pagespeed. Check out my upcoming articles on mod_pagespeed! Please be aware that W3 Total Cache plugin and mod_pagespeed work in a very different environment, W3 Total Cache at the application level and mod_pagespeed at the server level.
The future of W3 Total Cache…
Other functions of W3 Total Cache plugin can be done by hand or using other plugins. For example, for minification, there is Better WordPress Minify, for CDN support, you don’t even need a plugin, for browser cache and expires, server level implementations can be used.
Happy Caching! :)