WP Rocket Settings
Turn on what cannot break anything, then the risky options one at a time, testing between each. A tab-by-tab starting configuration with the settings that need exclusions.
Some links on this page are affiliate links: if you buy through one, we may earn a commission at no extra cost to you. It does not change what we recommend; see the editorial policy.
Turn on what cannot break anything, then the risky options one at a time, testing between each. WP Rocket's defaults are deliberately conservative; most of the score improvement lives in two settings that are off on purpose, and those are the two that break sites.
If you do not have it yet, WP Rocket is the plugin this configuration is for; whether it is worth buying for your hosting is a separate question, answered in what you are paying for.
Before you change anything
- Check what your host already does. On a managed host with server-level caching, WP Rocket's page cache is redundant and two page caches serve stale content. On hosts it recognises, WP Rocket turns its own page cache off automatically; elsewhere that takes WP Rocket's helper plugin, and the plugin stays for file optimisation — managed hosting explains the overlap.
- Record a baseline: TTFB, LCP and page weight for the homepage, one article and, on a store, one product page. Test logged out in a private window.
- List the interactive parts of the site: menus, sliders, forms, popups, maps, cart. These are what you will retest after every risky toggle.
The starting configuration
| Tab | Setting | Recommended start | Risk |
|---|---|---|---|
| File Optimization | Minify CSS files | On (default) | Low |
| File Optimization | Optimize CSS delivery → Remove Unused CSS | Later, alone | High |
| File Optimization | Minify JavaScript files | On (default) | Low |
| File Optimization | Load JavaScript deferred | On, then test | Medium |
| File Optimization | Delay JavaScript execution | Later, alone | High |
| Media | LazyLoad for images and iframes | On | Low |
| Media | Add missing image dimensions | On | Low |
| Preload | Preload cache | On (default) | Low — adds server load |
| Advanced Rules | Never Cache URL(s) | Only custom flows | — |
| Database | Cleanup | Manual, after a backup | Medium |
| Heartbeat | Reduce activity | On (default) | Low |
| Add-ons | User Cache | Off | Medium — user-specific content |
If your version still shows options to combine CSS or JavaScript files, leave them off. Combining merges files whose order mattered, and on HTTP/2 it rarely helps.
There is no Cache tab in current versions: since 3.16 mobile caching is always on, User Cache lives under Add-ons, and Cache Lifespan sits in Advanced Rules. Leave User Cache off unless the logged-in view is identical for everyone — on a membership or store site it is not.
File Optimization
This tab produces the PageSpeed improvements and the breakage.
Minify CSS and JavaScript first. They are low risk and easy to verify.
Load JavaScript deferred comes next. It tells the browser to run scripts after parsing the HTML. Scripts that must run while the page is parsed are the usual casualty; the fix is adding that file to the option's exclusion field, not turning the option off. The mechanics are in render-blocking resources.
Optimize CSS delivery offers two methods. Remove Unused CSS generates the CSS each page actually uses and inlines it — the biggest win for the "reduce unused CSS" warning, and the most likely to miss styles that only appear on hover, in mobile menus or after interaction. Load CSS asynchronously is the fallback when it does. If pages look unstyled after either, start with CSS not loading.
Delay JavaScript execution holds scripts back until the first interaction — a mouse movement, touch, scroll or key press. It scores best and breaks most: sliders that appear blank, popups that never open, analytics that miss bounces. Use the One-click exclusions list for the plugins and services it recognises, and add your own in Excluded JavaScript Files. Safe Mode is the temporary switch for finding which script broke.
Media
Lazy loading should stay on. WP Rocket detects the LCP image on its own, preloads it and keeps it out of LazyLoad; if a report still says the LCP image was lazily loaded, another plugin or the theme is lazy-loading it — turn that one off. Preload fonts (Media → Fonts) detects the fonts used above the fold by itself; turn it off only if the theme or another plugin already preloads them. Add missing image dimensions is a cheap fix for layout shift caused by theme templates that output bare <img> tags.
Preload
Preload cache crawls the sitemap so the first visitor after a purge does not pay for the rebuild. On weak shared hosting the crawl itself can cause slowdowns; if the site gets sluggish after every purge, this is why. Preload links, on by default, fetches a page when the visitor hovers over its link.
Advanced Rules
Cache Lifespan, at the top of this tab, decides how often cached pages are rebuilt. The 10-hour default is fine for most sites; a news site publishing hourly benefits from a shorter one, a brochure site from a longer one.
This is also where pages are excluded from the cache. Never Cache URL(s) takes paths or patterns; Never Cache Cookies skips the cache for visitors carrying a given cookie, useful for currency or language switchers. Cart, checkout and my-account are excluded automatically; add custom flows by hand. To disable page caching on one page, this is the setting — not deactivating the plugin. Note that an excluded URL also loses every file optimisation.
Database, CDN, Heartbeat and Add-ons
- Database: revisions, auto-drafts, spam and transients. Take a backup first and run it manually before scheduling it.
- CDN: only if you use one; enter the CDN hostname so file URLs are rewritten. Do not fill it in with your own domain.
- Heartbeat: reducing the frequency in the back end lowers admin-ajax load on shared hosting; leave post editor autosave alone.
- Add-ons: enable the integration for your CDN or host if one is listed, so purges reach every layer — the layers are mapped in clearing the WordPress cache.
WooCommerce and Elementor
For WooCommerce, check that the cart fragments script is not delayed if the mini-cart count must update on page load, and add any quote, wishlist or custom account pages to Never Cache URL(s). The wider store picture is in speeding up WooCommerce.
WP Rocket clears the affected cache when you save in Elementor (with Elementor's CSS print method on External File, the default). Remove Unused CSS and Delay JavaScript execution are the two options to test against Elementor popups, sliders and motion effects — see speeding up Elementor.
Common mistakes
- Enabling everything at once, then not knowing which toggle broke the form.
- Testing while logged in, which bypasses the cache entirely.
- Running it alongside another cache plugin, which fights over the same drop-in files — the reason to pick one, per choosing a cache plugin.
- Turning off Delay JavaScript entirely when one exclusion would have fixed the broken widget.
Verify
Load a page logged out, twice, and view the source and look for WP Rocket's comment at the very end of the HTML (it starts <!-- This website is like a Rocket); a header such as x-cache: HIT only appears if a host or CDN layer adds one. Then click through every interactive element on your list, on a phone, and compare the numbers with your baseline. Keep a setting only if it improved them without breaking anything.
Frequently asked
- There is no universal set. A safe start is the defaults — caching, minification, lazy loading and preloading on, with Remove Unused CSS and Delay JavaScript execution enabled one at a time afterwards, each tested on your interactive pages.
- No. WP Rocket excludes cart, checkout and my-account automatically. Custom flows such as a one-page checkout or a quote request page built by another plugin may need adding to Never Cache URL(s) by hand.
- No. WP Rocket applies changes as pages regenerate. Clear it manually only when you want to test a change immediately rather than wait for the cache to rebuild.