Skip to content

Case study Explainer

Explaining web performance to WP Rocket’s readers while Google changed the metrics

WP Rocket needed guides its readers could act on while Google and GTmetrix changed how speed gets scored. I wrote 5 of those guides from 2020 to 2023, and 2 went live before the change they explained. A Yandex developer cites one in his speed budget, and all 5 still run under my name on WP Rocket’s blog.

Read the guides

Client
WP Rocket, by WP Media
Role
Technical Writer / Illustrator
Year
May 2020 to November 2023
Publication
WP Rocket
Disciplines
Performance testing, Release coverage, Content updates

Proof at a glance

Five guides, two of them ahead of the change


WP Rocket didn’t share analytics with me, so every number here is one a reader can check against a capture.

  • 5

    guides for WP Rocket’s blog

    May 2020 to November 2023

  • 34

    days ahead of GTmetrix

    between my GTmetrix guide and GTmetrix’s Lighthouse launch

  • 111

    days ahead of INP

    between my INP guide and INP becoming a Core Web Vital

  • 4

    other sites cite 2 of the guides

    Yandex, Switas, Haurand and Microcharon, September 2026

The problem

The same site, untouched, started getting a different grade

Lighthouse 6 changed what PageSpeed Insights scores in May 2020, GTmetrix rebuilt its report on Lighthouse that November, and INP replaced First Input Delay three years later. Readers watched their numbers move and wanted to know why.

What changed under them

GTmetrix and PageSpeed Insights started scoring pages differently in 2020

WP Rocket is a WordPress plugin for page speed, and its customers measure what it does with GTmetrix’s speed test and Google’s PageSpeed Insights.

In September 2026, WP Media’s own counter listed it on 5,583,000 WordPress sites.

Within a week of WP Rocket’s 3.7 launch post in September 2020, readers posted their new GTmetrix and PageSpeed Insights results under it.

It had measured its own new feature the same way, and wp-rocket.me’s GTmetrix loading time dropped from 2.6 to 0.9 seconds.

I could have summarized the announcements and closed with a list of plugin settings. Readers would still have had to work out why their numbers changed and which fix to try first.

Installs
5,583,000
Guides
5
Images I made
33 of 57

The moving target

Two scores changed while I was writing about them

What is this number measuring, and what on my site can move it?

In November 2020, GTmetrix’s new report put a new grade and 3 Web Vitals at the top, so the same site, untouched, got a different grade.

What changed, and when

May 19, 2020
Lighthouse 6 changed the metrics in its performance score, which PageSpeed Insights runs on
September 1, 2020
GTmetrix’s preview post announced a new report built on Lighthouse
November 16, 2020
GTmetrix’s launch post introduced that report
May 10, 2023
Google’s announcement set Interaction to Next Paint (INP) to replace First Input Delay as a Core Web Vital
March 12, 2024
The switch to INP took effect

The five guides

What I tested and drew for each guide

I did the research and testing for all 5 guides, and my screenshots and illustrations are 33 of their 57 images.

Commissioned
One guide at a time

The work

I read the announcements first, then ran the tests myself

Five guides, each starting from a reader’s question and ending with something they could do on their own site that week.

How they were written

