Plugin guide: speed
W3 Total Cache settings for a fast WordPress site
W3 Total Cache is free and powerful, but it has hundreds of options. You only need a handful. These are the ones we turn on, the ones we leave off, and why.

What caching does
Without a cache, WordPress builds every page from scratch for every visitor: it runs PHP, asks the database dozens of questions and assembles the HTML. A page cache saves the finished page and hands the copy to the next visitor, so the server does almost no work. An object cache keeps the answers to common database questions in memory for the pages that cannot be cached, such as the dashboard and logged-in visits. A browser cache tells visitors' browsers to keep your images, CSS and JavaScript instead of downloading them on every page.
Performance > General Settings
| Section | Our choice | Why |
|---|---|---|
| Page Cache | Enable, method Disk: Enhanced | Disk: Enhanced writes finished pages as static files that the web server sends without starting PHP at all. On most hosting it is the fastest choice and needs nothing extra from your host. |
| Object Cache | Enable, method Opcode: Alternative PHP Cache (APC / APCu) | An in-memory object cache speeds up the dashboard, searches and any page that cannot be page-cached. APCu is a PHP extension that most hosts already have, so it works on far more servers than Memcached or Redis, which need a separate service. If APCu is greyed out and the only method offered is Disk, leave Object Cache off: a disk object cache can be slower than no object cache. |
| Browser Cache | Enable | Free speed for returning visitors and for every page after the first. |
| Minify | Off on Divi sites | Divi already combines and minifies its own CSS and JavaScript. Minifying it a second time saves almost nothing and is the most common cause of broken layouts after "speed tuning". |
| Database Cache | Off | The database server has its own cache, and with an object cache running this adds little. On disk it often makes things slower. |
| CDN | Off, unless you already use a CDN | A CDN helps sites with visitors around the world. Set it up only when you need it. |
| Anonymous usage tracking | Off | Not needed. |
Is APCu available? W3 Total Cache greys out any method your server cannot use. If APCu is greyed out, ask your host to enable the APCu extension. Memcached or Redis are good choices too when your host offers them, and they are the right choice if your site runs on more than one web server, because APCu memory is not shared between servers.
Performance > Page Cache
| Setting | Our choice | Why |
|---|---|---|
| Cache front page | On | Your home page gets the most visits. |
| Cache feeds | Off | Feeds are read by machines, change often and gain little. |
| Cache SSL (HTTPS) requests | On | Your whole site should be on HTTPS, so without this nothing would be cached. |
| Cache URIs with query string variables | Off | Addresses with ? in them are usually searches, filters or tracking links. Caching them fills the cache with copies nobody else will ask for. |
| Cache 404 (not found) pages | Off | Keeps the cache clean when bots probe for addresses that do not exist. |
| Don't cache pages for logged in users | On | Logged-in users (you, editors, customers) must see live pages, not a copy. |
| Cache Preload | Optional: on, using your Yoast sitemap address /sitemap_index.xml |
Preloading builds the cache before visitors arrive, so even the first visitor after a change gets a fast page. |
| Purge Policy | Defaults (front page, post page and feeds) | When you publish or update a page, W3 Total Cache refreshes the copies that show it. |
Performance > Object Cache
| Setting | Our choice | Why |
|---|---|---|
| APCu | Nothing to configure | APCu has no server address or password. It keeps its data in the web server's own PHP memory. Your host sets its size (apc.shm_size); 64 MB or more is comfortable for a busy site. |
| Memcached or Redis instead | Hostname:port from your host, for example 127.0.0.1:11211 |
Click Test. It must say the test passed before you save. |
| Default lifetime of cache objects | 180 seconds (default) | Short enough that changes show up quickly. |
| Garbage collection interval | Default | Only matters for disk caching. |
Performance > Browser Cache
| Setting | Our choice | Why |
|---|---|---|
| Set Last-Modified header, Set expires header, Set cache control header, Set entity tag (ETag) | On | These headers tell browsers what they may keep and for how long. |
| Enable HTTP (gzip) compression | On | Text files (HTML, CSS, JavaScript) shrink to about a quarter of their size on the way to the visitor. |
| Enable HTTP (brotli) compression | On, if your server supports it | Brotli compresses a little better than gzip. |
| CSS & JS and Media & Other Files: Expires header lifetime | 31536000 seconds (one year) | WordPress and Divi add a version number to each file's address (the ?ver= part) when the file changes, so a long lifetime is safe. |
| Prevent caching of objects after settings change | On | Makes browsers fetch fresh files right after you change settings. |
What we leave off, and why
- Lazy Load Images (under User Experience): WordPress and Divi already lazy load images. Doing it twice can delay your main image and hurt your PageSpeed score.
- Minify and the "Disable jQuery Migrate" option: leave them alone on Divi sites. Divi's own performance settings do this job safely; see Divi speed settings.
- Fragment Cache and other Pro features: not needed for a normal business site.
Check that it works
- Log out, or open a private browser window.
- Open your home page twice, then view the page source (right-click, View Page Source) and scroll to the very end.
- You should see a comment that starts with
Performance optimized by W3 Total Cacheand saysPage Caching using Disk: Enhanced. If it says the page was not cached, the comment gives the reason. - Test the page at PageSpeed Insights before and after, on mobile.
Clearing caches after a change
If you edit a page and the change does not show for visitors, clear the caches in this order:
- Divi > Theme Options > Builder > Advanced > Static CSS File Generation > Clear (only when styles look wrong).
- Performance > Purge All Caches in the top admin bar (or Performance > Dashboard > Empty All Caches). W3 Total Cache already refreshes a page when you save it in the dashboard; this is for changes it cannot see, such as theme options.
- Reload with Ctrl+F5 (Cmd+Shift+R on a Mac) to skip your own browser's copy.
Rather have us do it for you?
Precision Web Hosting builds, secures and hosts WordPress sites with every setting on this site already done. Tell us about your project and we will send you a quote.