Update July 30th 2017: Hyper Cache is now being actively developed again. Thus, it has returned as my #1 go-to WP Cache plugin.
This blog post was originally posted just over 2 years ago. WordPress Cache plugin options have changed a lot since then. As such, I’m updating this list of 5 best WordPress plugins. Three of the five listed have been replaced!
Are you already using a Wordpress Cache Plugin? I’ve tried many WordPress caching plugins over the years and after much testing, I’m able to narrow down the options to what I think are the best 5 WordPress Cache Plugins. And now I’m updating this list with the best WordPress Cache plugins to date.
Ok, ok, so the title of this article already gave that answer away. However, if you are interested in the details of how I arrived at that conclusion, please read on. The issue with most Wordpress Cache plugins is that they store cache to disk only and/or use .htaccess mod_rewrite. Even if you move .htaccess rules into Apache you must also disable AllowOverride (AllowOverride None) as per Apache docs:
“When AllowOverride is set to allow the use of .htaccess files, httpd [Apache] will look in every directory for .htaccess files. Thus, permitting .htaccess files causes a performance hit, whether or not you actually even use them! Also, the .htaccess file is loaded every time a document is requested.”
With that in mind, here’s my updated list of the best WordPress cache plugins available.
#5 W3 Total Cache (No change)
(Download size: 1.87 megabytes)
This plugin can be fast. The operative word being “can” because with some setups it’s not. There are just so many ways to misconfigure this plugin. Please don’t read too much into that statement yet. I’ve had blog owners complain to me that W3 Total Cache “made their blog slower”. To troubleshoot, I used curl to test and many times that confirmed W3 Total Cache as the issue. BUT, this only happens when the plugin is misconfigured. For example blog owners that go crazy enabling all features to disk. Just head over to Google and start typing: w3 total cache sl …you’ll see what pops up first. :) Also, once you begin to load up all those features notice how fast the .htaccess file grows. You should really move all the .htaccess rules into Apache’s config. Due to this, I would say W3 Total Cache isn’t for the average user, but it’s obvious that with around 4 million downloads it’s been used by just about everyone.
— Allows for storage to Memcached, Xcache or APC (memory).
— Many performance options beyond caching. (be careful)
— Relies on .htaccess for most features to work.
— Feels bloated, especially if you have server root access and only need WordPress caching.
— Not much has changed in the past 2 years.
#4 WP Rocket (New!)
(Download size: 0.90 megabytes)
This is a paid plugin with no free option, I’ve used WP Rocket from May 2016 until about a week ago. Its pretty powerful all-in-one plugin. Similar to W3 Total Cache but easier to configure and won’t slow down your site if you check or select certain options. Also uses .htaccess. There’s no option for Memcache or Redis.
— Great support.
— All-in-one with options for Cloudflare, CDN, Varnish, Opcache, minify, etc.
— Also relies on .htaccess
— No free version. (Plugin could have been free and then charge for support. Would have been a W3 Total Cache killer!)
#3 WP Fastest Cache (New!)
(Download size: 0.37 megabytes)
A cross between WP Super Cache and increasingly W3 Total Cache-like, sort of. The older versions from 2014/2015 offered more for free, without the premium bloat (check out the screenshots here). However, unlike the other plugins listed you cannot download previous versions via the “Developers” page. Still, its listed here because it’s not a paid-only plugin and the original core is basically still intact.
— Easy to setup
— Very actively supported and developed.
— Also relies on .htaccess
— Free version leaves you with a lot of unused features.
#2 WP Super Cache – (+2 positions)
Update: Since this list was originally posted, WP Super Cache has changed PHP caching to the “Recommended” option for caching. Also, as I originally suggested, they’ve also added an option to set the disk path. This can be used to cache to tmpfs (memory) if you are hosted on say a VPS or dedicated server. As such, I’ve moved this plugin up to the 2nd spot. Happy to see PHP now recommended over mod_rewrite/.htaccess!
(Download size: 0.88 megabytes)
Allows the use of PHP for caching instead of .htaccess, however like others it
only offers to store cache to disk. Its interesting that while WP Super Cache has been downloaded one million more times than W3 Total Cache, it has HALF the number of WordPress support forum threads. Yes, it is a lot harder misconfigure this plugin and is faster than default WordPress no matter the setup you choose. If you are going to use mod_rewrite then make sure to move all the .htaccess lines into Apache’s config AND disable AllowOveride. Otherwise, I recommend to stick with PHP instead. It’s important to remember that WP Super Cache was first released over 6 years ago when PHP 5.2 and PHP 5.1 were the most popular versions of PHP… Yikes!! Since then, with each new version, PHP has significantly improved in performance (even more so now with PHP 7!) and the use of opcode caching has also grown in popularity. This is another reason why I recommend using PHP over mod_rewrite via .htaccess.
If the cons below are addressed, Wp Super Cache would probably become my #1 plugin. Get rid of ALL bloat and redesign/simplify GUI.
— Easy enough to setup.
— Can be used without .htaccess by selecting to cache using PHP.
— They’ve also added a disk cache location option (or tmpfs eg. /dev/shm)
— No option to save cache to memory. — The verbiage of options and some suggestions are a bit dated.— Too many plugin/addons that aren’t useful.
— Dated GUI.
(Download size 0.05 megabytes)
This is a smart, simple WordPress cache plugin. Its been around for a few years and yet unlike many others hasn’t fallen into the trap of becoming bloated, reinvented or abandoned (eg.
Hyper Cache now active) Available storage methods: database, APC, hard drive or Memcached.
— Very Fast!
— KISS principle. (Simple)
— Changing to disk cache requires .htaccess.
— Wiki is German in only. (Thanks Google Translate!)
If you are looking for a WordPress Cache Plugin that focuses mainly on Caching WordPress. Then go with Cachify. If you are looking for a WordPress Cache Plugin which offers additional performance features, then go with the time-tested king, WP Super Cache.
# Previously listed plugins which were replaced in this update:
How to Install APCu
pecl install APCu-beta service php-fpm restart
…if you are not using php-fpm then restart accordingly.
You can monitor contents, hit rate, etc of APCu using this apc.php file
Install memcached via PHP memcache
yum install memcached pecl install memcache chkconfig memcached on service memcached start service php-fpm restart
You can monitor the contents, hit rate, etc, of PHP Memcache using this memcache.php file.
How to force your WordPress Cache plugin to cache to RAM
Remember you can also force plugins to use memory by mounting the WordPress cache (/wp-content/cache/) folder to tmpfs.
Be Careful!!! Don’t attempt unless you understand what’s being done!
It is probably best to disable your cache plugin first. Also, check the contents of /wp-content/cache/ to make sure that you know what you’ll be moving.
First we mount the WordPress cache directory from disk to tmpfs (server memory). Commands require root privilege:
mount -t tmpfs -o size=1G tmpfs /full/path/to/wp-content/cache
Next, if still enabled, clear your WordPress plugin’s cache. Then to make this persistent on reboot edit /etc/fstab and add this at the end:
tmpfs /full/path/to/wp-content/cache tmpfs defaults, size=1G 0 0
If this has been helpful, comments and questions are welcomed. This post touched on only a tiny fraction of WordPress performance. If you desire more WordPress and Web Server performance, speed and scalability, or would like to optimize the performance of other web applications such as Magento, Drupal, Joomla, etc. …Contact me here.