The Ideal WP Rocket Settings 2023: Why I Don’t Use It, RocketCDN Is Slow, And How To Get Better Results/LCP With Perfmatters

Wp rocket settings

WP Rocket’s settings haven’t changed much over the years, considering they only released 1 new feature after 2020 if you check the changelog.

That said, WP Rocket/RocketCDN do a poor job optimizing LCP, TTFB, and mobile. You can’t preload above the fold images for LCP and the “remove unused CSS” feature is slower than other plugins because it loads used CSS inline. RocketCDN only serves files from StackPath’s CDN and basically nothing else. There’s no full page caching, mobile image resizing, and other important features. Since TTFB is 40% of LCP, I see many WP Rocket users complain about this.

With so many lacking features, you’re basically forced to use 6 other plugins to address these, including Perfmatters which handles several of them. I switched to FlyingPress which is faster with more features (Gijo also constantly updates it for web vitals), but I’ll leave that up to you.

This guide goes beyond regurgitating their documentation and covers advanced image optimizations, CDN choices, CPU usage, etc. It’s also 8+ years old and I’ve been keeping it updated since I first published it. Lmk if you have any questions/feedback in the comments.


1. Dashboard

General information about your subscription to WP Rocket and RocketCDN. I never let plugins collect data since it results in a (very small) performance decrease. You can clear cache if you make design changes and aren’t seeing them. Otherwise, there’s nothing to do here. I let my subscription expire after switching cache plugins, especially considering they increased prices.

Wp rocket dashboard settings


2. Cache

There are a handful of situations where WP Rocket’s page caching should be disabled using the helper plugin:

  • When your host already handles page caching.
  • When you’re using Super Page Cache for Cloudflare.
  • When you’re using another cache plugin for page caching.

Brian Li explains why WP Rocket’s page caching should be left on when using APO (it’s a different layer than page caching on the origin server). Which means in most cases, keep caching On. I don’t recommend using 2 cache plugins unless you’re using SG Optimizer for caching, then WP Rocket for core web vitals. In this case, disable WP Rocket’s page caching.

WP Rocket has specific instructions and helper plugins when using NGINX + Varnish, such as using the NGINX helper plugin when NGINX caching is enabled and using custom Varnish IPs.

Wp rocket cache settings

Mobile Cache: On – enables caching for phones (tables are treated the same as desktop but can be changed with a helper plugin). The only reason mobile cache should be off is if your website isn’t responsive. Check the documentation if you’re seeing the wrong display on certain devices.

Separate Cache Files For Mobile Devices: Off – only enable if you have mobile-specific elements and need WP Rocket to show them using a separate mobile cache, or in situations like if you’re using the Avada theme / WP Touch. Otherwise, you should keep this setting turned off.

User Cache: Off – only enable if you have logged-in users (i.e. bbPress) where there’s user-specific content. However, enabling this can also increase CPU usage. If you turn this on and have custom login and logout pages, make sure those are excluded from the cache. If this is turned on, there are several helper plugins to get user cache working properly such as force page caching, disable page caching for logged-in users, and common cache for logged-in users.

Cache Lifespan: 24 hours – a lower number means the cache refreshes frequently but increases CPU usage (good if you publish content frequently and need your site updated). A higher number means the cache won’t refresh as frequently which can decrease CPU usage (good if you don’t publish content often and want to save server resources). If you’re getting CPU issues, you can also use WP Rocket’s helper plugin to disable automatic cache clearing. 


3. File Optimization

For most sites, minify CSS/JS should be ON, but combine CSS/JS should OFF. Defer/delay JavaScript should usually both be ON and can improve multiple PageSpeed recommendations.

If you plan on using Perfmatters to remove unused CSS (which is faster and more reliable than WP Rocket’s), leave all CSS settings OFF and only use the JS settings.

Wp rocket file optimization settings

Minify CSS/JS Files: On – leave Off if you’re using Perfmatters to remove unused CSS. Minifying files removes whitespace from code and which reduces file sizes. When using Cloudflare’s APO, Cloudflare suggests using WP Rocket for minification and leaving Cloudflare minify settings OFF.

Combine CSS/JS Files: Off – this setting doesn’t work when “delay JavaScript execution” is on. WP Johnny also explains why you shouldn’t combine especially on websites with large CSS/JS files (which you can check in your GTmetrix Waterfall chart). Combining CSS/JS files can also cause issues when using HTTP/2 and HTTP/3 servers. For all these reasons, leave this setting off.

Excluded CSS/JS Files: if enabling a minify setting breaks your website, view your source code, find the problematic file, and add it here. See WP Rocket’s post on resolving minification issues.

Optimize CSS Delivery: Remove Unused CSS – leave Off if you’re using Perfmatters to remove unused CSS. Even after WP Rocket revamped this in 3.11, it still loads used CSS inline. While this is better for scores, it’s slower for users since the file can’t be cached and it increases HTML size. Even the Perfmatters documentation says inline is better for PageSpeed scores while “separate file” is better for perceived performance. FlyingPress, Perfmatters, and LiteSpeed Cache all load used CSS in an external file, while WP Rocket is the only cache plugin I know that loads it inline.

Wp rocket used css
Both Perfmatters and Vikas agree the “external file” method is faster for visitors

If removing unused CSS in WP Rocket breaks your site, load CSS asynchronously (but it won’t give you as good of results). Once enabled, run your site through a critical CSS generator, copy the code, then paste it into fallback critical CSS (if you make CSS changes to your site, you’ll need to repeat this step). And if you’re still getting errors, use the helper plugin to exclude files.

Critical path css generator
Use a critical CSS generator to set a fallback critical CSS

Large CSS/JS files are usually from themes/plugins which you can check in your Chrome Dev Tools coverage report. Rather than relying on a plugin to fix these, you’ll have better results if you fix it at the source (by using lightweight themes/plugins and optimizing third-party code).

