I was reviewing a client's WordPress site last week. The homepage felt snappy to me. They said it felt fine to them too. Then I checked the actual metrics for first-time visitors and saw a 4.2 second load time. That's not fine.
The problem is simple. When you visit your own site repeatedly, everything gets cached. Images, stylesheets, fonts, scripts. Your browser stores them locally. The second visit uses almost none of the network. You're testing a best case scenario that almost no one else experiences.
What first-time visitors actually load
I ran a test using WebPageTest from Virginia on a cable connection. Here's what a cold cache visitor had to download for this particular homepage:
- 2.1 MB total page weight
- 87 HTTP requests
- 14 custom fonts (8 weren't even used)
- 6 separate analytics scripts
- 4 different chat widgets loading on every page
The Time to Interactive was 5.8 seconds on a fast connection. On a throttled 3G connection it hit 12 seconds. Most of us never test on 3G anymore, but plenty of people are still on patchy mobile networks or rural broadband.
The fonts were the worst offender. The theme had Google Fonts configured to load every weight from 100 to 900, plus italics. The design used exactly two weights. That's 400 KB of font files no one needed.
The fixes that actually moved the needle
I started with the obvious stuff. Compressed images using ShortPixel, cut the unused font weights, lazy loaded anything below the fold. That dropped page weight to 1.4 MB and shaved off about one second.
Then I looked at the scripts. Two of the chat widgets were from old campaigns. No one had removed them. One analytics script was installed twice because it had been added via both a plugin and Google Tag Manager. I consolidated to one chat tool and cleaned up the tracking scripts. Requests dropped to 52.
I tried using a CDN for the first time on this project, specifically BunnyCDN. Set it up, purged the cache, tested again. Load time dropped another 0.9 seconds for international visitors. For US visitors the improvement was marginal, maybe 0.2 seconds. The client's audience is 60 percent US, so the CDN wasn't the silver bullet I expected. Still worth it for the international traffic, but I'd been hoping for more.
The final Time to Interactive landed at 2.1 seconds on cable and 6.4 seconds on 3G. Not perfect, but a significant improvement.
One thing I got wrong
I spent an afternoon trying to implement critical CSS inline in the head. The idea was to render above the fold content faster. I used a plugin that was supposed to automate it. It broke the layout on mobile and caused a flash of unstyled content that looked worse than the original delay. After two hours of tweaking I rolled it back. Sometimes the manual optimization isn't worth the visual bugs it introduces.
Practical takeaway
Open an incognito window or use WebPageTest at least once a month. Check your own site like a stranger would. The performance you feel every day isn't the performance you're shipping. And if you're loading more than three web fonts or running multiple chat widgets, start there. Those are almost always the easiest wins.



