By configuring the optimal settings for the Swift Performance caching plugin I got my site loading in under 400ms and I'll show you as I proceed through this Swift Performance review exactly why the competition is left lagging!
Not only is Swift Performance a better and more efficient WordPress speed optimization tool than anything else I've tried, but it's also compares very favorably with the highly respected WP Rocket.
This incredible speed is not always evidenced by GTMetrix and Pingdom results.
The true effects of speed must be properly interpreted against time to first byte, first paint, contentful paint and DOM interactive times.
Together with the best value for money hosting, I've been able to get my loading time to under 400ms. And that's not on a virtually blank website like others have tested on!
Table of Contents
- What Swift Performance Does For Your Site.
- Why Use Swift Performance.
- Swift Performance Lite/Pro Features.
- Much more than a caching plugin.
- Swift Performance outperforms competitors.
- Proof that swift Performance is the fastest caching plugin for WordPress.
- Summary of test results.
- Prerequisites - WordPress hosting.
- Why I love and use Cloudways.
- Detailed settings.
- Wrapping Up.
What Swift Performance Does For Your Site
- Improves perceived load time (and hence user perception) by eliminating render blocking (and FOIT for websites without a font loading strategy) in "above the fold" content.
- Reduces server response time (TTFB) and resource usage (translating to a cost saving on Cloud hosting).
- Improves loading times for repeat visitors by leveraging browser caching and compression.
- Improves site efficiency and speed through minification and concatenation of scripts and stylesheets with the ability to add exceptions.
- Cache Ajax requests and dynamic content.
- Advanced granular control.
Why Use Swift Performance?
- Works out of the box after running the setup wizard.
- Supercharges Your WordPress.
- INSANELY FAST!
- CACHE WARMER so visitors always get a cached page.
- Built-in image optimizer - *UNLIMITED*.
- Built-in database cleaner.
- Plugin organizer.
- Enqueue critical fonts.
- CDN integration.
- Host Google Analytics locally.
- Speeds up merging process and reduces CPU usage through an API.
Swift Performance Lite/Pro Features
|Features||Swift Performance Lite||Swift Performance Pro|
|Quick Setup Wizard||✓||✓|
|Google Analytics Bypass||✓||✓||Heartbeat Control||✓||✓|
|Image Optimizer (Unlimited Images)||✓||✕|
|Inline Small Images||✓||✓|
|Avoid Mixed Content||✓||✕|
|Cache Warming (Preloading)||✓||✓|
|GZip Compression (added to .htaccess)||✓||✓||Remove Querystrings From Static Resources||✓||✓|
|Generate Critical CSS||✓||✓|
|Asyncronous Execution Of Combined JS||✓||✓|
|Caching For Logged In Users||✓||✓|
|Critical Icon Fonts||✓||✕|
|Proxy 3rd Party JS||✓||✓|
Much More Than Just A Caching Plugin
Swift Performance is not just a caching plugin. It's the Swiss Army Knife of WordPress, providing you with the functionality of 5 different plugins (that you can now eliminate).
1. Google Analytics Bypass
This allows you to host Google analytics locally thereby speeding up your pages by eliminating the external call (HTTP request) to Google servers.
2. Heartbeat Control
The heartbeat API is used to facilitate communication between the browser and server by means of Ajax calls (when you are logged in). An example of its application is showing authors that a post is being edited.
The default heartbeat frequency between the browser and WordPress dashboard is 60 seconds.
Reducing or disabling Heartbeat activity can reduce server resource usage and will also help to speed up your WordPress backend.
3. Image Optimizer
No need for an image compression and optimization plugin. This is built into Swift Performance and allows for unlimited images to be compressed on upload. You can also resize images on upload, saving you from having to do this manually.
There's more that you can do do with images but we'll get to that later on.
4. Database Optimizer
Clean up your database. Delete unneeded revisions, expired transients and trashed posts, orphan and post meta as well as reindex and optimize database tables, comments and terms.
5. Plugin Organizer
When plugins are installed, their scripts and code becomes active on each and every page.
The plugin organizer allows you to add rule that will disable certain plugins, e.g. disable Imagify image optimizer on the frontend.. An exception rule would exclude a plugin with the exception of a specific page, for example.
... 4.5/5 stars overall on wordpress.org.
and some individual ratings.
And a poll I conducted on the WordPress Speedup Facebook Group ...
Swift Performance Outperforms The Fastest Competitor Plugins
Ok, so don't just take my word for it. Others are saying the same thing.
When I was on Siteground, I was always reasonably happy with Siteground's inbuilt Supercacher plugin until Swift Performance came along. (Don't get me wrong here. Siteground's Supercacher is a formidable caching plugin).
I'd sort of reached a plateau with Supercacher and was already looking at other ways to improve speed even further.
I experimented with different combinations of SuperCacher, WP Rocket and Autoptimize.
- WP Rocket + SuperCacher = Slowest performance.
- WP Rocket + SuperCacher + Autoptimize = Slightly better.
- WP Rocket + Autoptimize (no SuperCacher) = A bit faster.
But when I installed Swift Performance my site started wheel spinning!
So I went on to do some comparisons with Swift Performance and WP Rocket.
WP Rocket came a good second, but only in conjunction with Autoptimize.
But in terms of UX (user experience), Swift was miles ahead.
The first paint with WP Rocket and Autoptimize was quick, but then the text on my site disappeared momentarily and re-loaded together with my background images.
This didn't happen with Swift Performance.
Swift Performance gave a smoother, one-time page load.
Swift Performance = UNDOUBTEDLY FASTEST SPEED + SUPERIOR USER EXPERIENCE!!
With Swift Performance, there's no need for any other speed optimization tools. In fact they interfere with performance.
I performed a number of speed tests using Pingdom.
- With WP Rocket.
- WP Rocket + Autoptimize.
- Swift Performance.
- All tests were performed on the same page of the same site
- All tests were performed at the same time of day.
- 3 Speed tests were performed for each option.
- No other caching was active for any of the tests, e.g. Cloudflare, Siteground SuperCacher.
Here is a summary of the results.
Test Results Summary
|Plugin||Test 1||Test 2||Test 3|
|WPRocket + Autoptimize||1.07s||659ms||604ms|
But Good WordPress Hosting Is A Prerequisite
It's no good looking for a caching plugin if your hosting is poor. Good WordPress hosting is a prerequisite.
I've hosted with 7 different hosting companies over the years and I always come back to Siteground because not only do you get the best value for money, you'll also never have to stress about uptime, data loss or security like you do with certain other hosts.
Here are some of Siteground's top features:
- Unmetered Data Transfer - All plans.
- Unlimited Number Of Free Email Accounts.
- Unlimited MySQL Databases - All shared plans.
- Unlimited Subdomains and Parked Domains.
- One Free Migration - Not On StartUp plan.
- Free, Unlimited Migrations + Siteground Migrator Plugin.
- Free SSL Certificates.
- Automatic WordPress Updates.
- 1-Click Staging - Not on StartUp plan.
- Easy Cloudflare CDN Integration.
- 30 Day Money Back Guarantee.
- Killer speed technology.
Swift Performance Optimal Settings
Swift Performance Lite can be installed from the WordPress repository.
Personally I use and recommend the Pro version for two main reasons.
- It has a built in image optimizer that provides optimization for an unlimited amount of images, so there's no need for a paid image optimizer.
- It allows you to automatically resize your images to the correct dimensions on upload, saving you from doing it manually.
Remember, this is an investment in your business and one that you'll be glad you made because Google rankings are worth ANYTHING!
Swift Performance has, for the first time ever, got me 100/100 (mobile / desktop) in Google Page Speed Insights.
Swift Performance costs $39.99 on an annual basis ...
or can be paid quarterly or monthly.
It's worth every cent.
Google is placing a good deal of importance on site speed in their ranking algorithms. And with good rankings it will pay for itself multiple times over.
Irrespective of whether you choose the Lite or Pro version, once installed, you can run the setup wizard which is real handy.
At this stage you could run through the rest of the wizard but if you're new to Swift then it's a whole lot easier to use the auto-configured settings. This activates all the default settings, which I suggest you leave enabled.
Now follow this guide.
Go to Settings and enter your license key.
Use Compute API - Enable this. It gives an overall speed gain by speeding up merging and reducing CPU usage.
Beta Tester - Enable if you want to receive version updates during the testing phase.
- Prefetch DNS - Enable. This enables the collection of DNS before page loading thus eliminating the request for it when loading the page.
- Collect Domains From Scripts - Enable. This collects domains from scripts which are needed to prefetch the DNS's.
- Gravatar Cache - Enable this if you allow gravatars on your site (mainly used for commenting and author bios). Leave the default gravatar cache expiry at 3600.
Toggle All to select all options - Set the Frequency to 60 Seconds. Use this if your backend is slow. No real need for it otherwise, but it won't do any harm to save these settings.
1.4 Google Analytics
Google Analytics - This is a really cool feature. No need to add Google tag manager to your page headers in order to link Google Analytics to your site. Swift will host Google Analytics locally, thereby speeding up your site by reducing the extra DNS look-ups and resolving the leverage browser caching issue in Pingdom and GTMetrix.
Within Google Analytics, go to the Admin screen and in the middle column, select Tracking Info > Tracking Code.
Now add your tracking code to the Google Analytics screen. Make certain you don't have the tag manager script added elsewhere on your site.
Delay Collect - Enable this to send the request to Google Analytics after the first user interaction, e.g. moving mouse, scrolling. The request will not be sent to Google otherwise, which makes sense in a way. It eliminates tracking where a user lands on a page by mistake, like an accidental click for instance.
Whitelabel - This is more for a hosting company that doesn't want to make public that it's using the Swift caching plugin for WordPress for its speed optimization. This can be used together with the Hide Footprints option on the General tab.
- Optimize Images On Upload - Enable to automatically reduce file size on upload.
- JPG Quality - Choose image quality for lossless compression. I choose 100%
- PNG Quality - I leave these at 100% because I believe that quality images are important. For more information on image optimization.
- Resize Large Images - If you're lazy when it comes to resizing images, check this option to have Swift Performance resize your images on upload. Personally, I make sure to use the correct image dimensions.
- Keep Original Images - Check this in case you need to revert to an original image for any reason.
- Inline Small Images - This messes things up with my theme. You can play with this option.
- Lazy Load Images - I believe this is bad for user experience, but that's my own opinion.
- Force Responsive images - You shouldn't need this with modern themes.
- Youtube Smart Embed - Loads Youtube videos only on user interaction.
- Exclude Youtube Videos - Exclude videos from being embedded based on a matching string.
- Lazy Load iFrames - If you embed numerous Videos, Google maps or other media types on a single page, for example, you can check this option to increase page loading times. This is useful if your media appears further down in the page. Don't lazy load iFrames if they appear at the top of your page because it will increase perceived loading times.
- Exclude iFrames - Exclude iframes from being lazy loaded.
- Load iFrames On User Interaction - You can choose to load the iframes only when a user interacts (mouse, scroll, touchstart).
- Merge Assets For Logged In Users- Leave this unchecked if you are the only user. It's meant to enhance speed on sites with multiple users, e.g. membership sites by combining CSS files and then delaying their delivery.
- Optimize Prebuild Only - This option should be checked if you pre-build your cache automatically (recommended) - check this setting in Caching screen. This runs ONLY when your cache is busy pre-building. Good for user experience!
- Optimize In Background - For me, this increased load time. Play with it because it may behave differently with different themes.
- Fix Invalid HTML - I keep this option checked in case of any bad HTML in any plugins. No problem for StudioPress themes though :).
- Minify HTML - Keep this checked. What's the point of caching otherwise?
- Disable Emojis - I keep this checked because emojis affect speed (You'll learn that I'm a speed freak!!).
- Limit Simultaneous Threads - On cloud hosting, leave unchecked in order to use all of the server's resources to build your cache real quickly - Keep checked for shared hosting so as to save resources. I limit cache pre-building to 3 threads at a time. You can change this depending on your hosting and resources. Unfortunately, cache pre-building will be slower with this checked.
- DOM Parser Max Buffer - Don't touch this unless you know what you're doing.
- Exclude 3rd Party Scripts - If you check this, plugin scripts will not be merged with your theme scripts. It's actually turned off by default but you may need to enable it if any of your plugin functionality doesn't work.
- Exclude Scripts - You can leave the above option disabled and then exclude individual scripts from the merge. The selected script will then load in the correct order and won't be deferred to the end of the page as is normal with merged scripts. You can enter a specific word found in the script string to exclude it.
- Exclude Inline Scripts - Some scripts may be inlined within your HTML because they need to load at a specified point. This allows you to exclude them. Again, this is used if you include 3rd party scripts in the merge process.
- Exclude Script Localizations - These contain variables as well as personalized data. It's best to enable this otherwise you may land up with separate JS files for all your website's pages.
- Minify Java Scripts - This removes all white space an unnecessary characters to reduce file size, without affecting any functionality. Best to keep this enabled.
- Minify With API - This is slower than the standard minification method, but is possibly worth using if the standard minification causes errors.
- Proxy 3rd Party Assets - You can send any 3rd party JS and CSS through a specified proxy server. I'd leave this off. It only affects grading scores which are meaningless anyway.
- Separate Scripts - Leave this unchecked. If enabled, Swift will save JS files separately for each page. It uses up unnecessary space and also affect the speed at which the cache warms (pre-loads). The idea behind this is to prevent all JS from loading on every page. Problem is you also need to manually note what scripts are needed where and human error could lead to mistakes and broken functionality.
- Print Merged Scripts Inline - Leave unchecked. This prints merged scripts into the footer instead of keeping it in a file. The idea of deferring JS from running at the top of the page is great because it can make your page load faster, but if a script is needed above the fold, it doesn't serve you. It also delays cache warming.
- Lazy Load Scripts - A cool idea really. It will make your page load faster initially and the script will only run / execute after the first user engagement, for example scrolling, clicking etc.
- Merge Styles - Enable this to merge CSS files to reduce the number of HTML requests from the server. NOTE: This broke my site layout until I enabled the generate critical CSS option. It's better to have this option enabled but if it breaks your site and you can't fix it with the critical CSS option, leave it disabled. If disabled, you cannot make use of any other options on this screen.
- Generate Critical CSS - Enable this. Swift will automatically generate the critical CSS. This helps with perceived load time by rendering the top of the page first, helping to keep users from clicking away from a blank page!
- Extra Critical CSS - Use this to add EXTRA critical CSS.
- Disable Full CSS - I would enable this. It excludes non-critical CSS and can cause styling problems. All the CSS is there for a reason.
- Compress Critical CSS - Enable to reduce file size. It works for me but check for yourself.
- Remove Keyframes - I don't enable this. It's disabled by default. It removes animations from critical CSS.
- Print Critical CSS Inline - I leave this disabled. It adds the critical CSS to the page header and saves a round trip by having to download it from the server. Inlining CSS probably benefits perceived load times but very marginally, but I've found that my full load times are longer, albeit marginal too. I'm also using the Genesis framework which is highly optimized anyway, but play with this - your theme may do something different. NOTE - Edit Date 23 Sept 2018: Since the time of writing I have now enabled this option, together with printing the rest of the CSS into the footer. This option is only available if you choose to inline critical CSS. This helped me to achieve 100/100 in Google Page Speed Insights!
- Separate Styles - If you enable this, Swift will create separate merged CSS files for each page as opposed to using one site wide CSS for every single page - not every page needs all the CSS. If your site has a numerous types of pages, e.g. e-commerce pages, pages that use a page builder, other that use standard editor etc., this may benefit you.
- Minify CSS - I've experimented with basic and full minification and don't see a difference. I therefore leave it on basic - less to go wrong.
- Bypass CSS Import - I don't include imported CSS in my merged styles. Google fonts are an example of imported CSS files.
- Exclude 3rd Party CSS - Leave this disabled to include 3rd party CSS in merged files. Enable it if it causes any styling issues. This is plugin dependent.
- Exclude Styles - If you merge external CSS files, you can always eliminate individual ones that may not play well.
- Exclude Inline Styles - If you merge styles and inline any CSS, you can exclude specific files from merging.
- Enable Caching - This allows you to toggle caching on and off. Maybe useful for testing reasons? Please make sure to enable this.
- Caching Mode - I use Disk Cache With Rewrites. It's faster than PHP Caching.
- Early Loader - Enable this for best speed.
- Cache Path - Should populate itself using your server information.
- Cache Expiry Mode - You can choose between time based, action based and intelligent mode. Action based is best as long as you don't use an expirable asset on the frontend. The cache will be cleared if you modify something or manually clear it.
- Clear Cache On Update Post By Page - Allows you to set the pages where you want Swift Performance to clear the cache after updating or publishing a post. I've not used this as yet.
- Clear Cache On Update Post By URL - Same as above but you set the URL instead of a page.
- Enable Caching For Logged In Users - I NEVER turn this on. Firstly, it could interfere with page builders. Secondly it increases cache size.
- Separate Mobile Device Cache - Mostly for use where you have a separate mobile site or have AMP enabled.
- Case Sensitive URL'S - This converts URL'S to lower case for caching.
- Enable Browser Cache - This generates code in your .htaccess file to set expires headers. Very useful! I prefer to let Swift take care of the headers code so I removed my own from my .htaccess file - no need for both.
- Enable GZip - This should be enabled. It compresses files for WordPress speed optimization. Compression rules will be written to your .htaccess file.
- Send 304 Header - I don't check this.
- Cache 404 Pages - I don't have 404 pages so no need for me to enable this. You can enable it if you have numerous 404 pages that are frequently visited.
- Ignore Querystring - Leave unchecked.
- Enable Dynamic Caching - Here you can specify cacheable requests. Unchecked for me.
- Cacheable Ajax Actions - This is one Of Swift's advanced features that I still need to play with. It allows you to cache resource intensive Ajax requests as well as allowing you to set expiry times. I haven't used this yet so I can't throw more light on this for now.
- Ajax Cache Expiry Time - I have no idea what is ideal, so I assume the default time to be the best.
- Avoid Mixed Content – If your site can be loaded via HTTP and HTTPS as well it can cause mixed content errors. If you enable this option it will remove the protocol from all resources to avoid it. Use it only on HTTPS sites.
- Keep Original Headers – If you use a plugin that sends custom headers you can keep them for the cached version as well.
- Case Insensitive URLs – Leave unchecked. Url's should always be lower case.
- Lazyload elements – Great for posts with many comments.
- Exclude Post Types - This is a great way of preventing caching of unnecessary items which cause the cache to be larger than it should be, thus delaying cache warming (pre-building). When you click in this field, Swift Performance will show a list of items you can choose to exclude. Except for pages, posts and products, I would exclude all items.
- Exclude Pages - By default, pages like WooCommerce cart, account and checkout won't be cached. You can exclude other pages here. Make sure to exclude contact pages because forms may not send if cached and dynamic page, pages that include tracking scripts and the like. Once again, clicking in this box will display a list you can select items from.
- Exclude URL'S - If you have items such as feeds and JSON pages, that you can't exclude with the above, you can do so here.
- Exclude Content Parts - Here you can exclude pages that contain specific content. Enter the specific text using leading / trailing # to exclude that page from being cached.
- Exclude User Agents - A user agent refers to software that acts on behalf of a user. Examples are browsers or email readers. It could also refer to specific devices like mobiles.
- Exclude Crawlers - Known crawlers like Googlebot should really be seeing fresh pages as opposed to cached pages, so I would check this item.
- Exclude Author Pages - Enable to exclude author pages. They're not pages that are sought after at the best of times so no need to waste cache resources on this.
- Exclude Archive - Because blog pages are regularly viewed, I would cache these for speed, so don't enable this.
- Exclude REST URL'S - Enable this. No need to cache these pages.
- Exclude Feed - As above. No need to cache these and waste pre-load resources.
4.4 Warmup (cache warmer / cache preloader)
- Enable Remote Prebuild Cache - This uses an API to pre-build the cache. For my setup I need to leave this unchecked. In certain circumstances it could fix pre-building where it's too slow or not working properly. You will need to play with this, but the default is unchecked.
- Prebuild Cache Automatically - Check this. It warms the cache automatically after it's been cleared. You can toggle this off if your server becomes overloaded at specific times.
- Discover New Pages - Check this to have the plugin automatically discover new pages for pre-building, for example plugin created pages and pagination. Watch out for unnecessary pages, which you can always exclude as explained in exceptions.
- Prebuild Author pages - Author pages are not visited very often. If you find that they're visited often, you can check this.
- Prebuild Archive - I keep this enabled. Your blog page changes regularly and is visited often, so best to prebuild this.
- Prebuild REST URL'S - Leave this unchecked.
- Prebuild Feed - Keep this unchecked. Not needed.
- Enable Auto Purge - Enable this if you want Swift Performance to automatically clear the Varnish cache when the Swift cache is cleared.
- Custom Host - It may be necessary to enter the Varnish IP details if you use a proxy server like Cloudflare.
This feature preloads either specified pages or your entire site (you choose) into the user's browser application cache. It speeds up navigation remarkably.
* This feature can negatively affect the speed of your cache warming.
My site's navigation is so quick in any event, that I don't use this feature. You may want to experiment with it as themes and coding differs vastly!
- Enable Appcache For Desktop - This enables appcache for desktop devices.
- Appcache Mode - Choose specific pages for appcache preloading or the entire site.
- Desktop Max Size - You can limit the size that the visitor's browser can download. Default is set at 100Mb.
- Exclude Pages - You can exclude specific pages if your appcache mode is set to full site.
- Exclude Strings - Where a specified string is found in the URL, you can choose to exclude that page. You can see that Swift Performance has thought about all the permutations!
- Enable Appcache For Mobile - The same settings appear for mobile devices. The only difference is the maximum appcache size. The default is 5Mb but if you want to increase this the browser will ask you to provide permission to use storage. The developer has indicated that this limit is not documented and is also highly variable and suggests sticking to the default setting.
- Enable CDN - Toggle to turn on settings to purge your CDN cache ONLY. This option does not activate your CDN. Activation is effected with your CDN plugin.
- CDN Hostname - Enter a domain only - don't include http/s or www prefixes.
- Enable CDN on SSL - Here you can specify different hostnames for secure connection. Leave blank to use the same hostname on http and https network protocols.
- Enable Auto Purge - Check this automatically clear the Cloudflare cache when the Swift cache is cleared, which should also coincide with changes you make on your site.
- Cloudflare Account Email - Enter the email you used to register with Cloudflare.
- Cloudflare API - You can find this in your Cloudflare overview tab.
5.3 Max CDN
If you're using Max CDN, fill in your alias, consumer key and consumer secret.
If you're wondering why you don't see this screen, it's because you aren't using WooCommerce.
- Cache Empty Minicart - Check this. It empties the number in the mini cart icon at the top right of your screen.
- Disable Cart Fragments - This disables the minicart icon at the top right of the screen.
- WooCommerce Session Cache - I'm not sure what this is for. Sorry.
The developers have included options to achieve just about any type of configuration you can dream of.
Summary of important points:
- First and foremost, choose the best WordPress hosting you can afford.
- Siteground offers the best value for money hosting while benefiting from their brilliant speed technology and generous resource allocation.
- In my opinion, Swift Performance provides the best user experience + speed. Remember, website speed matters!
Personally, I believe the Swift Performance caching plugin for WordPress is streets ahead of anything else I've used to date, and with a monthly plan available, there's no excuse not to give it a try.
So what are you going to do?