Read the announcement, then run the test

  1. WebPageTest on my portfolio site came first

    The third-party guide’s first test is my portfolio site, salmanravoof.com. Running it through WebPageTest’s online test gave readers a waterfall of every file the site loaded, and most came from salmanravoof.com itself.

    So the guide used WebPageTest’s Domains tab and Request Map to pick out the rest.

    Then I showed a 2-line script that uses its blockDomainsExcept command to rerun the page with only the hosts you list, so a reader can compare the 2 runs.

    For a heavier example, I opened a large media site in Chrome DevTools in April 2020. It made 846 requests and transferred 12.3 MB.

    A reader ran the same WebPageTest steps on their own site 3 days after the guide went live. They found a Bootstrap stylesheet from a CDN blocking their first render, and removing it broke their mobile layout.

    I asked them to check whether their homepage used any of that CSS file’s classes.

    If their theme depended on the framework, they could inline the styles for the visible part of the page and load the rest later.

  2. Budgets for the team, and OPcache for the server

    A performance budget is a limit a team agrees on before a new feature can slow the site down.

    The budget guide starts from Tim Kadlec’s definition and the 3 kinds of budget web.dev describes, then gives my example budgets for 4 page types.

    Its first step measures competitors. For that step, I used the 20% rule from a 2015 Smashing Magazine article on how people perceive time.

    So if your homepage loads in 3 seconds, a new version has to load in 2.4 seconds or less for your visitors to notice the difference.

    The PHP guide covers what happens before WordPress sends anything. It explains how PHP compiles a script into opcode whenever the script runs and how PHP’s OPcache extension keeps that opcode in memory for the next run.

    I wrote the OPcache settings for a WordPress server and the APCu install commands for Nginx and Apache, then compared 2 dashboards for watching the cache.

    One reader asked in July 2020 whether OPcache would help their WooCommerce store, which had more than 8,000 product variations.

    I said it would, depending on their host, and sent them to a WP Rocket guide and a Kinsta one, before Kinsta hired me.

  3. I explained GTmetrix and INP before either took effect

    Between GTmetrix’s preview and its launch, I wrote the GTmetrix guide, which went live on October 13, 2020.

    It puts WP Rocket’s homepage in the legacy report next to the new report, with numbers on the 4 parts that change.

    Then it explains the new metrics one by one, starting with Largest Contentful Paint.

    After GTmetrix’s launch on November 16, I updated the guide to match what readers saw.

    The GTmetrix guide was my last one in 2020, since I joined Kinsta full-time that September. After I left Kinsta in April 2023, WP Rocket came back to me for INP.

    My INP guide went live on November 22, 2023, and it starts with what INP’s predecessor missed.

    From there, it splits an interaction into input delay, processing time, and presentation delay, and gives each phase a fix a WordPress site can make.

  4. How I checked my work before delivering it

    I read the primary sources before writing, then tested what I could on a working site.

    For instance, my INP illustration is in wp-rocket.me’s September 2023 upload folder, so you can check that I drew it 2 months before the guide went live.

    Likewise, the WebPageTest waterfall in the third-party guide has my site’s domain in its file name, and the DevTools screenshot’s caption says April 2020.

    I answered reader comments on my own whenever I saw them.

    What I read, and what I tested with

    Third-party scripts
    HTTP Archive’s 2019 Web Almanac, V8’s post on the cost of JavaScript
    Tested with
    WebPageTest, Chrome DevTools, Lighthouse
    Performance budgets
    Tim Kadlec’s post on setting a budget, web.dev’s budget guides
    Tested with
    PageSpeed Insights on wp-rocket.me, a budget calculator
    PHP accelerators
    The PHP manual’s OPcache and APCu pages
    Tested with
    2 OPcache dashboards
    GTmetrix and Lighthouse
    GTmetrix’s preview post, web.dev’s LCP page
    Tested with
    GTmetrix’s legacy report on wp-rocket.me
    Interaction to Next Paint
    web.dev’s INP pages
    Tested with
    PageSpeed Insights
  5. My First Meaningful Paint budget lasted 14 days

    My third-party guide went live on May 5, 2020. Near the end, it suggested a budget for First Meaningful Paint, along with Time to Interactive.

    Lighthouse 6 deprecated that one on May 19, 14 days later, and added 3 new metrics to its score.

    That guide stayed up with First Meaningful Paint in it. So in the budget guide on June 23, I used Lighthouse 6’s replacements, and First Meaningful Paint shows up only as a metric Largest Contentful Paint improves on.

    My GTmetrix guide ran into the same kind of change that November, and both times it came within 5 weeks of the guide going live.

    The guide, and what changed after it

    Third-party scripts, May 5, 2020
    Lighthouse 6 deprecated First Meaningful Paint
    Days later
    14
    GTmetrix and Lighthouse, October 13, 2020
    GTmetrix launched with a Performance score, where its preview had said Speed
    Days later
    34

What stayed fixed

One guide at a time, on topics WP Rocket picked

A recurring commission, a free licence, and readers who would try every step on their own site.

