Inspired by Kevin Quirk’s post about Core Web Vitals and Wordpress, I spend some hours trying to improve the web vitals from my other site, which runs on Wordpress. (You can measure your site’s core vitals on web.dev.)

Some months ago I migrated that site from a self-hosted Linode instance to a managed solution on WPEngine. I’m essentially buying back time. A managed solution frees me from server admin duties, like making sure the latest Linux updates are installed, and PHP and its libraries up-to-date.

WPEngine offers an optimized Wordpress installation, which includes caching and CDN. Even so, the lighthouse test returned scores between 70-80 for both performance and best practices. While installing WP Super Cache gave me a near perfect score, WPEngine imposes some limitations on what Wordpress plugins you can install and WP Super Cache in particular is not allowed.

After some hours of trying different plugins and comparing results, I finally settled for the following configuration:

  • Disable Jetpack’s site boost and image optimizing. (Jetpack doesn’t handle cache invalidation, so any image stored on their servers stays there forever… You’ll need to upload the asset with a different name to use it again on your site.)
  • Fast Velocity Minify plugin for merging and minifying CSS and JavaScript, and compressing HTML.
  • Lazy Load by WP Rocket, for lazy-loading images and videos without jQuery or other libraries.

Now the site gets substantially better web vitals score.

The perfectionist in me would aim for 99%-100% in all categories, but I don’t think I can get there via plugins. The next improvement should be reducing the site’s footprint, which is currently around ~1MB uncompressed.