【问题标题】:DNS Lookup Time and Windows DNS CacheDNS 查找时间和 Windows DNS 缓存
【发布时间】:2012-09-16 10:17:57
【问题描述】:

出于 DNS 解析测试目的...我想禁用 Windows 7 中的所有 DNS 缓存

对于同一域的连续请求,我仍然看到"DNS Lookup : 0 ms"

我已经尝试了明显的"ipconfig /flushdns",并且还完全停止了该服务:

net stop dnscache

这个命令也有同样的效果:

 net stop "DNS Client"

而且我知道浏览器在很短的时间内缓存 DNS 查找。所以我刷新他们的缓存,关闭打开浏览器,或者在不同的浏览器(Firefox、chrome、chrome incognito、IE)中打开同一个域以绕过该 DNS 缓存。

所以第一次,DNS 查找时间可以是 25 毫秒(使用 8.8.8.8),但是下一次 DNS 查找缓存在系统的某个地方,时间是 0 毫秒。并且只有在我等待大约 3 到 5 分钟 以重复请求时才会消失。

我能做些什么来强制系统每次解析 DNS,即使是同一 DNS 请求之间的 5 秒?

与保持活动或 Windows 对 TCP 连接的某种重用有关吗?它不应该,因为我重新打开浏览器。但我没有想法,

你能解释一下这个问题吗?

谢谢

【问题讨论】:

    标签: http windows-7 dns fiddler browser-cache


    【解决方案1】:

    听起来您的目标是模拟一个在野外不存在的不存在的配置(因为所有客户端都有 DNS 缓存)。目前尚不完全清楚为什么这是一个有趣的配置进行测试,但可以这样做。

    正如您所提到的,所有浏览器都有 DNS 缓存。 Windows 的 DNS 客户端本身有一个缓存。您可能使用的任何上游代理也有 DNS 缓存。

    在这种情况下,您遇到了两个问题:首先,Fiddler 本身维护着一个 DNS 缓存。其次,无论您是否关闭浏览器客户端,Fiddler 都会将与服务器的连接保持连接。

    如 Fiddler 书中所述,您可以使用首选项 fiddler.network.timeouts.dnscache 控制 Fiddler DNS 缓存。默认值为150000(以毫秒为单位,因此为 2.5 分钟)。您可以将此值设置为 0 以防止 DNS 缓存。

    为了防止重复使用连接,您可以在 Fiddler 会话列表中按 CTRL+X,也可以根据需要调用 FiddlerApplication.oProxy.PurgeServerPipePool 方法。

    【讨论】:

    • 非常感谢 Eric 的快速回答。这解释了很多事情。为什么我觉得有趣?首先是因为我试图掌握在请求 Web 文档时所有 DNS 缓存级别是如何工作的。而且我正在测试绑定为 DNS 缓存。还测试了向 Google DNS 转发请求的速度与从根服务器解析它的速度,最后我可以看到,当您想要多次测试第一次冷缓存页面加载的性能(即应包括 DNS 查找的时间)
    • 顺便说一句,我发现你的这篇文章有助于了解更多关于 Fiddler DNS 缓存blogs.msdn.com/b/fiddler/archive/2010/05/05/…
    • 我知道这是一篇旧帖子,但将 fiddler.network.timeouts.dnscache 设置为 0 不起作用。 Fiddler DNS 查找仍被缓存。
    • fiddler.network.timeouts.dnscache 似乎工作得很好。你能详细说明为什么你认为它不起作用吗?您确定您不只是重复使用以前使用过的(和池化的)连接吗?
    • OP 没有提到 Fiddler。我有同样的问题,我不使用 Fiddler。 about:config 中没有“fiddler”条目。那么是什么导致在 Windows 10 Home、Firefox 69.0.1 上看到主机文件更改延迟?
    猜你喜欢
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 2016-01-01
    相关资源
    最近更新 更多