arrangement
recurring, commissioned one guide at a time
topics
WP Rocket’s picks, plus a few I suggested
access
a free WP Rocket license
readers
bloggers, agencies, and store owners on WordPress
tools
WebPageTest, DevTools, Lighthouse, PageSpeed Insights, GTmetrix
outside the plugin
2 guides taught steps a reader takes with their host or their team opcode caching runs on the server, and a budget is agreed in a meeting
screenshots
every one had to show its tool as a reader would see it that month readers would try the steps on their own sites

What happened

Two of the five went live before the change they explained

The GTmetrix guide by 34 days and the INP guide by 111.

The findings

Where the guides turned up after they went live

Six years on, WP Rocket still runs all 5 guides under my name, and 4 other sites cite 2 of them.

Yandex’s speed budget
Victor Homyakov works on the speed of Yandex’s search pages, and his August 2021 Habr article cites my budget guide under his speed budget targets. The first target on that list is being about 20% faster than competitors. Habr’s counter showed 73K readers in September 2026.
Microcharon
A Chinese-language blog cites the PHP guide in its Typecho performance article from August 2022. The link is base64-encoded through the site’s own redirector.

Getting there took reading the tool makers’ own announcements before writing and testing the steps on a live site.

What this page doesn’t claim

  • Traffic, rankings, or sales from the guides. WP Rocket didn’t share analytics with me.
  • That I planned the 5 topics as a set.
  • Wording on the live pages that the earliest captures don’t show.

What I made

The tests I ran and the illustrations I drew


Every one of these is in a guide under my byline, and each is still on wp-rocket.me at the address the method section gives.

  • May 2020 My portfolio site’s WebPageTest waterfall, from the third-party guide, May 2020. Read the guide
  • April 2020 Chrome DevTools on a media site in April 2020, with 846 requests and 12.3 MB transferred. Read the guide
  • June 2020 My illustration of the 3 kinds of performance budget, from the budget guide. Read the guide
  • October 2020 WP Rocket’s homepage in GTmetrix’s legacy report, from the GTmetrix guide. Read the guide
  • November 2023 My illustration of the 3 phases of an interaction, from the INP guide. Read the guide

Then and now

What has moved since I published them

GTmetrix changed hands, my INP guide moved into a hub, and its byline is somebody else’s now.

What has not moved is the listing on my author page: WP Rocket still runs all 5 guides under my name.

What I got wrong

Errors I made, and the check I’d add now

Reading all 5 guides again for this page, I found 28 errors in my own text. An error counts as mine only once the guide’s first capture shows it, since WP Rocket’s team edited the pages after I delivered them.

I’d most like to take back one line in the GTmetrix guide, where I wrote that Lighthouse uses field data from the Chrome User Experience Report. Lighthouse runs its tests in a lab, on one simulated visit to your page.

Three years later, my INP guide covered those 2 kinds of measurement under separate headings, and that’s the version I’d want a reader to find.

All 28 errors are in the file below, each linked to the capture it came from. If your product’s metrics change every few months, send me the changelog and tell me who reads your docs.

The PHP guide, rewritten
  • I’d try every setting it recommends on a test server and compare opcache_get_status and opcache_get_configuration before and after.
  • That would have caught 3 of the 10 things I explained wrong.
The metric guides
  • I’d link each metric’s definition where the guide introduces it, and date the screenshots in their captions.
Things I explained wrong
  • I wrote that setting opcache.revalidate_freq to 0 is the same as having no opcode cache. OPcache still serves the cached opcode and checks each file’s timestamp on each request.
  • 10 of them.
Claims beyond the facts
  • I wrote that a tag manager cuts third-party requests down to one. The container is one request, and each tag still makes its own.
  • 8 of them.
Names, terms, and links
  • “Long Contentful Paint,” for Largest Contentful Paint.
  • 10 of them.

Two things I would do differently, then one error of each kind:

Sources and credits

Captures, sources, and the people I credit

Credits

Commissioned and published
WP Rocket, by WP Media
Questions answered as I worked
Agathe Medvedieff, then WP Rocket’s head of content and marketing, and one of her teammates
The 3.7 launch post
Alice Orrù
Screenshots and illustrations
Salman Ravoof, apart from the images whose captions credit someone else
Writing
Salman Ravoof

The December 2023 capture has my byline on the INP guide, and about 90% of its 6-word sequences are still on the live INP page.