Getting started

Why is my website still showing the old version?

By Jake Luo · Published Sep 12, 2026

Almost always because something between your server and your visitor is still handing out a copy it saved earlier — a cache in your own browser, a content delivery network at the edge, or your host's own page cache. The update really is live; what visitors receive is a copy from before it. Find the layer before you change anything: open the page in a private window, then load it with a meaningless query string on the end, then open it on a different network. Whichever step suddenly shows the new page tells you which cache is holding the old one.

Your site is fine. The copy in front of it is old.

Publishing writes a new version of the page at your origin — the server or storage bucket your host actually reads from. Nothing in that step promises your visitors are talking to your origin. Between the two sit your browser, usually a content delivery network, sometimes a service worker your framework installed, and occasionally a proxy on the visitor's own network. Each of them keeps a copy and a rule about how long to trust it, and each of them will answer a request without asking anyone.

The signature of this problem is inconsistency. You see the new page and your customer does not. Two people get different versions of the same address. It fixes itself an hour later with no deploy. That pattern is worth learning, because a genuinely broken release is broken for everybody at once — so if some people are fine, stop reading your build log and work out who is answering the request instead. The rule underneath the first one is what surprises people: many caches are configured not just to hold a copy until it expires, but to keep serving the expired copy while they fetch a fresh one in the background. Expired does not mean out of use, which is how a page outlives its own lifetime by a wide margin.

Find the layer before you fix anything

Each step below rules out one cache, in the order that costs you the least. Work down the list and stop at the first one that shows the new page: that is your answer, and the fix is a purge at that layer rather than another deploy.

  1. Open it in a private window. If the new version appears there, the stale copy was only ever in your own browser and no visitor was ever affected. Hard-refresh your normal window and you are finished. This is the most common outcome and the most commonly skipped step, which is why the panic usually outlasts the bug.
  2. Add a meaningless query string. Load the same address with something like ?x=1 on the end. Most shared caches treat that as a different URL and go to the origin for it, so a fresh page here means your origin is correct and something between you and it is still serving the old copy under the clean address.
  3. Open it on a different network. A phone on mobile data rather than the office Wi-Fi. A content delivery network keeps separate copies in separate locations, so this separates one stale edge from something every visitor is getting, and it is the only version of the test that reflects what a stranger actually sees.
  4. Ask the origin directly. Fetch the page through your host's dashboard, a server-side preview, or a request aimed at the origin rather than at the public address. If the origin is right and the public URL is wrong, the problem lives entirely in delivery, and nothing in your code or your build is going to move it.

Once you know the layer, purge or invalidate it there, then repeat the third step from a network you do not control. Confirming a fix from your own machine is how people end up certain a purge worked when it did not.

The version of this that cost us an hour

We host pages for our own customers, so this is our problem and not only our readers'. On 11 September 2026 we found a page we had taken down still being served to anyone who opened it, fifty-two minutes after the takedown. Everything we could see on our side was correct: the file was gone from storage and our own records said the page was unpublished. The content delivery network in front of it had been left to keep answering with its last good copy for up to a day while it revalidated in the background, so deleted described our storage and said nothing about what a visitor received. We fixed it in two places deliberately — once in the network's configuration, to refuse to serve stale copies at all, and once in the page's own cache instructions, so that the bound no longer depends on a setting a rebuilt backend would quietly restore to its default.

The rule we took from it is the transferable part: published, updated and deleted are claims about your origin. What a visitor receives is a separate fact, and the only honest way to learn it is to fetch the page the way a stranger would. The same layer also changed what we could measure. Views on the pages we host are recorded as a floor rather than a total, because a request answered at the edge never reaches the origin that does the counting — and while stale serving was live, our own network's cache-refresh requests were most of what that counter contained, until we excluded them by name. A cache does not only change what people see. It changes what you can prove about what they saw.

It changed how we write the two operations, too. Publishing uploads the file first and records it second, because the reverse order records a live page while nothing is being served. Unpublishing deletes the file first and marks the record second, because the reverse records a page as gone while it is still up. When the second half fails, the state we report is then wrong in the direction that is safe to be wrong in. Asking which failure you would rather have is most of what running a website carefully consists of, and it is the same discipline we build into AgentCeres — the AI Growth Officer at agentceres.com: a roster of specialists drafts the pages, posts and outreach, and outbound work waits for a person's approval by default. If you have just published a site for the first time, the checks in should I use AI to build my website are the other half of this one.

FAQ

How long should I wait before assuming something is broken?
Long enough to cover the cache lifetime, which means you need to know what that lifetime is. If your host publishes a number, wait that plus a couple of minutes and check again from a different network. If you cannot find a number anywhere, that is the thing to go and find out, because waiting without one is indistinguishable from ignoring the problem. Anything still stale after an explicit purge is a different problem, and worth raising with your host rather than waiting out.
Does clearing my browser cache fix it for my visitors?
No, and this is the most commonly wasted hour in the whole category. Your browser cache holds a copy for you alone. If a private window shows the new version, you have proved that your visitors may still be getting the old one — not that anything is solved. Only a purge at the shared layer, meaning the content delivery network or your host's page cache, changes what other people receive.
Google still shows my old title and description. Is that the same thing?
No. That is Google's index rather than a cache you can purge, and it updates when the page is recrawled, which can take days. Requesting indexing in Search Console and pinging IndexNow shortens the wait, and nothing makes it instant. Check the page itself first, though: if your site is still serving the old copy to visitors, the recrawl will simply record the old copy again.
I deleted the page. Why can people still open it?
Because deleting removes the page from where it was stored, not from everywhere it was copied to. Until the cache in front of it expires or is purged, the address keeps answering, and some configurations will keep answering past that expiry while they refresh behind the scenes. If the page has to be gone now — a wrong price, a customer's request, anything with a legal edge — purge explicitly, then confirm from a network you do not control rather than from the machine you deleted it on.
Should I just turn caching off?
Almost never. The cache is why your page loads quickly and why a sudden burst of traffic does not take the site down; when we put one in front of our own origin, the page cache we were paying to hold fell from about 1.33 GB to 0.31 GB. The fix is a different lifetime per kind of file rather than no cache at all: a long life for assets whose filenames change whenever their contents change, and a short one or none for the HTML document, which is the file that has to reflect your latest edit.
Related questions
Should I use AI to build my website?Why doesn't Google index my React site?Why am I not getting enquiries from my website?Why did my website traffic suddenly drop?

Want this done for you?

AgentCeres is a managed AI marketing team — specialists draft the work, you approve what ships. 14-day free trial, from $39/month.

Start free trialMore answers