我在这里读了一堆相关的Q / A,但我还不确定最好的答案是什么。
我正在将两个站点从IP地址“1.abc”移动到“2.def”。 截至目前,在现有的DNS中,我将所有TTL设置为300秒,并且有一个新的DNS区域可以使用(在AWS Route 53上),新的名称服务器和所有TTL时间均为60秒。 所以我相信我已经准备好了,从DNS的angular度来看。 移动后,几天之后,我会把TTL设置为53号线的更合理的数字。
我已经向所有的用户发出了警告,并且我有一个确定的时间窗口。 我告诉他们,一旦移动完成,如果24小时过去了,他们仍然看到旧的(locking的)网站,他们应该重新启动计算机强制本地DNScaching刷新。
我不明白用户的浏览器(caching)如何在这个angular色扮演一个angular色。 我自己的一个本地hosts文件(Win7)的实验告诉我,有一些关于浏览器是不是让旧的IP地址去 – 我不得不去历史 – >清除所有的东西 ,以获得新的网站位置显示甚至在ipconfig /flushdns
(编辑) – 我没有root访问旧的服务器,所以我不能实现这个问题的接受的答案 。
问题:我真的不希望我的用户不得不处理这个问题,那么有什么办法可以强制所有的浏览器重新caching吗? 如果是这样,我打开它多久?
谢谢…
不,你不能。 问题是DNS响应可以caching在用户和DNS服务器之间的任何地方,并且无法使它们无效。
但是,只要数据同步并且第二个站点准备就绪,您可以重新configuration原始服务器以充当代理,并将所有请求传递到新位置。
这样,您可以实现几乎0的停机时间您的网站。
更新
如果你没有root访问权限,有几个选项:
在PHP中执行代理
在第二台服务器上configuration代理(如果您有root用户访问),切换DNS,准备就绪后,将代理切换到networking服务器
这个方法可能是问题的来源有两个地址(www.domain.tld和www2.domain.tld)。 configurationwww2(与www相同)并设置正确的DNSlogging。 然后准备您的网站的www版本,并做DNS的切换。 将旧服务器上的所有请求redirect到www2子域。
从理论上讲,将域名的TTL设置得低一点,等待这个更改发生,然后改变IP,应该导致近乎透明的迁移。 毕竟,这是TTL的整个可configuration点。
在实践中,人们错误地configuration事物和工具。 这就是为什么您可能需要向用户提供指示,以便在事情不能正常工作时清除本地caching。
你没有做错任何事情。
不可避免地,您的旧地址将被caching并使用很长时间 – 主要是通过机器人。
我该怎么做:
www2.yourdomain.com ,指向新的IP。 这个logging以前从未被使用过; 因此从未caching。 www2.yourdomain.com www2.yourdomain.comredirect到www.yourdomain.com 。 请务必使用301永久redirect。 https://en.wikipedia.org/wiki/HTTP_301
听起来就像你计划在同一时间改变你的名字服务器? 由于名称服务器被发现的方式,它们需要更长的时间来更新,而不是常规logging – 通常大约24小时或更长时间。
我强烈build议您在更改DNS 之前更新当前提供商的DNS,或在更改网站IP前7天更改您的域名服务器。
现代计算机和浏览器在使用DNS服从TTL方面相当可靠,但是您需要了解整个链路以获得最佳结果。