Css javascript chrome dev tools

Load JavaScript Deferred: On – loads JavaScript after the page has finished parsing and eliminates render-blocking resources in PSI. If you still see render-blocking issues, you can try installing Async JavaScript on top of WP Rocket then toggling on “apply defer” in the settings.

Async javascript
Try using Async JavaScript instead of WP Rocket (install and click “apply defer”)

Delay JavaScript Execution: On – reduces third-party code by delaying JavaScript until user interaction (such as scrolling or touching the screen on mobile). If this breaks your website, view WP Rocket’s compatibility exclusions and exclude any plugins/themes/services from delay.

This can significantly improve multiple areas of core web vitals. You could also use the Flying Scripts plugin which lets you add JavaScript manually and delay it using a timeout period, but WP Rocket works well. And remember, enabling this will disable and gray out combine settings.


4. Media

Enable all settings and exclude above the fold images from lazy load. But, we have a problem:

WP Rocket can’t lazy load CSS background images. There’s also no simple solution to exclude above the fold images from lazy load besides using helper plugins or excluding class names/attributes. It also can’t preload images. If you plan on using Perfmatters for lazy load (which does all these), leave the settings off in WP Rocket.

Wp rocket lazyload settings

Lazy Load Images: On – delays loading images until users scroll down the page and they become visible in the viewport. WP Rocket won’t lazy load background images since they’re loaded from CSS, resulting in defer offscreen images errors. That said, you have a few options:

Lazy load background images flyingpress
Many plugins have a lazy-bg class (or similar) to lazy load backgrounds, or exclude them
Above the fold images
Above the fold images should be excluded from lazy load and preloaded

Enable For Iframes And Videos: On – similar to lazy loading images but for iframes/videos.

Replace YouTube Iframe With Preview Image: On – replaces the “fat YouTube player” with a preview image so it’s only loaded when people click it. It can significantly improve load times when embedding videos. However, you may see external requests from which are from the thumbnails. FlyingPress is the only plugin I know that self-hosts YouTube placeholders.

Exclude Images Or Iframes – it’s counterintuitive to lazy load above the fold images/iframes since visitors see them immediately. WP Rocket can exclude images by URL, class, attribute, or:

  • Perfmatters can preload critical images where you set the number of images that usually load above the fold (i.e. 2-3) so they’re excluded from lazy load + preloaded automatically.
  • WP Rocket can exclude images by URL, class, or attribute. For example, featured images can often be excluded by adding “class=”attachment-full size-full”. There’s also a helper plugin to exclude a specific number of images from lazy load (but read their instructions).
  • There are a few plugins out there to preload images, featured images, or product images.

Add Missing Image Dimensions: On – adds missing width/height attributes to HTML images. This fixes layout shifts as well as use explicit width and height on image elements in PSI. When viewing your image’s HTML, it should now have a width and height with specified dimensions:

<img src="example.png" width="680" height="680" />

WP Rocket + RocketCDN don’t compress images, use WebP, or resize them for mobile. See the image optimization section for better alternatives than Imagify.


5. Preload

Learn how to reduce CPU usage by preloading only important sitemap URLs and changing the crawl interval, how to preload fonts, and why you (usually) don’t need to prefetch any domains.

Wp rocket preload settings

Activate Preloading: On – tells browsers to start fetching resources needed soon. If you’re getting high CPU usage, install the custom preload intervals helper plugin and change the crawl interval from the default 500ms to something like 1000ms. You could even set up a cron job so WP Rocket starts preloading at a specific time (i.e. in the middle of the night / low traffic hours).

