// blog / speed

How I clear every cache layer when WordPress changes don't show up

To clear cache in WordPress when your changes don't show, I purge every layer from the inside out: the page builder's CSS files, the caching plugin, the host's server cache, the CDN such as Cloudflare, then the browser. After that, I prove what's live by requesting the page over HTTP, not by trusting my own screen.

By Muhammad Younus Updated 10 min read Speed

Speed and Core Web Vitals: illustration for "Clearing every WordPress cache layer"
// 01 - the cause

Why don't WordPress changes show up straight away?

Because a cache is doing its job. Every layer between your edit and a visitor keeps a saved copy of the page, or of the files it loads, so it doesn't have to build them again. That copy doesn't know you've just pressed Update, and it keeps serving what it saved until it expires or somebody clears it. Sorting out which layer holds what is a regular part of my WordPress speed optimization service.

So the question isn't whether to clear the cache. It's which one, and in what order. Clear the wrong layer and nothing changes. Clear the right ones in the wrong order and an outer cache refills itself from an inner one that's still stale.

Before I purge anything, I rule out two causes that aren't caching at all. Is the change actually published, not sitting in a draft or a pending revision? And am I looking at the site I edited, not a staging copy or a domain whose DNS still points at an old host?

// pro tip

If a change shows while you're logged in but not in a private window, it's almost certainly a cache. Many page caches hand logged-in users a fresh page and everyone else the saved one.

// 02 - the layers

Which caches sit between an edit and a visitor?

Counting from the database outwards, these are the layers I expect on a typical WordPress site. Not every site has all of them, so finding yours comes first.

The cache layers on a WordPress site, what each one holds and how to tell it's the one
LayerWhat it holdsSign it's the one
Page builder filesGenerated CSS files, and with Elementor's Element Caching, rendered widget HTML kept in the databaseThe text is new but spacing, colours or fonts are old
Object cacheDatabase results held in Redis or Memcached, when the host runs oneA setting or menu change won't stick
Caching pluginWhole HTML pages, plus the minified CSS and JavaScript it builtLogged in you see the change, logged out you don't
Host server cacheFull pages cached by the server in front of PHPThe plugin's been cleared and the page is still old
CDNCopies kept at the edge, near the visitorThe headers say HIT
BrowserFiles your own browser saved, for as long as the cache headers allowedOther people see the change and you don't

Two of those catch people out. Cloudflare doesn't cache HTML by default, only static files such as CSS, JavaScript and images. If a Cloudflare site keeps serving an old page, not just old styling, someone's usually added a cache rule that makes HTML eligible, so that's where I look first.

The other is the browser. Cloudflare's documentation says a purge doesn't affect assets already stored in a visitor's browser, and its default Browser Cache TTL is four hours. So a file that keeps the same URL can stay old on a returning visitor's screen long after every server has the new one.

// 03 - the order

How I clear cache in WordPress, layer by layer, from the inside out

The rule's simple: clear the layer closest to WordPress first, then work outwards. Each outer layer refills itself from the one inside it, so purging the CDN while the host's cache is stale just copies the stale page back to the edge.

  1. Step 01

    Regenerate the page builder's CSS

    Elementor writes its styles to CSS files under /wp-content/uploads/elementor/css/, and its Clear Files & Data tool clears them so they're rebuilt from the current settings. On Divi 5 it's the Clear CSS Cache button in Theme Options.

  2. Step 02

    Flush the object cache, if there is one

    If the host runs Redis or Memcached, I flush it from their panel or with wp cache flush. The WP-CLI docs warn that on a multisite with a persistent object cache, this typically flushes every site in the network.

  3. Step 03

    Purge the caching plugin

    Its clear or purge all button empties the saved pages and, on most plugins, the minified CSS and JavaScript it built. The next section lists where that button sits in the common plugins.

  4. Step 04

    Clear the host's server cache

    Plenty of managed hosts run their own full page cache in front of WordPress, and a plugin purge doesn't always reach it. I clear it from the hosting panel or the host's own admin bar button.

  5. Step 05

    Purge the CDN by URL

    In Cloudflare I purge the exact URLs that changed, plus any CSS or JavaScript file whose content changed under the same address. Cloudflare calls purge by URL its recommended method; purge everything empties the edge for the whole site.

  6. Step 06

    Check in a clean browser

    Last, I load the page in a private window or with the cache disabled in DevTools. A hard reload works for one page: Ctrl+Shift+R in Chrome, Edge and Firefox on Windows, Cmd+Shift+R in Chrome and Firefox on a Mac, and Option+Cmd+R in Safari. That's only my own browser, though.

