要查看 DNS 缓存,请在命令提示符下键入 ipconfig /displaydns。
要从 DNS 缓存中删除该项,请在命令提示符下键入 ipconfig /flushdns。
ipconfig.exe调用了Dnsapi.dll中导出的DnsFlushResolverCache 函数,该函数没有任何参数.
BOOL WINAPI DnsFlushResolverCache(VOID);
要停止 DNS 缓存,请运行下列任一命令:
- net stop dnscache
- 或者 - - sc 服务器名 stop dnscache
要在 Windows 中永久性地禁用 DNS 缓存,请使用服务控制器工具或服务工具将 DNS 客户端服务启动类型设置为“禁用”。请注意,Windows DNS 客户端服务的名称还可能会显示为“Dnscache”。
注意:如果停用 DNS 解析器缓存,客户机的总体性能会降低,并且 DNS 查询的网络通信量会增加。
DNS 客户端服务可通过将以前解析的名称存储在内存中来优化 DNS 名称解析的性能。如果 DNS 客户端服务被关闭,计算机仍然可以使用网络的 DNS 服务器来解析 DNS 名称。
当 Windows 解析器收到对查询的肯定或否定响应时,它会将该肯定或否定响应添加到它的缓存中,从而创建一条 DNS 资源记录。解析器在查询任何 DNS 服务器之前都始终会检查缓存。如果缓存中有 DNS 资源记录,则解析器会使用缓存中的记录而不会查询服务器。这种行为可提高查询速度并降低 DNS 查询的网络通信量。
您可以使用 Ipconfig 工具来查看和刷新 DNS 解析器缓存。要查看 DNS 解析器缓存,请在命令提示符处键入 ipconfig /displaydns。Ipconfig 会显示 DNS 解析器缓存的内容,包括从 Hosts 文件中预先加载的 DNS 资源记录和系统解析过的任何最近查询的名称。一段特定时间之后,解析器会丢弃缓存中的记录。该时间段在与 DNS 资源记录相关联的生存时间 (TTL) 中指定。您还可以手动刷新缓存。刷新完缓存后,计算机必须重新向 DNS 服务器查询计算机以前解析过的任何 DNS 资源记录。要删除 DNS 解析器缓存中的条目,请在命令提示符处键入 ipconfig /flushdns。
使用注册表控制缓存时间
用于缓存肯定或否定响应的时间长度取决于以下注册表项中的条目的值:
肯定响应的 TTL 是下列值中的较小者:
- 在解析器收到的查询响应中指定的秒数
- MaxCacheTtl 注册表设置的值。
注意
- 肯定响应的默认 TTL 是 86,400 秒(1 天)。
- 否定响应的 TTL 是在 MaxNegativeCacheTtl 注册表设置中指定的秒数。
- 否定响应的默认 TTL 是 900 秒(15 分钟)。
如果您不希望缓存否定响应,请将 MaxNegativeCacheTtl 注册表设置设为 0。
要在客户机上设置缓存时间,请执行下列步骤:
- 启动注册表编辑器 (Regedit.exe)。
- 在注册表中找到并单击以下项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
- 在“编辑”菜单上,指向“新建”,单击“DWORD 值”,然后添加下列注册表值:
数值名称:MaxCacheTtl
数据类型: REG_DWORD
默认值:86400 秒
数值数据:如果您将客户端的 DNS 缓存中的最大 TTL 值降低为 1 秒,则客户端 DNS 缓存看起来已被禁用。
数值名称:MaxNegativeCacheTtl
数据类型:REG_DWORD
默认值:900 秒
数值数据:如果您不希望缓存否定响应,请将该值设为 0。 - 键入您要使用的值,然后单击“确定”。
- 退出注册表编辑器。
子网优先级划分
Windows XP DNS 解析器还使用“子网优先级划分”。如果解析器从 DNS 服务器收到多个 IP 地址映射(A 资源记录),并且一些记录含有计算机直接连接到的网络中的 IP 地址,则解析器会首先放置这些资源记录。这种行为会强制计算机连接到比较靠近它们的网络资源,从而减少了子网间的网络通信量。
虽然“子网优先级划分”确实可减少子网间的网络通信量,但在某些情况下,您可能喜欢让循环功能按照 RFC 1794 中的说明工作。如果是这样,您可以通过在以下注册表项中添加一个值为 0(REG_DWORD 数据类型)的 PrioritizeRecordData 注册表条目来禁用“子网优先级划分”功能:
DnsType