当域名解析记录修改完成之后, 大家会发现浏览器里面显示的还是那个旧的地址, 导致这个问题的根本原因, 实际上是由于本地DNS缓存还没有被刷新所导致的。一旦把缓存清除掉之后, 新的记录一般会在30秒到1分钟这个时间段内生效。下面将按照所使用的设备类型, 逐一为大家提供具体的操作步骤。

Windows系统

用管理员权限启动命令提示程序, 操作方式是按下键盘上的Win键和X键后, 找到并选择终端(管理员)这一选项, 接下来按照顺序依次运行下面的指令: 。

1. ipconfig /flushdns —— 清除本地DNS客户端缓存

2. ipconfig /registerdns —— 重新向DNS服务器注册本机记录

3. 执行ipconfig /release这个操作之后, 紧接着去运行ipconfig /renew这个命令, 这个过程的意思是先把当前的IP地址给释放掉, 然后再去重新申请并获取一个新的IP地址, 并且这个流程是在存在IP层缓存的情况下去操作的。

在你完成操作之后, 请执行 nslookup 你的域名 这个命令。然后查看该命令返回的IP地址已经得到更新的情况。

macOS系统

把终端这个东西给打开, 然后去执行下面这个操作。

sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

只要你把那个系统密码给输进去, 然后等着那两条命令全都执行完了以后, 系统才会去把那个缓存给清掉。

手机

iOS系统里面没有命令行入口, 这里面的意思是说用户没法通过敲代码来操作。你需要开启飞行模式, 然后等着10秒钟, 再把它关掉, 或者让设备重新启动一下。这样系统的做法就是强制刷新DNS内容, 也就是重新去更新一下网址地址到IP地址的那个对照表信息, 以便让网络连接恢复正常状态。

Android: 先打开手机的设置功能, 然后找到WLAN这一项接着长按当前已经连接的网络, 再进入修改网络页面, 点击高级选项把IP设置修改为静态, 然后在DNS1的位置填入8.8.8.8, 最后保存这些设置切回DHCP模式, 这样缓存就刷新了。

浏览器层

改了域名记录不生效?DNS缓存清除技巧,电脑手机路由器全覆盖(图1)

在Chrome或者Edge浏览器里, 把地址栏输入chrome://net-internals/#dns, 然后点Clear host cache。再去访问chrome://net-internals/#sockets, 接着点Flush socket pools。

有一个通用的方法, 这个方法就是按下Ctrl+Shift+Delete这几个键来操作, 这样可以把浏览器里面的全部缓存清除干净。

路由器与网络层

大部分的家用路由器都是在内部自带有了 DNS 缓存功能的, 你可以登录到管理后台进行下一步的操作,这个管理后台的访问地址通常是 192.168.1.1 , 或者是 192.168.0.1 , 进入之后, 你需要找到里面的选项, 一般是在"DHCP"设置区域中, 或者是在"高级设置"的区域里去把 DHCP 服务给重新启动一下, 又或者手动地把 DNS 缓存清除掉, 除此之外, 还有一种更加简单的办法就是直接去把路由器重新启动一遍, 这样做同样是可以达到效果的。

验证与关键注意事项

等清理完以后再拿nslookup这个命令, 或者拿dig这个命令去查一查, 确认一下域名现在返回的IP地址是不是已经变成了新IP。

在采用如8.8.8.8、223.5.5.5之类的公共DNS服务的情况下, 该服务器所具备的自身缓存功能是无法直接进行本地清除操作的, 必须要等待其对应的TTL值发生过期。

当您在 gname.xin 来管理域名的时候。有一个比较好的做法。就是建议将解析记录里面的 TTL 值设置成 60 秒。因为这样做了之后。后续如果需要进行任何相关的变更操作的话。您每次等待生效的时间就可以被缩短啦。具体的效果就是等待时间在 1 分钟以内就能搞定了。

常见问题

Q:逐层清完仍不生效?

大家依次按照“本地设备”、“浏览器”、“路由器”、“互联网服务提供商也就是你说的ISP”、“公共DNS服务器”以及“域名服务商”这样的顺序去进行排查, 因为如果在这一连串环节中的任意一个地方, 那个缓存还没有清理干净, 那么以前用过的那些旧的记录就可能会还残留在那儿。

你得首先确认一下, 那个解析的记录本身是不是已经保存成功了, 然后还要看看它设置的那个生存时间也就是大家常说的TTL, 是不是就已经过期了。

Q:清除缓存会断网吗?

A: 这种情况不会发生。因为数据清除之后, 系统会立刻重新开始向DNS服务器发出请求。在1-3秒之内, 可能会有一小会儿出现没法解析结果的情况。随后情况会自动恢复正常这个过程完全不会影响持续的连接状态。