我们知道DNS域名解析后会缓存解析结果,其中主要在两个地方缓存结果,一个是Local DNS Server,另外一个是用户的本地机器。这两个缓存都是TTL值和本机缓存大小控制的,但是最大缓存时间是TTL值,基本上Local DNS Server的缓存时间就是TTL控制的,很难人工介入,但是我们的本机缓存可以通过如下方式清除。
1.在Windows下可以在命令行模式下执行ipconfig /flushdns命令来刷新缓存
2.在Linux下可以通过/etc/init.d/nscd restart来清除缓存
3.重启依然是解决很多问题的第一选择
在Java应用中JVM也会缓存DNS的解析结果,这个缓存是在InetAddress类中完成的,而且这个缓存时间还比较特殊,它有两种缓存策略:一种是正确解析结果缓存,另一种是失败的解析结果缓存。这两个缓存时间由两个配置项控制,配置项是在 %JAVA_ HOME%\lib\security\java.security文件中配置的。两个配置项分别是networkaddress.cache. ttl和networkaddress.cache.negative.ttl,它们的默认值分别是-1(永不失效)和10(缓存10秒)。 |