The Ideal FlyingPress Settings: A Faster Replacement For WP Rocket/Perfmatters, Or Use It On Top Of SiteGround Optimizer

Flyingpress settings

Unless you’re using LiteSpeed Cache on a LiteSpeed server, FlyingPress is the way to go.

After WP Johnny recommended switching from WP Rocket to FlyingPress, LCP and browsing speed were both noticeably faster. Curious why, I compared their features in the table below.

FlyingPress is similar to WP Rocket. But it can also remove bloat, host third-party code locally, and better optimize LCP images and CSS. FlyingCDN (BunnyCDN) is also faster than RocketCDN (StackPath). Gijo releases new features regularly, has better support, and renewals are cheaper.

Since the Perfmatters script manager is one of the only features FlyingPress can’t do, you can use Asset CleanUp for this (which disables plugins on pages they’re not used). By moving from WP Rocket/Perfmatters to FlyingPress/Asset CleanUp, you get a faster site and save $39.95/year.

While I’m not a fan of their hosting, SiteGround Optimizer can be used for caching only, then FlyingPress for everything else… because it does a much better job optimizing core web vitals.

If you don’t know Gijo Varghese, he runs the WP Speed Matters Facebook group and is one of the smartest speed gurus. I’m happy to support his team for creating what is arguably is the #1 cache plugin of 2023. Activate your license key and let’s go configure your FlyingPress settings.

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 viewport images from lazy By class/type By class/URL Automatic Automatic
Lazy load iframes x
Lazy load background images x Inline HTML lazy-bg class x
Lazy render HTML elements x x
Add missing image dimensions x
YouTube iframe preview image x
Local YouTube placeholder x x x
Local Gravatars x x Caching
Local fonts x x
Font-display: swap x
Preload links x
Bloat removal (beyond Heartbeat) x x (details) x
Guest Mode x x x
Advanced cache control x x x
Limit post revisions Delete all Delete all Keep some Keep some
CDN Google Cloud StackPath BunnyCDN QUIC.cloud
CDN PoPs 187 73 120 83
Full page caching x x
CDN image optimization x x
CDN permanent storage x x x
CDN mobile image resizing x x x
CDN DDoS protection x x
CDN bandwidth Unmetered Very limited Usage-based Usage-based
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

 
My current setup is Rocket.net (with free Cloudflare Enterprise) + FlyingPress + Perfmatters. I kept Perfmatters because I write about it so much. Feel free to test my site or browse through it.

 

1. Dashboard

Just an overview with some purge/preload options.

Flyingpress dashboard settings

  • Purge pages: HTML pages are purged from the cache.
  • Preload cache: cached pages are overwritten instead of purging entire cache.
  • Purge pages and preload: HTML pages are purged, then preloaded.
  • Purge everything and preload: same as previous setting only it includes everything.
  • Documentation – FlyingPress has great documentation. Download the plugin from the FlyingPress website and upload it (key is attached to the zip file and added automatically).
  • Facebook community – the FlyingPress Facebook Group is a great place to browse questions, ask new questions, give Gijo feedback, and see upcoming features/updates.
  • Open a ticket – leads to the contact page where you can get support (often from Gijo himself) which is the best support I’ve gotten from any cache plugin, including WP Rocket.

 

2. Cache

FlyingPress’ cache now always remains on. If you’re using another caching layer like Nginx, Varnish, or APO, FlyingPress will serve as a fallback cache which can improve cache hit ratio. Since page caching is a different layer than these, there shouldn’t be any compatibility issues.

Flyingpress cache settings

  • Cache logged in users: Off – only enable if you run a membership site (or similar) and have users logging in that need their own cache, otherwise it requires server resources.
  • Scheduled preload: Never – Gijo says you should only change it when facing problems with the cache where it’s not updated on time (the cache will be overwritten, not purged).
  • Exclude Pages from Caching: key eCommerce pages, admin/login pages, and several others are automatically excluded from the cache (see list), but you can add more here.
  • Ignore Query Strings: if you have query strings that should be ignored and not cached (i.e. ad campaigns), add them here. FlyingPress has a list of query strings it ignores by default. Johnny also has a detailed guide on when to ignore query strings with examples.
  • Bypass cookies: can decrease performance and not recommended unless you need to.
  • Test the cache – test your website in uptrends.com and look for x-flying-press-cache: HIT.
