Best way to change site IP address - from the end user perspective?

No, you can't. The problem is that DNS response can be cached anywhere between user and DNS server and there is no way to invalidate them.

What you can however do - as soon as you have data in sync and your second site is ready, you can reconfigure original server to behave as a proxy and pass all requests to the new location.

This way, you can achieve almost 0s of downtime of your website.

Update

If you don't have root access there are several options:

  • Perform proxying in PHP

  • Configure proxy on the second server (if you have root access there), switch DNS and when you are ready change proxy to webserver

  • This method can be source of problems Have 2 addresses (www.domain.tld and www2.domain.tld). Configure www2 (which is the same as www) and set correct DNS records. Then prepare www version of your site and do the switch of the DNS. Set redirect of all requests on old server to www2 subdomain.


In theory, setting the domain's TTL to something low and waiting for that change to take place, then changing the IP, should result in a near-transparent migration. After all, that's the whole point of the TTL being configurable.

In practice, people misconfigure things and tools break. That's why you may need to provide instructions to your users to clear their local cache if things don't work right.

You're not doing anything wrong though.