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 30 day trial). I have used the W3 + Cloudflare + MaxCDN + SiteGround combo to make multiple WordPress site load 400% faster – now let’s do yours!
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. This tutorial is current with the latest W3 Total Cache version 0.9.5.2 updated Jan. 17, 2017.
Here’s my Pingdom report with W3 Total Cache. My GTmetrix report is pretty good too. Of course if you want a nice report like this you NEED to be on fast servers, minimize plugins and external requests, optimize images, and ideally do everything in my WordPress speed guide.
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 is how Google 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).
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.
MaxCDN mirrors your site on multiple data centers around the world which reduces the geographical distance between your server and visitor. Without a CDN, you only have 1 origin server which can be very far away for 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 other items in Pingdom and other speed testing tools. And yes, you should get better results if you use both Cloudflare and 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.
Source: Online Media Masters
Tools We Use And Recommend
At TJ-WEBS, our goal is to provide awesome & affordable web design to individuals, small businesses and non-profits. We love the little guys, the newbies, the novices… the up-and-comers, the mom and pops and the have nots. We believe beautiful websites can be affordable and accessible to everyone. From basic blogs to full blown e-Commerce sites, we offer affordable websites to all.