Http DNS查找时间和Windows DNS缓存

Http DNS查找时间和Windows DNS缓存,http,windows-7,dns,fiddler,browser-cache,Http,Windows 7,Dns,Fiddler,Browser Cache,出于DNS解析测试目的。。。我想禁用Windows 7中的所有DNS缓存 我仍然看到同一域的连续请求的“DNS查找:0 ms” 我尝试了明显的“ipconfig/flushdns”,并且完全停止了服务: net stop dnscache 此命令也会产生相同的效果: net stop "DNS Client" 而且我知道浏览器正在很短的时间内缓存DNS查找。因此,我刷新他们的缓存,关闭并打开浏览器,或者在不同的浏览器(Firefox、chrome、chrome incognito,IE)中

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

我仍然看到同一域的连续请求的“DNS查找:0 ms”

我尝试了明显的
“ipconfig/flushdns”
,并且完全停止了服务:

net stop dnscache
此命令也会产生相同的效果:

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

因此,第一次DNS查找时间可以是25ms(使用8.8.8.8),但下一次DNS查找将缓存在系统中的某个位置,时间为0ms。只有在我等待3到5分钟重复请求时才会离开

我可以做些什么来强制系统每次解析DNS,即使在同一个DNS请求之间只有5秒

Windows是否与保持活动状态或某种TCP连接的重复使用有关?不应该,因为我重新打开了浏览器。但是我没有主意了

你能解释一下这个问题吗


谢谢

听起来您的目标是模拟一个不存在的配置,而该配置在野外并不存在(因为所有客户端都有DNS缓存)。现在还不完全清楚为什么这是一个值得测试的有趣配置,但这是可能的

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

在本例中,您遇到了两个问题:首先,Fiddler本身维护一个DNS缓存。第二,无论您是否关闭浏览器客户端,Fiddler池都会保持与服务器的连接处于活动状态


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


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

非常感谢Eric的快速回答。这解释了很多事情。为什么我觉得很有趣?首先,因为我试图了解在请求web文档时所有DNS缓存级别是如何工作的。而且我正在测试绑定为DNS缓存。此外,还测试了将请求转发到Google DNS的速度,而不是从根服务器解析请求的速度。最后,我可以看出,当您想测试第一次冷缓存页面加载(应包括DNS查找时间)性能的数倍时,这对Web开发人员非常有用,我发现你的这篇文章很有用,可以了解更多关于Fiddler DNS缓存的信息。我知道这是一篇老文章,但将Fiddler.network.timeouts.dnscache设置为0不起作用。Fiddler DNS查找仍在缓存中。
Fiddler.network.timeout.dnscache
似乎工作正常。你能详细解释一下为什么你认为它不起作用吗?你确定你不仅仅是在重用以前使用过的(和池)连接吗?OP没有提到Fiddler。我有同样的问题,我不使用小提琴。about:config中没有“fiddler”条目。那么,是什么导致在Windows10Home、Firefox69.0.1上看到主机文件更改的延迟呢?