You changed your opening hours, a price or a photo, pressed Update, and it looks right to you. But a customer, or your own phone, still shows the old version, hours or even days later. Nothing is broken: a copy of the old page is being kept somewhere between WordPress and the visitor, or the change went into a different copy of the site. Below is a rebuilt example (not a real client), a two-minute test that tells you which, and how to clear each one.
yoursite.com/contact/?test=123. Most caches treat that as a new page. New version with it, old without it: a server or CDN cache, not WordPress.cf-cache-status: HIT means Cloudflare served its stored copy; x-cache: HIT, x-proxy-cache or a large age value means the host's cache did. A caching plugin often leaves a comment at the very bottom of the page source (Ctrl+U) naming itself and when the copy was made.cf-cache-status: HIT, log in to Cloudflare, open the site, then Caching > Configuration > Purge Everything. If it keeps coming back, look for a "Cache Everything" page rule or cache rule with a long edge time; that is the rule doing it. Turn on Development Mode while you work if you change things often.-2), a draft or a revision that was never published, or a post scheduled for later. Check the address bar in the editor against the page visitors open, and check the page's status reads Published.| What you see | Usual cause | Usual fix |
|---|---|---|
| New version for you, old for customers | You are logged in and skip the cache | Test in a private window; clear the plugin, host and CDN caches |
| Old version only on your own computer or phone | Your browser's copy | Ctrl+F5 / Cmd+Shift+R, or reopen the tab |
New with ?test=123, old without | Server or CDN cache | Purge the host cache, then Cloudflare's |
Headers show cf-cache-status: HIT | Cloudflare stored the page | Purge Everything; check for a "Cache Everything" rule |
| Text changed, colours or layout did not | Old CSS files from a builder or minify plugin | Regenerate the builder's CSS; clear the optimisation cache |
| Footer or header still shows old hours on every page | The text lives in a widget, the Customizer or a template | Edit it there, then clear caches |
| Old everywhere, even in a private window with a query | Wrong copy edited, draft not published, or scheduled | Check the editor's address and the page status |
| A change worked, then disappeared after an update | Edited theme files directly | Move it to a child theme or Additional CSS |
Once you know which layer is holding the old copy, the fix takes minutes. If you would rather hand it over, or the change still will not show, that is what the box below is for. Related: a site that is slow to load, a WooCommerce checkout that fails (often a cache too) and a footer still showing an old year.