This is the second and a half part in a series of posts about Wordpress and performance. In part 1,
we took a look at Wordpress in general. In part 2 we reviewed a couple of popular caching plugins that can boost performance. In this follow up post, we'll tell you a bit about what we learned after part 2 was published.
Revisiting W3 Total Cache
After publishing our results in part 2, we received a concerned Twitter message from Frederick Townes, the W3 Total Cache (W3TC) author. He thought we had done something wrong since the Disk enhanced cache mechanism used in W3TC should be at least as effective as the Wordpress Super Cache plugin (WPSC). After a brief Twitter discussion, we understood that he was absolutely right. The mod_rewrite magic that WPSC uses to achieve the amazing results was indeed present in W3TC as well (and I might as well add that the mod_rewrite rules added by Freredick's plugin is neater than the ones added by the test winner).
The mistake we made in our first test is that we didn't realize the significant difference between the two different disk based page caching methods available. There's "Basic" caching which is the one we tested, and there's "Enhanced mode". In Basic mode, W3TC will work pretty much the same way as the standard wp-cache plugin which involves invoking a PHP script. In our server benchmark, we've already seen that our server will consume in the region of 80ms for doing that so we're glad if we could avoid it in the elegant manner that Wordpress Super Cache does.
In Enhanced mode, surprise surprise, avoiding invoking PHP is exactly what W3 Total Cache will do. The basic concept is the same in W3TC and WPSC, both plugins will add a bunch of lines to the .htaccess file that tells Apache2 to go look for a static copy of (a.k.a cached) version of the requested file/resource. And as noted above, W3TC does this with a slightly more elegant addition to .htaccess. In our defense, even though the documentation provided with W3TC is good, we didn't find anything in particular that explained this significant difference between Basic and Enhanced.
How Load Impact can affect the results
Naturally, we took W3TC back to the lab to see how fast it is in enhanced mode. But before telling you about the results, we want to explain a few details about how Load Impact works. When we ask Load Impact to simulate the load of 50 concurrent web users, that is exactly what Load Impact will do. The second the test starts, exactly 50 virtual users will load the page at the same time and Load Impact will note how long time it takes before the web server responds and the content is completely transferred. Then, each virtual user will make a random pause and try again. Depending on the accuracy settings for the test, this will be repeated over and over again. In a "Fast" test, there will be very few repetitions and in a "Accurate" test, there will be lots and lots of repetitions. The more repetitions, the more data points to use when calculating the average load time. This configuration setting allows users to prioritize test completion time over accuracy if they want to. This behavior actually have some impact when testing cache plugins. When we test, the first time when 50 virtual users comes storming to the test web server at once Apache will fire up as many child processes as it's configured for, 30 in our case. All of these processes will go look in the cache and quite likely discover that there is no cached version of the requested file. So PHP is invoked, Wordpress will generate the page and the cache plugin kicks in and stores the rendered version of the page in the cache. Not only does creating the cached version take more time than a normal page request does, in our scenario, there's a risk that this is done up to 30 times. And to make things even worse, 30 child processes writing to a file based cache exactly the same time will cause a lot of file locking problems that will end up taking even more time.
The conclusion is that depending on the state of the cache when the test begins, the response time of the first 30 data points may vary. And this is exactly what we saw when we took W3 Total Cache back to the lab.
Testing W3 Total Cache again
We retested W3TC again and arrived at these numbers:
Wordpress baseline: 1220 ms
W3 Total Cache (basic disk): 256 ms (-79.0%)
W3 Total Cache (enhanced disk): 188 ms (-84.6%)
That's a solid improvement so we contacted Frederick again with the good news only to be turned down again, "something is still wrong" he told us. Then we redid the test for Enhanced mode and over again with minor tweaks to the W3TC settings. After every tweak, we cleared the cache so that any cached pages specifics wouldn't interfere with the current settings. We saw slightly higher average load times as well as slightly lower, but we were never close to the 112 ms record set when using the Wordpress Super Cahce plugin. Until the "warm vs cold" cache issue hit us and we did a test with a warm cache. And boom! The average load time decreased all the way down to 109 ms, better than what WPSC would acheive. So let's add how W3TC performs using enhanced disk caching:
Using Enhanced disk cache:
Average load time 50 users: 109 ms
Baseline difference: -1111 ms
Baseline difference %: -91.1%
Summary
Results
Before updating the results table, we retested the other results as well, but the number we ended up with in the retests was all within a 5ms difference from the original test result, so we're sticking with the results from our first round of tests. But we're reducing to using just 2 significant figures:
| Plugin | Avg. load time | Difference | Difference % |
| Standard Wordpress | 1220 | 0 | 0 % |
| wp-cache | 210 | -1010 | -83 % |
| batcache | 537 | -683 | -56 % |
| WP Super Cache | 112 | -1108 | -91 % |
| W3 Total Cache (disk basic) | 256 | -964 | -79 % |
| W3 Total Cache (disk enhanced) | 109 | -1111 | -91 % |
| W3 Total Cache (memcache) | 367 | -853 | -70 % |
That's it.

Thanks for taking the time to explain both how your test works and re-test the plugin. BTW, in the next release there are indicators to explain which cache settings are best for which case. :)
No problems, we're concerned with quality :-) Looking forward to the next version.
Thanks for a great test! Many of my wordpress performance issues are related to badly written plugins. Such as random posts using SELECT .. ORDER BY RANDOM() for example..
I have also been looking at W3TC and webo another plugin. Interestingly, I agree that the documentation in W3TC is very good, but I also failed to really grasp how to get the best settings. It is a complex plugin and necessarily so as not all users have the same requirements. So maybe we need to be cautious of the 'easy setup' claim and not expect miracles from a single click install option.
There's "Basic" caching which is the one we tested, and there's "Enhanced mode". In Basic mode, W3TC will work pretty much the same way as the standard wp-cache plugin which involves invoking a PHP script. In our server benchmark,
================================================
pmi certification l test king cisco
What about testing WEBO Site SpeedUp? The 'earlier' Part 2 test mentioned that this will be looked into, and im interested in finding out the results
i often use WP Super Cache Plugin for my blog,thank you for you content,i will try W3 Total Cache (disk enhanced),it seem more effective
_________________________________________________________________________642-973|642-062
thanks for the infos
thanks for the article
Its depending on the accuracy settings for the test, this will be repeated over and over again..Thanks for this article.
thanks for the article
thanks for sharing
So maybe we need to be cautious of the 'easy setup' claim and not expect miracles from a single click install option.
very interesrting blog
thanks for the article
very interesting information thankks
I can't seem to get WP Super Cache to do a very good job. We have a image heavy design site that really could do with some speeding up. However, nothing we do seems to make it go any faster. We haven't tried W3TC so Imight have to give it a go!
Thanks for posting this, I’ve been trying to diagnose WP load time issues of my own and now that I se what your investigations have come up with I think I have a handle on increasing my speed. Cheers!
Thanks for the simple breakdown. I think I'm going to swap out W3 Total Cache for Super Cache.
W3 Total Cache is definitely the way to go for speeding up your site. But you have to do the basics first. Make sure your server is not too frequently restarting as this always clears the cache and w3tc has to start all over again.
Also on a WPMU site it is somehow important to have all single blogs up and running with w3tc, otherwise it does not really improve the server load.
We have our local news sites optimized with it and load times are much faster. Also the server load is way less than without the plugin. Thanks to Frederick Townes :)
I hate when you have to wait for a wordpress site to load, so i will definately look up on this
Thanks for taking the time to explain both how your test works and re-test the plugin.