SolisReach
← Journal
Web Performance5 min read

CDN caching mistakes that quietly slow down a "fast" site

Written by the SolisReach team

Putting a site behind a CDN is treated by a lot of teams as a checkbox: turn it on, performance improves, done. In practice, a CDN's actual benefit depends entirely on caching rules being configured correctly, and misconfigured rules are common enough that we check them specifically in every performance audit, rather than assuming a CDN's presence means caching is working well.

We've inherited more than one client account where the CDN had been running for years, invoiced monthly, delivering a fraction of the performance benefit it was capable of because the caching configuration was left on whatever the platform's generic defaults happened to be at setup. The CDN wasn't broken, it was just never actually configured for the site's real traffic and content patterns, which is a subtly different and much more common problem.

Cache headers that are too conservative defeat the purpose

A short cache duration, or cache headers that mark content as effectively non-cacheable, means every request still round-trips to the origin server, and the CDN provides little more than a faster network path, missing most of its actual value. We check actual cache-hit ratios, not just whether a CDN is technically in front of the site, since the two aren't the same thing.

A cache-hit ratio below the high nineties on largely static content is a clear signal that headers are too conservative somewhere in the chain, and it's usually a quick fix once identified: extending cache duration on the specific asset types actually causing the misses, rather than a broad, risky change applied across the entire site at once.

Cache invalidation gaps cause stale content, which causes distrust in caching generally

When a team gets burned once by a CDN serving stale content after an update, because cache invalidation wasn't wired up properly, the common overcorrection is to set aggressively short cache times everywhere, which quietly undoes most of the performance benefit going forward. The right fix is proper invalidation on deploy, not abandoning aggressive caching altogether.

We build cache invalidation into the deploy pipeline itself, purging exactly the assets that changed as part of every release, rather than leaving it as a manual step someone has to remember to run. Once that's automated, the team can go back to aggressive, long-duration caching with confidence, since a fresh deploy will always correctly bust the cache for anything that actually changed.

Static assets and dynamic content need different rules, explicitly

Images, fonts, and versioned JS/CSS bundles can be cached aggressively, often for a year, since a content change produces a new file name. HTML and any personalized or frequently updated content need much shorter cache windows or none at all. Applying one blanket caching policy across both categories is a common source of either stale content bugs or wasted caching opportunity, depending on which direction the mistake goes.

We map out a full asset-type-by-asset-type caching policy at the start of every project specifically to avoid this blanket-policy trap, documenting exactly which cache duration applies to which category and why, so a future team member changing the CDN configuration has clear context rather than guessing at settings someone else chose for reasons that were never written down.

Geographic edge coverage matters more than most teams check

A CDN's actual performance benefit depends on having edge nodes genuinely close to where real users are, and a site with a meaningful international audience but a CDN configuration defaulting to a smaller edge network can end up with a surprisingly weak improvement for users outside the CDN's strongest regions. We check the geographic distribution of real traffic against the CDN's actual edge coverage as a standard part of any performance audit, rather than assuming every CDN provider offers equivalent global reach.

We've measured this gap directly for clients with a meaningful audience in a region their CDN provider covered thinly, and the difference in load time between a well-served region and a poorly-served one on the exact same CDN configuration can be larger than the entire gain the CDN delivered in its strongest region. Matching CDN provider to actual audience geography, not just picking whichever provider is most popular or cheapest, is a genuinely important decision that gets skipped surprisingly often.

This becomes especially relevant for a growing business expanding into new markets, since a CDN choice made when the audience was purely domestic doesn't automatically stay the right choice once a meaningful share of traffic starts arriving from a region the original provider serves poorly. We revisit this specific question whenever a client tells us their traffic mix has shifted meaningfully by geography, rather than assuming the original CDN decision remains correct indefinitely.

A CDN's actual performance benefit depends on having edge nodes genuinely close to where real users are, and a site with a meaningful international audience but a CDN configuration defaulting to a smaller edge network can end up with a surprisingly weak improvement for users outside the CDN's strongest regions.

How we structure a CDN configuration review

A full CDN configuration review, something we run as part of any performance-focused engagement, checks cache-hit ratio by asset type, invalidation behavior on a real test deploy, geographic edge coverage against actual traffic data, and header configuration against current best practice, since providers update their recommended defaults periodically and a configuration that was correct at setup can quietly fall behind. Each of these checks takes under an hour individually, but together they consistently surface real, fixable performance left on the table even on sites that already consider themselves well optimized.

The client conversation once we find a misconfiguration

Finding a significant caching misconfiguration on an established site is a genuinely good news conversation to have with a client, even though it sounds like bad news at first. It usually means real, meaningful performance gains are available quickly, through a configuration change rather than a larger development project, and clients consistently respond well to a fix that's cheap to implement and produces a fast, measurable result, compared to the slower, harder-to-attribute wins that make up most ongoing performance work, which is exactly the kind of early win that builds confidence in a longer engagement.

We follow that fix with a before-and-after measurement using the exact same testing conditions, same throttled connection profile, same geographic test location, specifically so the improvement is attributable to the caching change alone and not muddied by unrelated variables. A clean, isolated measurement like that is what turns a caching fix from an internal engineering win into a concrete data point a client can cite confidently in their own reporting up the chain.

Start a project

Want this applied to your site?

We run a Core Web Vitals and SEO audit before quoting any performance marketing engagement, and we're happy to share what we'd find on yours.