// watch out

Don't purge the CDN first. It feels like the biggest hammer, but while the host's cache still holds the old page, the edge just fetches it again.

Rather have me do this? One person, whole job.

Book a call on Upwork
// 04 - plugins and hosts

Where's the clear cache button in each caching plugin and host?

Each one hides it somewhere different. This is where the vendors' own docs put it, checked on 28 September 2026.

  1. i.

    WP Rocket

    Clear and preload cache, in the WP Rocket menu on the admin bar or under Settings, WP Rocket, Dashboard. A single page has its own Clear this cache link in the Pages or Posts list.

  2. ii.

    LiteSpeed Cache

    Purge All, in the Toolbox or the admin bar menu. LiteSpeed's docs say it purges everything except Critical CSS, Unique CSS and LQIP, so those need their own buttons.

  3. iii.

    W3 Total Cache

    The Performance menu in the admin bar, where a plugin contributor on the WordPress.org forum points people to purge all caches.

  4. iv.

    WP Super Cache

    Its settings page, under Settings, WP Super Cache, which is where the plugin's own instructions tell you to clear the cache.

  5. v.

    SiteGround

    Site Tools, Speed, Caching, then the Dynamic Cache tab, where a Flush Cache icon clears each site. Memcached has its own tab and flushes for all sites at once.

  6. vi.

    Kinsta

    The Clear Cache link in the admin toolbar, which needs the Kinsta MU plugin, or Sites, your site, Caching, Server Caching, Clear cache in MyKinsta. That second route doesn't clear the CDN cache.

  7. vii.

    WP Engine

    The site's Cache screen in the User Portal, where Clear all caches covers the page cache, network caches including the CDN, and the object cache if it's on.

  8. viii.

    Hostinger

    Cache Manager, under Websites, Dashboard, purges the whole site or one URL. Hostinger's help says it controls only the LiteSpeed web server cache, not the CDN.

// 05 - no plugin

How do I clear the WordPress cache manually, without a plugin?

Delete the page cache files over SFTP or the host's file manager. It's the fallback when a broken cached page stops the dashboard loading. WP Super Cache, for example, keeps its pages in wp-content/cache/supercache/ with a folder named after your host, and its documentation says the cache directory "is only for temporary files".

I delete the cached pages inside that folder and nothing else. Files like wp-content/advanced-cache.php and wp-cache-config.php are the plugin's setup, not cached pages, so removing them changes how caching runs rather than clearing it. Server caches run by the host, and Cloudflare, don't live in WordPress's files at all, so they still need their own purge.

// 06 - the proof

How do I prove what's actually live?

I stop trusting screens and ask the server directly. A request from the command line has no browser cache behind it. I add a query string nobody's used before, like ?cb= followed by the time, because Cloudflare's default cache key includes the query string, so to the CDN it's a new address with no saved copy, unless someone's set the cache key to ignore query strings.

Then I read the headers, not the page. curl -sI shows them without the body. On Cloudflare, cf-cache-status says what the edge did: HIT means it served a saved copy, MISS means it fetched from the server, and DYNAMIC means it didn't treat the response as cacheable. Hosts add headers of their own, and the names vary.

Once the busted URL shows the change, I request the plain URL too. If the plain one's still old, an outer cache is holding it, which is the usual story behind a WordPress cache not clearing. If both are old, the problem sits further in: the change never reached the server, or it's stuck in the builder's CSS or the object cache. It's the same request I run against old URLs in the first hour after a site moves platforms.

The trap most guides skip makes a correct deploy look broken. A theme usually loads its stylesheet with a ?ver= number, and the WordPress reference says that when no version's given, it adds the installed WordPress version instead. Edit style.css without bumping the theme's version and the file's URL doesn't change, so a browser that saved the old file keeps using it.

It's caught me on my own site. A stylesheet fix shipped under an unchanged URL, every server-side check said the deploy was right, and browsers showed the old layout for hours. The fix wasn't another purge. It was the cache-busting pattern MDN describes: put a version or hash in the file's address and never change a file in place.

// 07 - page builders

Why can a page builder keep showing old styles?