Activate Sitemap-Based Cache Preloading: On – preloading the full sitemap increases CPU usage. Check your sitemap (i.e. and only add the most important URLs to cut down on CPU usage. In most cases, this is just your pages/posts.

Rank math xml sitemap

Preload Links: On – when users hover over a link for more than 100ms (or touches the link on mobile), the page will download in the background so when users click it, it appears to load instantly. This won’t improve scores but helps with perceived load time. The problem is if you have a site where users hover over lots of links (i.e. product images), it can cause CPU spikes.

Prefetch DNS Requests – check the sources tab of Chrome Dev Tools to see all third-party hostnames loading on your website. Most of these are already delayed (via delay JavaScript execution), so there’s no reason to prefetch them. WP Rocket automatically preconnects CDN CNAMEs +, so there’s no reason to prefetch these either. The only third-party domains you should prefetch are the ones not delayed or preconnected by WP Rocket. In most cases, this is only a couple domains or even 0. While preloading/preconnecting too many URLs can negatively impact on speed, prefetch is more forgiving if you add domains not being used.

Third party sources chrome dev tools

Preload Fonts – you don’t need to do anything here if remove unused CSS is on since WP Rocket will preload fonts automatically. If it’s not on, you’ll need to preload fonts manually.

Only self-hosted fonts can be preloaded (fonts served from your site, not Even though they’re faster and more GDPR compliant, WP Rocket recommends using third-party fonts (I don’t, and neither does basically anyone). Elementor can host fonts locally in  Theme Customizer → Performance. There are several other plugins that do this, like OMGF.

Self hosted vs third party fonts

Once fonts are hosted locally, open your GTmetrix Waterfall chart and view all your font files. Find any fonts loading above the fold or mentioned in your CSS file, copy their URLs, and paste them in WP Rocket to preload them. Retest your website in GTmetrix and you should notice the font’s blocking time is faster. Avoid preloading too many fonts which can have a negative effect. PSI used to tell you which fonts to preload in preload key requests, but I don’t think it does now.


6. Advanced Rules

There are only a handful of situations where you need to use WP Rocket’s advanced rules, but the high majority of websites can leave these as-is. WP Rocket is already compatible with most eCommerces sites (i.e. WooCommerce) and excludes the cart, checkout, and my account pages.

Wp rocket advanced rules settings

Never Cache URLs – if you’re using an eCommerce shopping cart that is not supported by WP Rocket, add your cart and checkout pages here which will exclude these pages from the cache.

Never Cache Cookies – same principle as previous option only based on cookies.

Never Cache User Agents – prevent Googlebot or other user agents from caching pages.

Always Purge URLs – let’s say you have a blogroll on your homepage. If you create a new post, you want that homepage blogroll updated immediately by emptying the homepage cache. That’s what this setting does, however WP Rocket automatically clears the cache for your homepage, categories and tags once new content is created… so there is usually no need for this. But if there are other page’s cache you want cleared when new content is posted, add it.

Cache Query Strings – query strings are URLs that look like this: ?country=italy. These URLs aren’t cached by default but if you want to cache them, add “country” in the field (for example).


7. Database

WP-Optimize is better for database cleanups, so jump down to that section.

Wp rocket database cleanup settings

  • Revisions: Off – every time you hit the “Publish” button, a post revision is stored. Instead of deleting all them which leaves you with no backups, they should be limited to maybe 3-10. You can do this by adding the code below to your wp-config file, or using WP-Optimize.
define('WP_POST_REVISIONS', 5);
  • Auto Drafts: Off – if you exit out of your browser accidently, WordPress will store auto drafts so you don’t lose your work. If you’re sure you don’t have any, you can delete them.
  • Trashed Posts: On – posts/drafts you deleted.
  • Spam Comments: On – comments marked as spam.
  • Trashed Comments: On – comments marked as trash.
  • Expired Transients: On – transients that expired and are still in your database.
  • All Transients: On – stores data that takes a long time to retrieve (i.e. blog social counts).
  • Optimize Tables: On – optimizes database tables but doesn’t work on the InnoDB engine.
  • Automatic Cleanup: Weekly – although you should take backups beforehand just in case.

WP-Optimize – better than WP Rocket because it can remove unused tables, take backups via UpdraftPlus, and save a certain amount of post revisions instead of deleting them all. Just by viewing these tables, you can learn which plugins/modules add the most database overhead. This is common with SEO plugins, security plugins, and other plugins that collect/process data.

Clean wordpress database wp optimize
Remove tables left behind by old plugins
Rank math database bloat
Disable plugin modules adding lots of overhead


8. CDN

Here are specs of popular CDNs.

RocketCDN SiteGround CDN FlyingCDN By FlyingPress FlyingProxy Cloudflare Enterprise Cloudways Cloudflare Enterprise Cloudflare Enterprise
CDN StackPath SiteGround BunnyCDN Cloudflare Cloudflare Cloudflare
Speed (Tbps) 100 Not listed 80 192 192 192
Locations 73 176 114 285 285 285
Full page cache x x APO x APO
HTTP/3 x x x
Brotli x
Priority routing x x x
Smart routing x Anycast x SmartEdge Argo Argo
Load balancing x x
WAF x x
Anti-DDoS x x
Image optimization x Limited Bunny Optimizer Mirage/Polish Mirage/Polish Mirage/Polish
Compression x
WebP x x
Mobile resizing x x
Bandwidth Not unlimited as advertised Unmetered Unlimited 100GB 100GB Determined by hosting plan
Price $8.99/mo $7.49/mo $.03/GB $10/mo $5/mo Free w/ hosting

From best to worst:

  • Cloudflare Enterprise – you hit 2 birds with 1 stone between arguably the best CDN, plus their hosting is faster than “premium hosts” like Kinsta. Their Cloudflare Enterprise is free and setup automatically. It uses full page caching (not supported on Cloudways) and Argo (not supported on FlyingProxy). But, you have to switch your host.
  • FlyingProxy – third-party Cloudflare Enterprise service by Gijo (from FlyingPress) and a big step up from Cloudflare free/pro since it uses all 285 Cloudflare PoPs, load balancing, and other Enterprise features. The main con is no Argo (which is great for dynamic sites).
  • Cloudways Cloudflare Enterprise – similar to and FlyingProxy but no APO support, costs $5/mo, and last time I checked, it served lots of annoying challenge pages.
  • Cloudflare Pro – full page caching with APO and Mirage/Polish for image optimization.
  • FlyingCDN – FlyingPress’ CDN which uses BunnyCDN with Bunny Optimizer (for image optimization) and geo-replication for cheaper than going through BunnyCDN ($.03/GB).
  • SiteGround CDN – as much as I dislike their hosting, they made big improvements to the CDN in version 2 with more locations and load balancing, but it still lacks many features.
  • BunnyCDN – performant CDN on with lots of settings like Bunny Optimizer (for image optimization) and geo-replication. Cloudflare + BunnyCDN is another option which can improve cache hit ratio and better image optimization from Bunny Optimizer.
  • RocketCDN  – only serves your files from StackPath’s CDN (which was removed from with no support for full page caching, image optimization, security features.

How you setup your CDN depends on which service you use. CDNs that use CDN URLs (i.e. BunnyCDN/RocketCDN) can be setup with WP Rocket. Cloudflare APO is setup through the Cloudflare plugin.’s is automatic, and FlyingProxy has video instructions. I also have a dedicated section for configuring Cloudflare.

This next section is for BunnyCDN which many people use with WP Rocket:

Step 1: Sign up for BunnyCDN and add code OMM5 to the billing section for $5 in free credits.

Bunnycdn promo code

Step 2: Create a pull zone, add your website name, and choose your regions.

Bunnycdn add pull zone

Step 3: Copy your CDN URL or set up a custom hostname like (optional).

Bunnycdn custom hostname

Add bunnycdn hostname to cloudflare
DNS settings for using a custom hostname

Step 4: Paste the CDN URL in WP Rocket’s CDN CNAME(s) field.

Wp rocket cdn settings

Step 5: Install the BunnyCDN plugin and add your pull zone name. Doing this and adding your CDN URL to WP Rocket can serve more assets and was recommended by BunnyCDN’s support.

Bunnycdn plugin

Step 6: Purge cache and view your source code to make sure files are served from the CDN.

Flyingcdn assets

Step 7: Change any URLs in your WP Rocket settings to match your new CDN URL from BunnyCDN (excluded images, preload fonts, etc). For example, an excluded image would look something like:

Step 8: Consider BunnyCDN’s geo-replication which automatically copies your files to their storage zones so files are pulled from the closest zone. It’s found in Caching → Perma-Cache.

Once you enable perma-cache, go to Storage → Add Storage Zone. Give your storage zone a name (your business name is fine), select your main storage region, then click “Enable Geo-Replication.” You will be prompted to select the regions where you want your files to be replicated. The price is $0.010/GB for the first 2 regions (including your main storage region) then $0.005/GB for each additional region. Just use the regions where you have lots of visitors.

When you’re done, click “Add Storage Zone.”

Bunnycdn perma cache

Now if you click your storage name (ommstorage), you’ll get a new set of menus where you can use the file manager to upload/access files from your edge storage zone, error handling settings, and the replication tab where you can add more storage zones in case you ever want to expand.

Bunnycdn geo replication

The last (optional) step would be to set up Bunny Optimizer for image optimization. Otherwise, you’re done!

Exclude Files From CDN – lets you serve files locally instead of the CDN. Usually, these files come from plugins designed to disregard cross domain load. In most cases, there is no need.


  • {uploads_dir}/wpcf7_captcha/*
  • {uploads_dir}/imagerotator.swf
  • {plugins_dir}/wp-fb-autoconnect/facebook-platform/channel.html


9. Heartbeat

Heartbeat shows you when other users are editing a page/post, real-time plugin notifications, etc. Disabling/limiting it in certain areas can decrease CPU usage since it runs every 15-60s by default. I recommend disabling Heartbeat in the backend and frontend, then reducing activity (to 120s) in the post editor since you want to keep things like autosaves and similar functions.

  • Backend: Disable
  • Post Editor: Reduce activity
  • Frontend: Disable

Wp rocket heartbeat settings


10. Add-Ons

Enable the add-ons you use.

Wp rocket addons settings

Varnish – only turn on if your host uses Varnish. This is turned on automatically for some hosts using Varnish (Cloudways, Flywheel, WP Engine) and off if using SiteGround, Kinsta, Pressable.

WebP Compatibility – disable in most cases. Even if you use WebP, it should be disabled when using a CDN, .htaccess rules, or <picture> elements to serve WebP images (also disable when using Optimole, ShortPixel Adaptive Images, or WebP Express). WP Rocket doesn’t create WebP images (I use BunnyCDN) so it’s just for compatibility reasons. If you notice images aren’t being served in WebP, try their helper plugin to force images which are using unsupported attributes.

Cloudflare – enable when using Cloudflare but leave off when using APO. The modify options have more settings to add your global API key, Cloudflare email, and Zone ID (for compatibility). No, that’s not my real Cloudflare API key shown in the screenshot – but thanks for looking out :)

Wp rocket cloudflare settings

  • Global API Key – found in your Cloudflare dashboard here.
  • Account Email – same email used in your Cloudflare account.
  • Zone ID – found in the Overview tab of your Cloudflare dashboard.
  • Development Mode: Off – only use when making lots of code changes to your site.
  • Optimal Settings: On – activates WP Rocket’s recommended Cloudflare settings which include the following changes: set the caching level to standard, enable auto minify for JavaScript, CSS and HTML, disable Rocket Loader, set browser cache expiration to 1 year.
  • Relative Protocol: Off – only used for flexible SSL, but full SSL is preferred.
  • Clear All Cloudflare Cache Files – Cloudflare’s cache should be purged automatically when WP Rocket’s is, but if you need to do it manually for some reason, you can do it here.

Sucuri – only enable if you’re using Sucuri’s firewall which clears Sucuri’s cache when WP Rocket’s cache is cleared. Modifying options prompts you to enter your Sucuri Firewall API Key.


11. Cloudflare

This section talks about Cloudflare, APO, and configuring Cloudflare’s dashboard. You don’t need to do this if you setup Cloudflare Enterprise via, Cloudways, or FlyingProxy.

Cloudflare APO – you can setup APO using the Cloudflare plugin, then disable the Cloudflare add-on in WP Rocket. Some people use the cache everything page rule or Super Page Cache for Cloudflare, but they’re not the same and cache everything can have admin bar issues. Is APO worth $5/mo? Yes… I would test your site in KeyCDN’s Performance Test and do a benchmark before/after APO. It caches HTML and you should see a TTFB improvement in several locations.

Step 1: Sign up for Cloudflare. Some hosts let you add Cloudflare directly in your hosting account, but the settings are limited. The only exception I would do this is if you’re using Enterprise. Otherwise, add your website to Cloudflare and they’ll assign you 2 nameservers.

Cloudflare namecheap nameservers

Step 2: Change nameservers in your domain registrar to Cloudflare’s.

Namecheap nameservers

Step 3: In Cloudflare’s DNS settings, change your website from DNS Only to Proxied. This activates their CDN by proxying traffic and is required to use APO as well as other features.

Cloudflare cdn proxy

Step 4: If you’re not using APO, turn on the Cloudflare add-on in WP Rocket, click “modify options,” then fill out your Cloudflare information (already explained in the add-ons section).

Step 5: If you plan on using APO, follow Cloudflare’s instructions or use mine:

Setting Up Cloudflare APO With WP Rocket

  • Use KeyCDN to benchmark TTFB in 10 locations.
  • Disable Cloudflare add-on in WP Rocket.
  • Keep caching enabled in WP Rocket which is a different layer.
  • Keep minification on in WP Rocket and leave it off in Cloudflare.
  • Make sure traffic is proxied through Cloudflare (required for APO).
  • Purchase APO in your Cloudflare dashboard.
  • Install the Cloudflare plugin.
  • Create an API token and add it to the Cloudflare plugin.
  • Purge cache in WP Rocket, then in Cloudflare.
  • Confirm APO is working using
  • Retest your site in KeyCDN to compare results.

Cloudflare APO can improve TTFB in multiple global locations (measured in KeyCDN)

Step 6: Configure your Cloudflare dashboard.

Free Cloudflare Settings

  • DNS – one of the fastest and most reliable DNS providers on
  • CDN – in your DNS settings, change your website from DNS only to proxied.
  • TLS 1.3 – fastest TLS protocol (I recommend setting min. TLS version to 1.2).
  • Bot Fight Mode – block spam bots which are logged into your firewall events.
  • Early Hints – early preload/preconnect hints which improves server wait time.
  • Crawler Hints – tells crawlers if content is updated to prevent wasteful crawls.
  • Page Rules – here’s a screenshot of 3 common page rules for WordPress sites.
  • Firewall Rules – another screenshot of 4 common firewall rules for WordPress.
  • HTTP/3 With QUIC – delivers website from faster HTTP/3 (use a HTTP/3 test).
  • Hotlink Protection – stops websites from copying images and using bandwidth.
  • Zaraz – offloads third-party scripts to Cloudflare (Google Analytics, Ads, others).
  • SXGs – prefetches content so it loads faster when your site is clicked in Google.

Paid Cloudflare Add-ons

  • APO – caches HTML and can improve TTFB in multiple global locations.
  • Argo – avoids congestion by routing traffic through fastest network paths.
  • Mirage + Polish – I prefer using Cloudflare to optimize images instead of plugins.
  • Load Balancing –  traffic is re-routed to healthier and faster origin servers. It’s also known as geo-based routing and is similar to the BunnyCDN perma-cache feature.
  • Rate Limiting – protects site + reduces bandwidth by stopping excessive requests.

Step 7: Check your Cloudflare Analytics in a few days to see how much bandwidth is being offloaded, along with other analytics. BunnyCDN may be doing some of the heavy lifting too.

Cloudflare bandwidth


12. Image Optimization

Unfortunately, WP Rocket doesn’t optimize images besides the lazy load settings.

For other image optimizations like compression/WebP, Optimole is better than Imagify because it resizes images for mobile (which can improve mobile LCP), supports AVIF, and has viewport + network-based optimizations like serving lower quality images on slow connections. However, image CDNs are better than plugins since they optimize images “on the fly” without adding bloat (such as backups). They’re also less taxing on your server and don’t use resources.

WP Rocket recommends Imagify because it’s their plugin. But just like WP Rocket/RocketCDN, it’s meant to be easy with lacking features. If you go this route, you ideally want to use it to compress images with about an 85% compression level. You could also optimize images before uploading them in Photoshop or other tools, but this doesn’t address mobile resizing, AVIF, etc.

Imagify ShortPixel Optimole SiteGround CDN Bunny Optimizer Mirage/Polish
Mobile resizing x SP Adaptive Images x
AVIF support x x x
Serve images from CDN x SP Adaptive Images Cloudfront Google Cloud
No server use x x x x
No bloat x x Offloading x
Price Free 20MB/mo then $9.99/mo Free 100 credits/mo then $3.99/mo Free 5,000 visits/mo then $19.08/mo $14.99/mo $9.5/mo or $.03/GB w/ FlyingCDN Free with


13. Tools

Import or export your WP Rocket settings, or rollback to the previous version.

Wp rocket tools

Export Settings – export your settings to use on multiple sites.

Import Settings – import your pre-configured WP Rocket settings.

Rollback – if you updated WP Rocket and it caused issues, fall back to the previous version.


14. Helper Plugins

WP Rocket’s helper plugins are listed on Github or you can do a Google search for them. I tried to list some of the most common helper plugins in this guide, but there are quite a few others.

Wp rocket helper plugins


15. High CPU Usage On WP Rocket

Some of my recommended WP Rocket settings should already help reduce CPU usage, like increasing cache lifespan and only preloading your important sitemap URLs. WP Rocket’s documentation also recommends setting up a cron job to clear WP Rocket’s cache/preload during low traffic hours, decreasing the remove unused CSS processing batch, or disabling preload completely. Beyond the documentation, here are a few other tips to reduce CPU usage:

  • Leave SiteGround (they have awful limits).
  • Offload as much bandwidth as you can to CDNs.
  • Block bad bots using Cloudflare’s bot fight mode.
  • Find slow plugins/bottlenecks using Query Monitor.
  • Use hotlink protection to stop people from copying images.
  • On top of Heartbeat, limit post revisions and autosave interval.
  • Keep your PHP, WordPress, MySQL, and other software updated.


16. Plugins You Need With WP Rocket

  • Perfmatters – remove bloat, better image optimization when it comes to preloading and background images, faster remove unused CSS, and a script manager to unload CSS/JS. In case you don’t want to pay for it, you can try plugins like Preload ImagesAsset CleanUp.
  • Optimole – more optimizations than Imagify and ShortPixel, but image CDNs are better.
  • ShortPixel Adaptive Images – if you’re using ShortPixel, this is needed to resize images for mobile, use ShortPixel’s CDN, and other features which are listed on the plugin page.
  • Cloudflare or BunnyCDN Plugin – assuming you’re not using RocketCDN, you’ll probably be using Cloudflare or BunnyCDN (or both) who each have their own plugin (BunnyCDN plugin for setting up BunnyCDN as well as Cloudflare’s plugin for adding Cloudflare APO).
  • Exclude LCP Images From Lazy Load – their helper plugin excludes a set number of above the fold images from lazy load for better LCP, instead of excluding them manually.
  • Redis Plugin – while other plugins like LiteSpeed Cache have an option to connect Redis, WP Rocket doesn’t, so you’ll need to install a separate plugin. The first step is to enable it in your hosting account, download the Redis plugin recommended by your host, then use it to connect. Most hosts support Redis, Memcached, or both (Redis has more advantages).


17. Configure Perfmatters With WP Rocket

Configure WP normally, then disable everything in Perfmatters except these settings:

General Settings – mostly for bloat removal and limiting things like post revisions, autosave interval, and tweaks that can also reduce CPU usage. The only duplicate feature is Heartbeat Control, so only use one plugin for that. Otherwise, the screenshot shows the same setting I use.

Perfmatters general settings with wp rocket

Remove Unused CSS – if real world browsing speed is more important than scores, use Perfmatters to remove unused CSS with the “file” method and disable it in WP Rocket. I also emailed Brian from Perfmatters who said to disable all CSS settings in WP Rocket when using it.

Perfmatters remove unused css inline vs. File

Preload Critical Images – WP Rocket can’t preload images, so do it in Perfmatters. Set the number of images that usually load above the fold (usually 2-3) and they’ll be preloaded. You don’t need to enable lazy load in Perfmatters to use it, and there’s no need to use WP Rocket’s helper plugin to exclude a set number of images (Perfmatters does it with these automatically).

Preload critical images perfmatters

CSS Background Images – Perfmatters makes it easy to lazy load CSS background images which includes a perfmatters-lazy-css-bg helper class you can add to additional CSS classes. Again, you can use WP Rocket’s lazy load and keep Perfmatters’ off while still using this feature.

Perfmatters lazy css bg

Preload – since WP Rocket only preloads fonts, you can use Perfmatters to preload CSS, JavaScript, and other file types. One example is preloading wp-block-library if you’re using Gutenberg (or if you’re not using Gutenberg, you can disable its CSS file in the script manager).

Perfmatters preload wp block library 1

Script Manager – removes unused plugins or single CSS/JS files on pages they’re not used, which can reduce CSS/JS. Enable the script manager in the Assets settings, go to your script manager settings, then enable test mode + display dependencies. Test mode lets you test the script manager without breaking your site by only showing changes to logged-in admins, but disable it when you’re done when you’re ready to publish changes. Display dependencies lets you see all plugins using jQuery in your script manager, which you should avoid when possible.

Disable social sharing plugins perfmatters
In this example, I disabled a social sharing plugin everywhere but posts


18. Configure SiteGround Optimizer With WP Rocket

WP Rocket addresses core web vitals better than SiteGround Optimizer, so I recommend only using SiteGround Optimizer for all 3 caching options, then disabling WP Rocket’s page caching using their helper plugin (so it doesn’t overlap with file-based caching). Then, you’ll configure WP Rocket normally, but leave all other settings disabled in SiteGround Optimizer. If you want, you can still use it for image compression/WebP. WP Rocket also has their own documentation.

Siteground optimizer caching settings wp rocket
Only use SiteGround Optimizer for caching, image compression, and WebP, then disable everything else


19. WP Rocket vs. FlyingPress vs. SG Optimizer

This is why I swapped WP Rocket for FlyingPress:

SG Optimizer WP Rocket FlyingPress LiteSpeed Cache
Server-side caching x x
Object cache integration x x
Delay JavaScript x
Remove unused CSS x Inline Separate file Separate file
Critical CSS x
Preload critical images x x x
Exclude above the fold images By class/type By URL/class Automatic Automatic
Lazy load background images x Inline HTML lazy-bg class x
Add missing image dimensions x
Lazy load iframes x
YouTube iframe preview image x
Self-host YouTube placeholder x x x
Host fonts locally x x
Font-display: swap x
Preload links x
Bloat removal (beyond Heartbeat) x x (details) x
Lazy render HTML elements x x
Guest Mode x x x
Advanced cache control x x x
Gravatar cache x x x
Limit post revisions Delete all Delete all Keep some Keep some
CDN Google Cloud StackPath BunnyCDN
CDN PoPs 176 73 114 80
Full page caching x x
CDN geo-replication x x x
CDN image optimization x x
CDN image resizing for mobile x x x
CDN DDoS protection x x
CDN bandwidth Unmetered Very limited Unlimited Unlimited
Documented APO compatibility x x x
Documentation Not detailed Good Not detailed Good
New features Infrequent Infrequent Frequent Frequent
Facebook group Join Join Join Join
CDN price $14.99/mo $8.99/mo $.03/GB $.02-.08/GB
Plugin price Free $59/year $60/year Free
Renewal price Free $59/year $42/year Free
View tutorial View tutorial View tutorial

Omm switches to flyingpress


20. Try + Cloudflare Enterprise (100ms Global TTFB)

If you understand how TTFB works (and that your hosting/CDN are the 2 biggest factors), with their free Cloudflare Enterprise is a no-brainer. I’ve already used Cloudways Vultr HF, SiteGround cloud, and tried Kinsta/WPE/WPX. None of these have a ~100ms global TTFB because they use inferior hardware/software/CDNs which you’ll see in the table below.

Plus, they usually end up costing more. Especially between price increases, upgrades from CPU/PHP worker limits, half-ass CDN integrations charged as add-ons, and paid migrations. doesn’t charge for add-ons (or do any of this) and support makes Kinsta look like SiteGround. From sign up to launch, they handled everything with unlimited free migrations.

It makes no sense… why pay more for a worse TTFB/support? Just because they’re “less popular” since they launched in 2020 and don’t do aggressive marketing? So I joined their affiliate program (which pays the exact same as my previous 2 hosts) and started changing hosting recommendations. Since then, they’ve been getting excellent feedback in Facebook groups and TrustPilot. And for me personally, it’s satisfying seeing people’s migration results.

Average ttfb speedvitals

10 things to know about TTFB:

  1. Hosting/CDN are the 2 biggest TTFB factors.
  2. TTFB is 40% of LCP and also part of FCP/INP.
  3. Which means it impacts 4/6 user metrics in PSI.
  4. SpeedVitals measures TTFB in 40 global locations.
  5. Test your site 3 times in SpeedVitals for accurate numbers.
  6. Doing this ensures your caching/CDN are working properly.
  7. Check your average TTFB of all 40 locations in your 3rd test.
  8. PSI + GTmetrix only test TTFB in 1 location (use SpeedVitals or KeyCDN).
  9. Google flags your TTFB if it’s over 600ms, but 100-200ms is obviously better.
  10. WP Hosting Benchmark also tests hosting performance (here are my results).

SiteGround Cloud Jump Start Plan Kinsta Starter Plan Cloudways Vultr HF (2GB) Starter Plan
Type Cloud Cloud (shared containers) Cloud Private cloud
Server Apache + Nginx Apache + Nginx Apache + Nginx Apache + Nginx
Nginx reverse proxy $50/mo
Cores/RAM 4 cores/8GB 12 cores/8GB 1 core/2GB 32 cores/128GB
Storage 40GB SATA 10GB SATA 64GB NVMe 10GB NVMe
Object cache Memcached $100/mo Redis Redis Pro Redis (Redis Pro on Business plan)
PHP processor FastCGI FastCGI FPM LiteSpeed
PHP workers Not listed, but common CPU limits 2 No limit No limit
Memory limit Adjustable 256MB Adjustable 1GB
Database MySQL MySQL MariaDB MariaDB
Bandwidth + visits 5TB/mo 25k/mo 2TB/mo 50GB + 250k/mo
CDN $14.99/mo SiteGround CDN Cloudflare APO + firewall rules (read) $5/mo Cloudflare Enterprise + challenge pages Free Cloudflare Enterprise (details)
CDN locations 176 285 285 285
Full page caching x
Smart routing Anycast x Argo Argo
Image optimization Limited x Mirage/Polish Mirage/Polish
DNS Blocked by Google (4 days) Amazon Route 53 $5/mo DNS Made Easy Cloudflare
Cache plugin SG Optimizer Use WP Rocket or FlyingPress Breeze Use WP Rocket or FlyingPress
Data centers 10 35 44 Served from Cloudflare’s edge
Control panel Site Tools MyKinsta Custom (difficult) Mission Control
Email hosting x x x
Support C B C A
Migrations $30/site Unlimited free 1 free + $25/site Unlimited free
TrustPilot rating 4.6/5 4.2/5 4.5/5 4.9/5
How it starts costing more High initial price, CPU limits, CDN, price increases, internal incidents PHP workers, add-ons, monthly visits, bandwidth, price increases CPU limits, CDN, backups, price increases Bandwidth
Monthly price $100 + CDN $29 when paying yearly + add-ons $30 + CDN $25 when paying yearly (no add-ons)

*Here’s another table comparing vs WP Engine, WPX, and Flywheel.


  • CDN integrations – most hosts do incomplete CDN integrations and forget key features like image optimization or full page caching on Cloudways + WPX. Or they replace Cloudflare with their own “better” CDN. Cloudflare Enterprise is not only a TTFB powerhouse with it’s massive network/features, but Rocket has the closest thing to true Cloudflare Enterprise thanks to Ben’s experience as StackPath’s Chief Product Officer. It’s free and works automatically the minute your site is launched.
  • LiteSpeed PHP – not to be confused with LiteSpeed servers, but LiteSpeed’s PHP is “similar to FCGI, but is more efficient” according to the official website.
  • Mirage/Polish – automatically optimize images (compression, WebP, etc) using Cloudflare without adding bloat or using resources like plugins do (1 less plugin).
  • WooCommerce optimized – is specifically good for WooCommerce with Redis Object Cache Pro‘s Relay integration, APO, Argo Smart Routing, NVMe SSDs, no PHP worker limits, and smart caching uses less resources when purging.
  • DNS – uses Cloudflare’s DNS which is consistently a top performer on SiteGround’s CDN makes you use their internal DNS which caused 2 million domains to be blocked by Google. Kinsta uses Amazon Route 53 DNS (and Cloudways charges for DNS Made Easy) which are both slower than Cloudflare’s.
  • Does a close data center matter? – with a 100ms global TTFB, not really. If you use a CDN without features like full page caching and smart routing, then it does.
  • Pricing – has lower bandwidth, but they often cost less after taking into account paid add-ons and upgrade schemes with other cloud hosts. My blog uses about 200GB bandwidth/mo, so the $100/mo Business plan is suitable and less than I would pay at SiteGround/Cloudways/Kinsta/WP Engine. It’s transparent usage-based pricing without charging for add-ons, hidden fees, or resource limits.

My Experience

  • SiteGround Cloud (2 years) – upgraded from the GoGeek plan but ran into CPU limits and 503 errors until I was paying $180/mo, which seems to be a common theme. I eventually moved to Cloudways which cut load times and billing in half.
  • Cloudways (2 years) – moved to DigitalOcean then Vultr HF. Thought it was great until I discovered Unlike Cloudways, their Cloudflare Enterprise is free, supports APO, and doesn’t serve annoying challenge pages. They give you access to more cores/RAM and use faster LiteSpeed PHP. CW was recently acquired by DigitalOcean who raised prices when scaling on Cloudways was already expensive.
  • (current) – 1st thing I noticed was support is night and day (they’ve never sent me instructions to do something myself) and my website/support were much more responsive. Been using them since 2022 and don’t see myself moving.
  • Kinsta (tested) – I was always skeptical because of how much marketing I saw. Come to find out, it was a marketing company that got into hosting. I tested them but never moved my site because I kept finding awful limitations hidden on inner pages on top of the low visits/PHP worker limits. The Cloudflare integration isn’t close to Enterprise and their TrustPilot rating sank. Quit ripping people off Kinsta!
  • WPX (tested) – targets a 400ms international TTFB, so that should already tell you something. I was skeptical because out of nowhere, Matthew W dubbed them the fastest host when it’s shared hosting and a CDN that only has 36 locations without full page caching. Again, it seems like the CEO is more into marketing than hosting.
  • WP Engine (avoided) – similar limits as Kinsta, incomplete Cloudflare integration, expensive overcharges, and overpriced. Haven’t used them for years but if you see affiliates recommending them it’s because they pay out $200 for each commission.

Rocket. Net top tier wordpress hosting benchmarks was top tier in Kevin Ohashi’s WP Hosting Benchmarks

Aside from my biased opinions, you can read Ben’s AMA or search for feedback in Facebook groups. Sure, they have all 5/5 star TrustPilot reviews, but you’ll also see many people moving from other cloud hosts to Rocket and not the other way around (even if you search SG’s 11,000 TrustPilot reviews). You can see more migration results by searching their TrustPilot for “TTFB.”

Move to rocket. Net from sitegroundSiteground cloud cpu usage upgrades
Kinsta to rocket. Net resultsRocket. Net vs cloudways cpu usageRocket. Net no competitionRocket. Net trustpilot review
Siteground to cloudways to rocket. Net 2Rocket. Net vs siteground commentMoved to rocket. Net vs sitegroundSiteground cloud hosting bad reviewKinsta to rocket. Net ttfb redisRocket. Net vs kinstaRocket. Net vs kinsta priceRocket. Net faster than cloudwaysRocket. Net vs. Cloudways comparisonBluehost to cloudways to rocket. NetSiteground to rocket. Net post 2Rocket. Net vs cloudways vultr hf trustpilot review

They let you try them for $1 your 1st month with free migrations. Or reach out to Ben and schedule a demo if you want to check them out beforehand. Rocket’s dashboard is easy and Cloudflare Enterprise works automatically, so the only thing I had to do initially was upgrade PHP versions, ask support to install Redis, then remove old CDN/image optimization plugins.

Still have questions? Drop me a comment and I’ll get back to you as soon as I can.


You Might Also Like:


  1. Great post, thank you! I viewed in January 2023 and appreciate it having been updated from its original publication date. I looked through my WP Rocket settings while scrolling down this post and was able to make some noticable improvements! Thanks!
    I use WPX hosting for my site ( and have been happy. It’s right-sized for me. However, looks pretty sweet and I see its appeal for national or global sites like yours. My audience is primarily local.

    • Whoa, a few more tweaks and my GT score is A, 100%, 100%. I’ve strived for that for several years and never quite hit it. Fist bump, thanks Tom!

    • Hey Scott,

      Yes, I’ve been in a 1.5 year process of updating posts to be current and will release some new tutorials after it’s “done.”

      Glad you got better results! I would monitor your uptimes since I’ve heard WPX has had downtimes. I’ve obviously become a big fan of but I’m not one to say “switch hosts” if you’re already happy with yours.

  2. Hi Tom,

    I’m using Perfmatters to remove unused CSS. In WP Rocket, should I still enable “minify CSS files” and “combine CSS files”?

    So in other words, when using WP Rocket and Perfmatters together, you should let WP Rocket minify and combine the CSS files and then let Perfmatters remove the unused CSS? Is that right?


    • Hey Jesse,

      Sorry it’s taken my a bit to get back to you. I actually contacted Perfmatter’s support to make sure I answer this correctly. I think you should be able to use those settings in WP Rocket while using Perfmatters to remove unused CSS, but I’ll leave another comment when I hear back from them.

    • From Perfmatters:

      Regarding minification, combination, and deferral:

      • If you’re using Unused CSS in Perfmatters, it’s best to leave off any CSS optimizations in WP Rocket. They wouldn’t really be needed anyways since everything will be parsed out into a “used CSS file” by Perfmatters, and then the other stylesheets are delayed.
      • If you’re using Unused CSS in Perfmatters, it’s completely fine to use JS minification, JS combination, and JS deferral in other solutions such as WP Rocket, Autoptimize, etc.

      So yes, it’s OK to mix and match things, but do it by “feature” if that makes sense.

  3. That’s a very detailed & highly informative blog. Can you please suggest which one should I use for our site? W3 total cache or WP Rocket? Thanks

  4. I’ve come back to this article (and others) at least 50 times over the last year or so. People think I’m a genius but really I just know where to look haha.

    But honestly these tutorials have helped so much. There’s so many articles and “experts” out there with the “best settings for wp rocket” or other but they’re so generic and uniformed.

    The detail in your articles, the explanation, the comparisons – it’s unreal. Thank you.

  5. Hi Tom. Your wp rocket settings you wrote here allowed our website to crush all testing sites like gtmetrix, Pingdom, and google’s pagespeed insights. What a difference over wp fastest cache. Thank you so much for taking the time to write a perfect “how-to” for us non-technical readers. Luckily we had no issues with our website once wp rocket was implemented.

    • That’s awesome Gregory! Ty for letting me know you had good results. You’d probably get even better with FlyingPress :) but also, I guess don’t fix what ain’t broken.

    • Hey Paul,

      Yes I would, I’m using FlyingPress, Redis Object Cache, and you may also want to use Perfmatters for some things like unloading CSS/JS.


Leave a Comment