WordPress plugin – W3 Total Cache

Once your WordPress installation is up and running and you are satisfied with the plugins and themes you have installed, it’s time to optimize your installation for performance.

I would leave this task as the last step in any blog-installation, as caching can break themes or plugins and it is much easier to get your blog up and running and then tweak the installation afterwards.

Optimize WordPress with W3 Total Cache

Amongst all the various plugins I reviewed, W3 Total Cache improves the user experience of your site by improving your server performance, caching every aspect of your site, reducing the download times and providing transparent content delivery network (CDN) integration.

W3 Total cache gives you:

  • At least 10x improvement in overall site performance (Grade A in YSlow or significant Google Page Speed improvements) when fully configured
  • Improved conversion rates and “site performance” which affect your site’s rank on Google.com
  • “Instant” subsequent page views: browser caching
  • Optimized progressive render: pages start rendering quickly
  • Reduced page load time: increased visitor time on site; visitors view more pages
  • Improved web server performance; sustain high traffic periods
  • Up to 80% bandwidth savings via minify and HTTP compression of HTML, CSS, JavaScript and feeds
Installation and configuration can be overwhelming and your success depends on your hosting provider. Although W3 Total Cache offers a number of accelerators – disk based, eAccelerator, Opcode caching, there is a good chance that those caching mechanisms are not offered out-of-the-box by your hosting provider (especially in a shared hosting environment).
I chose a virtual server hosting plan with eApps.com, which comes with unlimited databases, custom PHP configurations, mail, DNS and a variety of other options and had little problem installing extra packages to support W3 Total Cache fully.
Once W3 Total Cache is installed, it provides the following optimizations and settings:
  • General: I suggest that you click on the “Compatibility Check” button first to verify your server installation and fix any dependencies. Start of first with “Page Cache” enabled and leave all other optimization options disabled. I found it easier to enable option after option to rule out any issues. Also make sure that you use Firebug to identify any Javascript or 404-errors you might experience.

    The Caching Method depends on your hosting provider and PHP configuration. Try at least to have “Disk: Enhanced” working, but in most cases “Disk: Basic” will already provide a substantial improvement.

  • Page Cache: Allows you to cache pages and page fragments. This will provide you the biggest performance boost. Tick everything except “Cache SSL (https) requests”, “Cache URIs with query string variables”, “Cache 404 (not found) pages”. If you are running WPtouch you will also need to exclude user agents for WPtouch to properly work.
  • Minify: Minifies your CSS and JS and compresses the files, reducing the number of requests for a page to load. This option is the most beneficial, but also the most frustrating, as many plugins can break. I did find that the automatic minification did not work, and switched to manual mode. Under “HTML & XML” select everything except “Don’t minify feeds”. For JS and CSS manually specify the files and sort them the appropriate order. Best way to achieve this is to view the page-source and then find “.JS” and “.CSS” files and then add the relative path. I only minify files hosted on my server.
  • Database Cache: I have not enabled this option.
  • Object Cache: I have enabled this option.
  • Browser Caching: I have enabled all options except “Prevent caching of objects after settings change”, “Do not process 404 errors for static objects with WordPress” for all settings.
As you toggle the various caching options on, you will need to validate that your blog still renders and that plugins still function. You might have to play with the placement of JS files and CSS in the manual minify settings to avoid any CSS clashes.
The performance improvement is quite substantial and my homepage loads according to Google GWMT under 1 second. I have deliberately left off the CDN and CloudFlare functions, as W3 Total Cache needs to work properly first before taking the next step.