Page caching breaks the dynamic parts—here's where

25 August 2026

The espresso machine hisses behind the counter, steam fogging the window while you watch your WordPress dashboard reload for the third time this morning, trying to work out why logged-in users are seeing last week’s content.

Page caching breaks the dynamic parts—here’s what gets frozen and how to fix it

Caching plugins speed up WordPress by serving static HTML, but they also freeze personalised widgets, user-specific menus, and real-time data.

turned-on monitor
Photo by Stephen Phillips – Hostreviews.co.uk on Unsplash

Page caching plugins—WP Rocket, W3 Total Cache, LiteSpeed Cache—work by storing a static snapshot of your page and serving it to every visitor. That snapshot is fast, but it’s identical for everyone. If your site shows different content to logged-in users, displays personalised recommendations, or updates a “subscribers this week” counter in real time, caching breaks it. The plugin serves the same frozen HTML to everyone, and your dynamic content disappears.

The fix depends on what you’re caching. Some plugins let you exclude specific pages (your account dashboard, checkout flow) or inject dynamic fragments using JavaScript or AJAX. Others offer “user-aware” caching that stores separate snapshots for logged-in and logged-out visitors, but that doubles memory use and cache-invalidation complexity. If you’re running a membership site, a course platform, or a newsletter with subscriber-only archives, you need to know which content gets frozen, which routes to exclude, and when to skip caching altogether. The performance gain is real, but so is the risk of serving stale, wrong, or embarrassing content to half your audience.

Read the full story

RELATED ISSUE

Object caching can also break your site—just in a different layer

Page caching freezes the final HTML. Object caching—Redis, Memcached—freezes database query results and PHP objects in memory. When it works, repeated queries become instant. When it breaks, you get stale user roles, outdated post counts, and plugin settings that won’t save. Some hosts enable object caching by default; others require a drop-in file and manual configuration. If you’ve ever watched the WordPress admin show yesterday’s data or seen a plugin’s settings revert after save, persistent object caching is a likely culprit. The performance trade-off is significant, but the debugging surface is larger than page caching.

See when to use it

TACTIC

ConvertKit form embeds add blocking JavaScript that delays first paint

Most newsletter operators embed ConvertKit forms using the default script tag. That script blocks rendering until it downloads, parses, and executes—often adding 400–800 ms to Largest Contentful Paint on mobile. Core Web Vitals matter for SEO and reader experience, and a slow form can cost you both. ConvertKit offers three embed methods: the default blocking script, an async-loaded version, and a static HTML fallback that loads the form instantly and upgrades it with JavaScript later. The static method requires more markup but keeps your page interactive while the form fetches subscriber counts or custom fields in the background.

See the fix

WORTH READING

SEO keyword cannibalization splits your ranking power across duplicate pages

If you’ve published three articles about newsletter growth tactics, two about email deliverability, and a pillar post titled “How to grow your newsletter,” Google may be confused about which page to rank for “newsletter growth.” That’s keyword cannibalization: multiple pages competing for the same query, splitting backlinks, click-through rate, and ranking authority. The fix isn’t always to delete or merge pages—sometimes a small shift in title tags, internal linking, or target keyword is enough. But you need to identify the overlap first, and most operators don’t notice until traffic plateaus or a strong post underperforms in search.

Read more

Know someone who would like this? Forward today’s email—every operator we reach is one closer to running an online business with a little less friction.