Many W3 Total Cache settings are preset (shown in the install tab), but not all. I’ll walk you through the performance tabs then help you setup Cloudflare (free) and MaxCDN ($90/year with my coupon or do a free MaxCDN trial). I have used the W3 + Cloudflare + MaxCDN + SiteGround combo to make multiple websites load 400% faster with the help of my developer.
Need help configuring W3 Total Cache, Cloudflare, or MaxCDN? Hire my WordPress developer on freelancer.com who taught me WordPress speed and is $25/hour in Bangladesh.
Over 75,000+ people have used this tutorial to optimize their WordPress site. It can fix over 20 items in Pingdom: caching, minify, gzip, bad requests, cache validator, add expires headers, ETag, content delivery network, reduce DNS lookups, cookie-free domains, and plenty more. I now recommend Pingdom as your speed testing tool and will reference many of these items. This tutorial is current with the latest W3 Total Cache version 0.9.5.1 updated Jan. 17, 2017.
Here’s my Pingdom report with a .6s load time and high scores. I contribute this to the W3 + Cloudflare + MaxCDN combo plus SiteGround’s WordPress hosting who was rated #1 in this Facebook poll and will migrate you for free. I’m on their semi-dedicated GoGeek plan which is 4x faster than regular shared hosting. This is the #1 thing WordPress recommends in their optimization guide and SiteGround is a recommended WordPress host with fast speed technology. If you run your site through Google Page Speed Insights and see reduce server response time is in your report, it means your hosting is slow and has nothing to do with cache.
Download my recommended W3 Total Cache settings here (you’ll need a Dropbox account). Upload under Performance → General Settings → Import / Export Settings. Check your site to make sure everything is OK (should be). You will still need to configure MaxCDN + Cloudflare.
1. General Settings
Here’s my 25% off MaxCDN coupon ($90/year annually) or sign up for a free trial. Then head over to my MaxCDN section. Below is how the Page Speed Insights look in your W3 Total Cache “dashboard” tab once you’ve added an API (instructions provided in W3 Total Cache).
I prefer Pingdom over GTmetrix and Google Page Speed Insights because it’s more accurate (WP Rocket says so too). I used to LOVE GTmetrix but they started using a “full load time” metric that isn’t accurate. Before they said my site had a .3s load time… now they say it loads in 8s when ALL other speed tools show >1s. I still use GTmetrix for image optimization though.
2. Page Cache
Enabling compatibility mode is highly recommended by plugin developer (in the install tab) and even though it may slightly reduce performance, problems are much less likely to exist with your site. He says this “optimizes the interoperability of caching; the tradeoff is that disk enhanced page cache performance under load tests will be decreased by ~20% at scale.”
3. Minify Settings
The plugin developer says the recommended settings for minify, database, and object cache are preset. You can find this in the install tab. Remember, if you’re using Cloudflare this will take care of minify for you, so just make sure minify is turned off in the General Settings tab.
4. Database Cache
- Leave as is (recommended in install tab)
5. Object Cache
- Leave as is (recommended in install tab)
6. Browser Cache
Leave everything else including ‘expires header lifetime’ which the developer says is preset.
A CDN (content delivery network) mirrors your site on multiple servers around the world which reduces the geographical distance it takes for your content to reach your visitor. Without a CDN, you only have 1 origin server which can be very far away from many people. MaxCDN is specifically good for improving items like reduce HTTP requests, use a content delivery network, reduce DNS lookups, reduce cookie size, cookie-free domains, and others. And yes, you should get better results if you use both Cloudflare combined with MaxCDN.
How To Setup MaxCDN With W3 Total Cache
1. Sign up for MaxCDN. My 25% off coupon + 2 free months for annual billing = $90/year, or do a free trial. Use the steps below or watch my video. MaxCDN also has their own tutorial.
Sign up for your plan…
2. Once signed up, go to your MaxCDN dashboard and go to Zones → Create Pull Zone:
3. Enter your website as the origin server URL, the other two are your site name. Click create.
4. Leave this window open (you will need your CDN URL for step 8).
5. Still in MaxCDN, go to the “Account” tab and go to API → View All → Create Application:
- Name/description should be your sitename
- Application URL and Callback URL should be empty
6. After creating an API, leave that window open too. So now you should have your pull zone info and API info (step 4 and 5) open in 2 tabs, which is the info we need for W3 Total Cache:
7. Head over to W3 Total Cache and navigate to the General Settings tab, scroll down and enable MaxCDN (remember when you’re using a CDN, database cache should be disabled):
8. Now go to the CDN tab and use these settings. You’ll need to enter your alias+key+secret and CDN URL (from step 6), then use the test button to make sure MaxCDN is working…
Here’s where you enter your MaxCDN info in the “CDN” tab…
9. Save changes, then go back to MaxCDN and Whitelist your hosting IP (W3 Total Cache should have a notification with that IP address). Copy and paste into MaxCDN’s IP Whitelist:
10. Finally, view pull zones in MaxCDN and go to Manage → Settings. Make sure you ‘strip all cookies’ and follow the same settings I use, which were configured by MaxCDN themselves.
If you see “cookie-free domains” in your Pingdom report, you may want to contact MaxCDN’s support to see if they will help you with this – they were able to fix this for me.
Be sure to contact MaxCDN support as they were able to tweak my settings to further improve my performance grade. They have one of the best support teams ever – definitely utilize it.
CDN pointers from the plugin developer (found in Install tab) – if you do not use the Media Library, import your images etc into the default locations. Use the Media Library Import Tool on the “CDN” tab to do this. If you do not have a CDN provider, you can still improve your site’s performance using the “Self-hosted” method. On your own server, create a subdomain and matching DNS Zone record; e.g. static.domain.com and configure FTP options on the “Content Delivery Network” tab. Be sure to FTP upload the appropriate files, using the upload buttons.
8. Fragment Cache
You will need to upgrade to W3 Total Cache Pro to use fragment cache (which can make your site faster), but to be honest I don’t use it… so I can’t say whether it’s worth upgrading. If you do they have recommendations on that page I linked to which helps with fragment cache and making the plugin aware you’re grouping transients. You’ll need have some coding experience.
Cloudflare – activate and see step 10.
Genesis Framework – if you’re using the Genesis Framework you can click the ‘upgrade’ button in W3TC to buy W3 Total Cache Pro for $99/year. This will enable additional speed features like fragment cache and the Genesis Framework extension which can improve site speed. Once purchased, it should say “the plugin is enabled in community mode.” Alternatively, your license key will be sent to you via email which you can enter in the General Settings tab.
WordPress SEO by Yoast – activate if using Yoast (ps. my Yoast tutorial is just as good as this).
1. In the W3 Total Cache ‘Extensions’ tab, activate CloudeFlare and click the settings:
Configure these Cloudflare settings:
Caching Levels – I use the aggressive caching level which includes query strings.
Hotlink protection – prevents spammy sites from hosting your images on their site (sucking up your bandwidth) which can cause CPU overages with your hosting company. This was a HUGE problem for me and I suggest monitoring links to your site in Google Search Console to make sure there aren’t a crapload of spammy sites doing this. Hotlink protection prevents this.
2. Now sign up for Cloudflare. You will be prompted to add your website and begin scan…
3. Click ‘continue setup’ then scroll down through the rubbish and click continue…
4. Choose ‘free website’ then continue. Cloudflare will provide you with 2 nameservers:
5. Do a Google search for “how to change nameservers on SiteGround” (only search for your host), then follow their instructions. You will likely copy Cloudflare’s nameservers and paste them into a custom nameservers option in your hosting cPanel (screenshot below is for SiteGround). Then go back to Cloudflare and click ‘I’ve added all missing records, continue.’ You can also use whois.net to double check that your nameservers have been changed.
6. Now login to Cloudflare and go to your speed settings. You definitely want to enable auto minify for ALL items and Rocket Loader…
7. Now go to your page rules settings. There are 3 page rules I recommend creating:
Once you’re done configuring W3 Total Cache, MaxCDN and Cloudflare, purge all caches in W3 Total Cache (below). If you don’t see this, there may be an ’empty all caches’ option in the dashboard tab. Then retest your site in Pingdom. It can take up to 72 hours for Cloudflare nameservers to propagate, but you should receive a confirmation email when it’s complete.
11. Common Issues
Website formatting issues – disable the “minify” option in the General Settings tab.
Slow WordPress dashboard – disable “object cache” in the General Settings tab, set page rules in Cloudflare, then install the WordPress Heartbeat Control plugin. Deactivate all plugins then activate them 1 by 1 to see which one slows down your dashboard (see complete tutorial).
Slower load times than before – disable “object cache” or wait 72 hours for propagation.
Crashed website: open wp-config and delete these lines:
/** Enable W3 Total Cache */ define('WP_CACHE', true); // Added by W3 Total Cache
Open .htaccess and remove all lines between and including:
# BEGIN W3TC ... # END W3TC
Then delete: advanced-cache.php, objectcache.php, and db.php from wp-content. Also delete the w3-total-cache folder in wp-content/plugins.
12. SiteGround Hosting
SiteGround was rated #1 in this Facebook poll and is the only host listed on all 3 WordPress, Joomla, and Drupal official hosting pages. I’ve been with them for 2 years and have had a consistent load time of >1s. Their speed technology is faster than any other WordPress host with NGINX servers, solid states drives, PHP7, and Cloudflare. Fast hosting is the #1 thing WordPress recommends in their optimization guide and SiteGround will migrate you for free.
Here’s the poll…
You can also run your site through Google Page Speed Insights to see if reduce server response time is in your report. If it is, this definitely means your server (hosting) is slow…
I use SiteGround’s semi-dedicated GoGeek plan and you’ve seen my Pingdom report…
Average load time on SiteGround is 1.3s…
Other people say the same thing…
Higher SiteGround plans come with the more server resources which make your site faster. That’s why I would at least do their $7.95/month GrowBig plan which gives you about 1.5x more server resources, can host unlimited websites, and comes with priority support. You can see this on their comparison chart page where it says ‘we allocate the resources you need’…
2 years strong…
Here’s my SiteGround review if you care to read but I think you get the gist. You can optimize your website all you want but as long as it’s hosted on a slow server, it just ain’t gonna happen. Their shared hosting is plenty for most sites but they also have cloud hosting for $80/month.
13. More Speed Optimizations
Serve Scaled Images – resize large images to be smaller. Pingdom tells you which images need this but only for the single page you run it through. Start with images that appear on multiple pages (logo, sidebar, footer images) since fixing these reduces load times for multiple pages. Pingdom tells you the correct dimensions of each image, but it’s a good idea to have a cheat sheet of your slider, widget, and other areas so you can resize your images before uploading.
Optimize Images (Lossless Compression) – Imagify is best for this. Sign up and grab an API key, then install their plugin where you can enter the API. Then go to Media → Bulk Optimization and start losslessly compressing all images on your site. There is a free monthly quota of 25MB per month (or $4.95 for 1GB) but it’s much better than other free plugins. From my experience you need to use the “aggressive” setting to fix these items in Pingdom.
Specify Image Dimensions – means you need to specify a width/height in the image’s HTML or CSS. You will need to locate the image (using Pingdom), find it on your WordPress site, then add a width/height which Pingdom will tell you. Usually for images outside your visual editor.
Reduce Server Response Time – if you run your site through Google Page Speed Insights and see this, it means your hosting is slow and is another indication you should probably switch. Remember to check this Facebook poll to see if you’re currently with a slow WordPress host.
AMP Pages – stands for accelerated mobile pages, is a project by Google, and adds a nice “AMP” stamp to your mobile search results. I provided instructions below…
- Install the AMP Plugin by Automattic
- Install the Glue For Yoast SEO AMP Plugin if using Yoast
- Add /amp/ to any page on your website to see how it looks and make sure it works
- Go to Yoast’s Settings → AMP to change your design and enable custom post types
- Wait for Google to recrawl your site and add the AMP sign in mobile search results
- Visit the “Accelerated Mobile Pages” section in Google Search Console to see errors
Light Youtube Embeds – videos are one of the heaviest elements on a page. Using a thumbnail image (then only playing the video when someone clicks on it) can reduce load times by multiple seconds. I used this tutorial for my site or you can use the WP YouTube Lyte plugin. By the way… have you seen this Ted Talk by Amy Cuddy on body language? It’s pretty awesome.
14. Hire My WordPress Speed Optimizer
Didn’t get the Pingdom scores you want? Pronaya is a WordPress developer I found on freelancer.com who lives in Bangladesh and specializes in WordPress speed optimization. I have worked with over 20 overseas freelancers and he’s the one I always turn to for advanced WordPress speed and development. He helped me optimize my site to load in .4s and multiple other sites to load 500% faster. He’s $25/hour (projects usually run $150 – $250) and I’ve been working with Pronaya for 5 years, and have invested more than $20,000 in his services for both myself and clients. His email is firstname.lastname@example.org if you want to reach out, or you can view his perfect 5 star profile by joining freelancer.com and searching for user bdkamol.
Reviews of Pronaya…
See Also: WordPress Speed Optimization Guide (20+ Ways To Make Your Site Load Faster)
Well that’s it! I know it can get a bit technical so if you have any questions just drop me a line in the comments. And if you enjoyed my tutorial, please give it a share. I would appreciate that!