Uptrends flyingpress cloudflare cache
Make sure FlyingPress (yellow) and your CDN (red) get a cache: HIT

 

3. CSS

Flyingpress css settings 1

  • Minify CSS: On – usually gives you better results, but test it. Johnny says leave it off on larger sites. Cloudways says enable it in your cache plugin, then disable it in Cloudflare.
  • Remove unused CSS: On – use either FlyingPress or Perfmatters for this, but not WP Rocket (see loading used CSS inline vs. separate file). FlyingPress loads used in a separate file which is faster for users, but slightly worse for scores. WP Rocket loads used CSS inline which is better for scores, but slower for actual users. Perfmatters has an option for both.
  • Load unused CSS: remove – best for performance but requires excluding files if they break your site. View common unused CSS exclusions in the Perfmatters documentation for Elementor, Divi, and several others. If you’re still having trouble, “on user interaction” in the next best setting. FlyingPress’ documentation explains the difference between the 3.
  • Exclude stylesheets: if the setting above, breaks your site, exclude problematic CSS files.
  • Include selectors: if FlyingPress isn’t able to detect certain CSS selectors to include in used CSS, add them here. Gijo originally gave the example of a cookie-notice CSS selector.
  • Lazy render elements – similar to lazy loading images only for anything on your site if it loads below the fold. Comments (#comments) and footer (#footer) are common as well as Elementor/Divi sections and WooCommerce related products. Check your own site’s CSS selectors by viewing your site → right click any element you want to lazy render → inspect → right click highlighted code → copy → copy selector → paste into FlyingPress.
Css selectors chrome dev tools
Lazy load anything (like your comments/footer) by copying their CSS selector, then adding it to FlyingPress
Wp rocket used css
Vikas explains why FlyingPress/Perfmatters are more effective at removing unused CSS than WP Rocket

 

4. JavaScript

Flyingpress javascript settings 1

  • Minify JavaScript: On – same principle as minify CSS only for JavaScript (test results).
  • Preload linksOn for VPS hosting, Off for shared – when users hover over a link, that page is preloaded so by the time users actually click it, it appears to load instantly. While this doesn’t improve scores, it does improve perceived load time. But it also means if users hover over lots of links (such as a WooCommerce site with tons of image links), a bunch of pages will be preloaded which stresses your server. Whether you should enable it depends whether your hosting is powerful enough, and whether your users hover over lots of links.
  • Defer JavaScript: On – can fix render-blocking errors by loading JS asynchronously. WP Johnny suggests disabling it since it improves scores but slows down your site, so test it.
  • Defer inline: On – if you enabled the previous setting, you usually want to enable this too.
  • Exclude scripts from defer: check the Console tab in Chrome Dev Tools to see whether certain JS files are causing issues when being deferred, then exclude them here if needed. “hooks.min.js” and “i18n.min.js” are common exclusions in Perfmatters’ documentation.
  • Delay JavaScript: Delay all – best for performance but like removing unused CSS, you’ll need to exclude files. Luckily, Perfmatters also has common JS delay exclusions. If you’re having trouble, use “delay selected” and add JS files manually found in your “third-party code” + “remove unused JavaScript” report (see screenshot). FlyingPress already delays many of them like Google Analytics and reCAPTCHA, but there may be others. You can also try delaying plugins loading below the fold (wp-content/plugins/plugin-name), AdSense (adsbygoogle.js), and GTM (googletagmanager.com). AdSense isn’t delayed by default because it can affect your revenue, and because some people load it above the fold (ugh).

Common third-party code to delay:


google-analytics.com
xfbml.customerchat.js
fbevents.js
widget.manychat.com
cookie-law-info
grecaptcha.execute
static.hotjar.com
hs-scripts.com
embed.tawk.to
disqus.com/embed.js
client.crisp.chat
matomo.js
usefathom.com
code.tidio.co
metomic.io
js.driftt.com
cdn.onesignal.com

 

5. Fonts

Flyingpress font settings

  • Optimize Google Fonts: On – hosts fonts locally (instead of creating external requests to fonts.gstatic.com), combines, and inlines them. This can’t be done for third-party JS files.
  • Display fallback fonts: On – adds font-display: swap to CSS which fixes “ensure text remains visible during webfont load” in PSI. Until your font is loaded, a fallback font is used to prevent FOIT (flash of invisible text), but it can cause FOUT (flash of unstyled text).
  • Preload fonts: view font files in a Waterfall chart (like GTmetrix) and test preloading them. Gijo recommends only preloading fonts mentioned in the CSS file and fonts loading above the fold. When you’re done, check for preloading errors in the Console tab of Chrome Dev Tools. Preloading fonts that aren’t being loaded is a no no, so make sure URLs are correct.

 

6. Images

Flyingpress image settings

  • Lazy load images: On – FlyingPress uses native lazy load while Perfmatters’ is JS-based. There are arguments for both, but only enable lazy load in one plugin (I use FlyingPress).
  • Exclude above the fold images: Usually 2-3 – this should be the number of images that usually load above the fold. Most my posts have 3 above the fold images (see screenshot below) so I set it to 3. These will automatically be excluded from lazy load and set as high priority for better LCP. You can also exclude them manually by adding their image URLs.
  • Add responsive images using FlyingCDN: On – serves smaller images to mobile for better mobile LCP when using FlyingCDN (which uses Bunny Optimizer from BunnyCDN). Can also be done with Cloudflare’s image resizing, ShortPixel Adaptive Images, Optimole.
  • Add missing width and height: On – adds width/height to images which can fix “use explicit weight and height” in PSI. If you’re still seeing this error, it’s probably from CSS or custom coded images. In this case, add the dimensions manually or specify them in CSS.
  • Host Gravatar images locally: On – Gravatars create third-party requests which hurts scores if you have lots of comments. This hosts Gravatar images locally to prevent this.
  • Preload critical images: On – FlyingPress will attempt to detect above the fold images and preload them for better LCP. Most other cache plugins make this a manual process.
  • Disable emoji: On – removes a small JavaScript code in WordPress that displays emojis.
Lazy load background images flyingpress
To lazy load background images, add the lazy-bg helper class
Above the fold images
Count the number of above the fold images, then exclude that number

 

7. IFrames

Flyingpress iframe settings

  • Lazy load iFrames: On – iFrames like embedded YouTube videos and Google Maps will only be load when they’re near the viewport, then excluded when they’re in the viewport.
  • Use placeholder image for YouTube videos:  On – replaces YouTube iFrames with a preview image and self-hosts YouTube placeholder images to prevent external requests to i.ytimg.com. This also means YouTube thumbnails can be cached and served from a CDN.

 

8. Bloat

These can overlap with Perfmatters’ General settings, so only enable them in 1 plugin.

Flyingpress bloat settings 5

  • Remove Google Fonts: Off – only use if you’re in the process of using system fonts or custom fonts and need them disabled. Otherwise, it removes Google Fonts from the site.
  • Disable XML-RPC: On – bad for speed + security (used to publish content from mobile).
  • Disable RSS feed: Off – you would only turn this on if your website doesn’t have a blog.
  • Disable Block editor CSS: Off – if you’re using Gutenberg, leave it off. If you’re using a page builder instead, turn this on. This prevents a CSS file from loading across your site.
  • Disable oEmbeds: On – when you paste a URL into your WordPress editor, this loads a pretty preview (from YouTube, Facebook, Tweets, etc). If you don’t need this, turn it on.
  • Disable Emojis: On – removes a JavaScript file needed for emojis (use Unicode instead).
  • Disable WP Cron: Off – easy way to disable wp-cron, then you would add a real cron job (see your hosting instructions) which can reduce CPU usage. In which case, turn this on.
  • Disable jQuery Migrate: Off – if you’re not using a page builder, turn it on. Perfmatters has docs on dealing with jQuery in the script manager, defer, delay, and preload settings.
  • Disable Dashicons: On – prevents admin icons from loading a CSS file on the frontend.
  • Control Post Revisions: 5 or 10 – this gives you enough revisions where if you need a backup, you have a few to choose from, but still stops them from adding too much bloat.
  • Control Heartbeat: Enable only while editing posts for 60s – also recommended by Perfmatters (especially if using page builders) to disable it unless you’re editing content.

 

9. CDN

Cloudflare Enterprise is the fastest CDN but requires hosting from Rocket.net or Cloudways.

BunnyCDN FlyingCDN Cloudways Cloudflare Enterprise Rocket.net Cloudflare Enterprise
Locations 120 120 310 310
Speed (Tbps) 80 80 228 228
Full page caching x x APO APO
HTTP/3 x x
Brotli
Priority routing x x
Smart routing SmartEdge SmartEdge Argo Argo
Load balancing
Image optimization Bunny Optimizer (extra $9.5/mo) Bunny Optimizer (included) Mirage/Polish Mirage/Polish
Image compression
WebP
Mobile resizing
Cache miss Geo-replication (extra $.045/GB) Geo-replication (included) Request to origin Request to origin
WAF
DDoS protection
Bandwidth Unlimited Unlimited 100GB Determined by hosting plan
Price $.01 – .06/GB + cost of Bunny Optimizer and geo-replication $3/100GB $5/mo Free with hosting

 
Otherwise, use Cloudflare APO with FlyingCDN. You get Cloudflare’s massive network/features with full page caching (great for TTFB). You also get FlyingCDN which uses BunnyCDN’s Bunny Optimizer (for image optimization) and geo-replication. 2 big benefits of Bunny Optimizer are mobile image resizing (to reduce mobile LCP… something most plugins/CDNs don’t do). And it doesn’t use server resources to optimize images like plugins do, which can help reduce CPU + memory usage. FlyingCDN also costs $3/100GB which is less than buying these from BunnyCDN.

WP Rocket’s RocketCDN isn’t good and SiteGround’s CDN makes you use their DNS which caused 2 million sites to get deindexed in Google. That said, I don’t recommend either of those.

Cloudflare with bunnycdn

TTFB is 40% of LCP and hosting/CDN are 2 key factors. That’s why my global TTFB is so low in KeyCDN & SpeedVitals which test TTFB in multiple locations, unlike GTmetrix and other tools.

Keycdn global ttfb

FlyingCDN Instructions

Step 1: Add money to your FlyingCDN account.

Recharge flyingcdn account

Step 2: Set up a custom CDN URL by adding a CNAME record to your DNS.

Flyingcdn custom domain

Step 3: Add your CDN URL to FlyingPress and select the types of files to serve (i.e. all files).

Flyingpress cdn settings

Step 4: View your source code and make sure the correct files (i.e. CSS/JS/fonts) are being served from FlyingCDN. You can also try purging or waiting some time for the files to update.

Flyingcdn assets

FlyingCDN includes Bunny Optimizer which is BunnyCDN’s image optimization service for compression, WebP, mobile resizing, and other features. It’s used automatically with FlyingCDN.

Bunnycdn optimizer settings

It also uses geo-replication which copies files to BunnyCDN’s storage zones and are pulled from the closest zone so requests don’t hit the origin. It improves cache hit ratio and reduces latency.

Bunnycdn perma cache

Cloudflare APO Instructions

FlyingPress is fully compatible with Cloudflare APO. I wrote a detailed guide on setting up Cloudflare APO using the Cloudflare plugin, or Cloudflare also has their own APO instructions.

The first step is to disable FlyingPress (this is recommended by Cloudflare). You’ll reactivate FlyingPress after you confirm APO is working. This can help avoid conflicts when setting it up.

Next, you’ll need to proxy your traffic through Cloudflare in order to use APO. Just turn your website to proxied (not DNS only) in Cloudflare’s DNS settings. Once you’ve purchased APO ($5/mo), install Cloudflare’s plugin, create an API Token in Cloudflare, and add it to the plugin.

Cloudflare plugin automatic platform optimization

Finally, use uptrends.com to make sure APO is working by testing your website using https://www. format. Reference the screenshot below. Once it works, reactivate FlyingPress.

Test cloudflare apo

Cloudflare’s plugin has a setting to “apply recommended Cloudflare settings for WordPress,” but I would only do this if you’re not comfortable configuring your own Cloudflare dashboard.

I have several other recommended Cloudflare settings, but you’ll definitely want to use an image optimization service like Cloudflare Mirage/Polish. Image CDNs are better than plugins because they optimize images “on the fly” without adding bloat and lots of backups to your site.

 

10. Database

I prefer WP-Optimize for database cleanups since it can take backups via UpdraftPlus and remove tables from old plugins. If I were to use FlyingPress, here are the settings I would use (just remember to keep about 5-10 post revisions in the bloat settings before saving changes).

Flyingpress database settings 2

Otherwise, keep everything off in FlyingPress and use WP-Optimize.

Wordpress database cleanup wp optimize settings

You can remove tables left behind by old plugins you uninstalled (that is, if you don’t use it anymore), and see how much overhead certain plugin features/modules add to your database.

Wp optimize unused database tables
Remove tables from old plugins and consider disabling features/modules adding overhead

 

11. Configure FlyingPress With Rocket.net

Rocket.net with their free Cloudflare Enterprise is the host/CDN I use and why I have a 100ms global TTFB (great for WooCommerce and international sites). Configure FlyingPress normally.

  • No need to add Rocket.net’s CDN URL to FlyingPress.
  • No need to use FlyingCDN with Cloudflare Enterprise.
  • FlyingPress will automatically purge Rocket.net’s cache.
  • FlyingPress’ cache will remain on as a fallback cache to improve cache hit ratio.
Average ttfb speedvitals
Test your site 3 times in SpeedVitals to see your average TTFB of 40 locations

 

12. Configure FlyingPress With SiteGround Optimizer

Configure SiteGround Optimizer normally except:

  • Disable file-based caching and browser caching.
  • Use 1 plugin to disable emojis.
  • Use 1 plugin to control Heartbeat.
  • Use 1 plugin to clean your database.
  • Use 1 plugin to minify/defer JavaScript.
  • Use 1 plugin for lazy loading (I recommend FlyingPress).
  • Use 1 plugin to preload fonts.
  • Leave SG’s CSS settings off and use FlyingPress’ CSS settings with remove unused CSS.

Configure FlyingPress normally while taking advantage of these features:

  • Bloat removal.
  • Delay JavaScript.
  • Remove unused CSS.
  • Lazy render HTML elements.
  • Preload links.
  • Host Gravatars images locally
  • Optimize Google Fonts to host them locally.
  • Lazy load iframes and use placeholder images.
  • Image optimizations (lazy load, add missing dimensions, preload critical images).

 

13. Configure FlyingPress With Perfmatters

Configure FlyingPress normally, then disable everything in Perfmatters except:

General Settings – FlyingPress already removes bloat, but the General settings still have a few extra features like increasing the autosave interval and moving your wp-login page for security.

Perfmatters general settings with flyingpress

Script Manager – this is the main reason to keep Perfmatters when using FlyingPress. Enable the script manager in the Assets settings, then view any page/posts on your site. In your admin menu, click Perfmatters → Script Manager. Go to your script manager settings and enable test mode (this only shows changes to logged-in admins to prevent your site from breaking while testing the script manager), but remember to disable it when you’re done to publish changes. Also enable display dependencies which shows all plugins using jQuery, which is bad for speed.

Next, disable plugins or individual CSS/JS files on pages (or posts) where they don’t need to load. For example, if you only use a social sharing plugin on your blog, disable it “everywhere but posts.” Or disable contact forms everywhere but the contact page. You can also use regex.

Disable social sharing plugins perfmatters

Jquery plugin dependencies
See all plugins using jQuery by enabling “display dependencies in the script manager settings

Preloading – FlyingPress only preloads images/fonts. If there’s anything else you want to preload such as wp-block-library when using Gutenberg, you can do that in Perfmatters. You shouldn’t need to use preconnect/prefetch anything because your CDN URL is preconnected automatically by FlyingPress when you add it, and third-party fonts should be hosted locally. The rest of your third-party code should usually be delayed. Instant page (link preloading) and preloading critical images is already done by FlyingPress, so they should be off in Perfmatters.

Perfmatters preload wp block library

Notes

  • You don’t need local analytics since FlyingPress delays Google Analytics.
  • Only use 1 plugin for lazy load. Perfmatters’ JS-based lazy load while FlyingPress uses native (as I mentioned earlier, there are arguments for both). Both have similar features.

Omm switches to flyingpress

You don’t know until you know: flyingpress.com

You rock Gijo, keep up the great work and thanks for building the awesome community/plugins.

Cheers,
Tom

You Might Also Like:

58 Comments...

  1. Hi Tom,

    Is it still possible to use the Perfmatters settings you have listed above with the latest update of FlyingPress? I checked that FB post you pointed me towards and see that FlyingPress is disabling settings in Perfmatters automatically. Should I stick with Asset CleanUp Lite? Or maybe go with Asset CleanUp Pro? I do prefer the Perfmatters interface though.

    Thanks,
    Mairtin

    Reply

Leave a Comment