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.
- File Optimization
- Advanced Rules
- Image Optimization
- Helper Plugins
- High CPU Usage
- Plugins you need with WP Rocket
- Configure Perfmatters with WP Rocket
- Configure SiteGround Optimizer with WP Rocket
- WP Rocket vs. FlyingPress vs. SG Optimizer
- Try Rocket.net + Cloudflare Enterprise (100ms Global TTFB)
Affiliate Disclaimer – I use aff links and you can get 10% off on their coupons page.
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.
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.
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
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.
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.
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.
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.
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).
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.
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:
- Perfmatters lazy loads CSS background images (also use perfmatters-lazy-css-bg class).
- GeneratePress can now inline background images in which case, they will be lazy loaded.
- Optimole lazy loads them using CSS selectors (you’ll use Chrome Dev Tools to find them).
- Add your own lazy-bg class – or switch to FlyingPress which already has this class built-in.
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 ytimg.com 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.
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.
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. https://example.com/sitemap_index.xml) and only add the most important URLs to cut down on CPU usage. In most cases, this is just your pages/posts.
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.
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 fonts.gstatic.com). 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.
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.
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).
WP-Optimize is better for database cleanups, so jump down to that section.
- 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.
- 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.
Here are specs of popular CDNs.
|RocketCDN||SiteGround CDN||FlyingCDN By FlyingPress||FlyingProxy Cloudflare Enterprise||Cloudways Cloudflare Enterprise||Rocket.net Cloudflare Enterprise|
|Speed (Tbps)||100||Not listed||80||192||192||192|
|Full page cache||x||✓||x||APO||x||APO|
|Image optimization||x||Limited||Bunny Optimizer||Mirage/Polish||Mirage/Polish||Mirage/Polish|
|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:
- Rocket.net 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 Rocket.net 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 cdnperf.com 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 cdnperf.com) 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. Rocket.net’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.
Step 2: Create a pull zone, add your website name, and choose your regions.
Step 3: Copy your CDN URL or set up a custom hostname like cdn.exmaple.com (optional).
Step 4: Paste the CDN URL in WP Rocket’s CDN CNAME(s) field.
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.
Step 6: Purge cache and view your source code to make sure files are served from the CDN.
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: https://cdn.onlinemediamasters.com/wp-content/uploads/2022/05/logo.png
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.”
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.
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.
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
Enable the add-ons you use.
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 :)
- 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.
- 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.
This section talks about Cloudflare, APO, and configuring Cloudflare’s dashboard. You don’t need to do this if you setup Cloudflare Enterprise via Rocket.net, 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.
Step 2: Change nameservers in your domain registrar to Cloudflare’s.
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.
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 uptrends.com.
- Retest your site in KeyCDN to compare results.
Step 6: Configure your Cloudflare dashboard.
Free Cloudflare Settings
- DNS – one of the fastest and most reliable DNS providers on dnsperf.com.
- 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.
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||✓||✓|
|Serve images from CDN||x||SP Adaptive Images||Cloudfront||Google Cloud||✓||✓|
|No server use||x||x||x||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 Rocket.net|
Import or export your WP Rocket settings, or rollback to the previous version.
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
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 Images + Asset 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.
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.
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).
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.
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.
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.
19. WP Rocket vs. FlyingPress vs. SG Optimizer
This is why I swapped WP Rocket for FlyingPress:
|SG Optimizer||WP Rocket||FlyingPress||LiteSpeed Cache|
|Object cache integration||✓||x||x||✓|
|Remove unused CSS||x||Inline||Separate file||Separate file|
|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||✓||✓|
|Bloat removal (beyond Heartbeat)||x||x||✓ (details)||x|
|Lazy render HTML elements||x||x||✓||✓|
|Advanced cache control||x||x||x||✓|
|Limit post revisions||Delete all||Delete all||Keep some||Keep some|
|Full page caching||✓||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|
|View tutorial||View tutorial||View tutorial|
20. Try Rocket.net + Cloudflare Enterprise (100ms Global TTFB)
If you understand how TTFB works (and that your hosting/CDN are the 2 biggest factors), Rocket.net 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. Rocket.net 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.
10 things to know about TTFB:
- Hosting/CDN are the 2 biggest TTFB factors.
- TTFB is 40% of LCP and also part of FCP/INP.
- Which means it impacts 4/6 user metrics in PSI.
- SpeedVitals measures TTFB in 40 global locations.
- Test your site 3 times in SpeedVitals for accurate numbers.
- Doing this ensures your caching/CDN are working properly.
- Check your average TTFB of all 40 locations in your 3rd test.
- PSI + GTmetrix only test TTFB in 1 location (use SpeedVitals or KeyCDN).
- Google flags your TTFB if it’s over 600ms, but 100-200ms is obviously better.
- WP Hosting Benchmark also tests hosting performance (here are my results).
|SiteGround Cloud Jump Start Plan||Kinsta Starter Plan||Cloudways Vultr HF (2GB)||Rocket.net 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 workers||Not listed, but common CPU limits||2||No limit||No limit|
|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)|
|Full page caching||✓||✓||x||✓|
|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|
|Migrations||$30/site||Unlimited free||1 free + $25/site||Unlimited free|
|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 Rocket.net 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 php.net 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 – Rocket.net 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 – Rocket.net uses Cloudflare’s DNS which is consistently a top performer on dnsperf.com. 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 – Rocket.net 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.
- 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 Rocket.net. 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.
- Rocket.net (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.
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.”
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.