Because builders cache their own output, separately from every layer above them. Elementor's developer docs say the styles set in the editor are saved in the database and used to generate CSS files. If a file isn't regenerated, the database has the new colour and the file still has the old one. Divi 5 does much the same with a static CSS cache, and its help centre puts clearing it first after an update.

Elementor's Element Caching goes further, storing a widget's rendered HTML in the database. Elementor says it's off by default for widgets and meant for static elements, though containers and sections are always cached once it's on. Where it's on, I treat it as one more layer: Clear Files & Data, then purge outwards again. Its speed and cache options sit with the other Elementor SEO settings.

Builders also cause stale styling that isn't a cache at all, like custom CSS pasted into three places. That's where a cache question turns into what the builder's markup does to the page. On Divi, the Theme Options I check for search sit near the CSS settings, so I look at both.

// when to hand this over

If you've cleared every layer, the headers say MISS and the page is still wrong, or the site's slow once the cache is empty, that's the caching and speed work I do, remotely, over a shared screen or async. I find which layer's doing what and fix that layer.

Book a call on Upwork

Is this your site? Send me the URL.

Book a call on Upwork
// questions - speed

What else do people ask about this?

Will I lose anything if I clear my cache?

No. A cache only holds copies of pages and files that WordPress can rebuild from the database, so clearing it throws away copies, not posts, pages or settings. The next visitor waits a little longer while a fresh copy's built.

Should I clear the WordPress cache regularly?

Only when a change isn't showing, or after an update that changes styling. Routine purges don't make a site faster. For a while they do the opposite, because every page gets built fresh.

How do I clear the WordPress cache with LiteSpeed Cache?

Use Purge All in the LiteSpeed Cache admin bar menu or its Toolbox. It purges everything that can be freely regenerated, which leaves Critical CSS, Unique CSS and LQIP until you purge them separately.

Why can I see my changes when a client can't?

Usually because you're logged in and they aren't. Many page caches skip logged-in users, so you get a fresh page while visitors get the saved one. A private window shows you roughly what they see.

Can clearing the cache hurt my SEO?

Not in any lasting way. For a short while after a purge, pages are served uncached, so the first visitors and crawlers get a slower response until the cache refills. That's why I purge by URL.

// sources - checked

Where do these rules come from?

Platform and Google documentation, opened and read on the day this was written. Everything else is how I work.

  1. Cloudflare docs: default cache behavior
  2. Cloudflare docs: cache keys
  3. Cloudflare docs: cache responses (cf-cache-status)
  4. Cloudflare docs: purge cache
  5. Cloudflare docs: Edge and Browser Cache TTL
  6. WordPress developer reference: wp_enqueue_style()
  7. WP-CLI: wp cache flush
  8. Elementor Help Center: Clear Files & Data
  9. Elementor Help Center: Element Caching
  10. Elegant Themes Help Center: fixing display issues after updating Divi 5
  11. MDN: Cache-Control header
  12. WP Rocket knowledge base: clear WP Rocket cache
  13. LiteSpeed docs: LiteSpeed Cache for WordPress Toolbox (Purge All)
  14. WordPress.org support forum: W3 Total Cache contributor on purging caches from the Performance menu
  15. WordPress.org: WP Super Cache plugin page (cache directory, settings page and uninstall notes)
  16. SiteGround KB: how to flush your site caches
  17. Kinsta docs: server caching
  18. WP Engine support: manage server and browser caching
  19. Hostinger help: how to use Cache Manager
  20. Wikipedia: bypass your cache (reload keys and disabling the cache by browser)
Muhammad Younus, WordPress technical SEO consultant
// who wrote this

One consultant, writing down his own method

I'm Muhammad Younus, a WordPress technical SEO consultant with 8+ years of experience and 100+ client sites fixed. Top Rated Plus on Upwork with a 100% Job Success Score. Every post here is the way I actually do the job, written in the first person because it's one person doing it, remotely, with no team behind the name.

Nothing in these posts is a client I can't name or a number I can't show. Where a figure comes from a client's Search Console, it's from a published case study, and where a rule comes from Google or a platform, the source is linked at the bottom of the post.

// the service behind this post
Muhammad Younus pointing toward the camera with an inviting smile
// next step

Want this done on your own site?

Book a call on Upwork, send the URL and read-only Search Console access, and you'll get a written scope for the search side before any work starts. One person does the whole job, remotely.

Book a call on Upwork