Firefox清除DNS缓存

55

我在访问我在客户服务器上设置的网站时太匆忙了,现在Firefox记住了这个网站作为默认网站。

testsite.mycompanyname.com (non existing subdomain, same as *.mycompanyname.com)
is
www.mycompanyname.dk - or rather the IP of the default server

我后来设置了公共DNS(A记录)以重定向到另一台服务器,但Firefox记住了默认的IP地址。

Chrome/IE/Safari没有问题,因为它们在DNS生效之前没有访问过该站点...

我已在about:config中进行了这些设置:

network.dns.disablePrefetch = true
network.dnsCacheExpiration = 0

还有其他需要翻译的吗?

我确实需要使用Firebug来调试该网站的前端....

谢谢


啊啊啊...我真笨...我试过了,但是把除了网站特定设置以外的所有东西都勾掉了,因为我想保留其他所有的cookie/历史记录......没注意到缓存那个选项。现在一切都清楚了。如果你想接受我的答案,请添加答案。 - Steen
如果您已经在本地编辑了DNS设置,但浏览器中的结果与nslookup的结果不符,请确保您已在正确的位置更改了DNS设置。在我的情况下,我通过PPPoE连接连接到互联网,无线路由器处于桥接模式,我已在无线连接设置中设置了DNS服务器,nslookup开始使用新服务器,但浏览器忽略它们并继续使用来自ISP的DNS,直到我在PPPoE连接设置中更改了DNS服务器。 - user
顺便提一下,Firefox 不会将 DNS 解析缓存到磁盘上,而且有一个菜单可以检查内存中的缓存:https://support.mozilla.org/en-US/questions/1258756 - xeruf
您可以在Firefox中清除缓存,方法如下:about:networking#dns - Matthijs P
5个回答

76
DNS缓存发生在多个级别: 应用程序询问本地系统, 本地系统询问本地配置的解析DNS服务器, 该服务器再向权威DNS服务器请求。
应用程序的缓存方式各不相同。
我发现对于Firefox,退出并重新启动即可。在about:config中相关的设置是network.dnsCacheEntriesnetwork.dnsCacheExpiration,可以将其设置为0以禁用缓存。
本地系统的缓存时间通常为1小时。
  • 诊断:ping和其他应用程序一样,使用本地系统DNS缓存
  • 清除MacOsX 10.8缓存:sudo killall -HUP mDNSResponder(参考)
    (其他版本可能有所不同)
  • 清除Windows缓存:ipconfig /flushdns(仅当启用DNS缓存服务HKLM\SYSTEM\CurrentControlSet\Services\Dnscache时;使用net start|findstr /i dnscompmgmt.msc检查)
  • Linux/Unix可能使用nscd(名称服务缓存守护进程)或dnsmasq,或两者都有...

本地解析DNS服务器的缓存时间可能长达数天,具体取决于与DNS记录相关的TTL。

  • 诊断:nslookup首先报告解析服务器的地址,然后是请求的地址。
  • 清除BIND缓存:rndc flushrndc flushname DOMAIN.NAME

TTL代表“生存时间”,是用于描述DNS记录在请求客户端或服务器中被视为有效的时间。较短的TTL意味着告诉请求者不要将DNS查找缓存太长时间。 TTL可以从几秒钟(例如DynDNS和类似服务)到数天或数周不等。


2
只是关闭并重新打开Firefox对我有帮助,谢谢。 - jaywink
1
@jaywink:没什么用。当然它可能会有所帮助,但如果那就是解决方法,我宁愿换一个浏览器。 - 0xC0000022L
自Firefox Quantum 69.0起,现在有一个选项可以使用DNS over HTTPS。如果启用此选项,它将覆盖您在系统中执行的任何缓存刷新、在Firefox中执行的任何缓存刷新以及在about:config中更改的任何设置。选项>常规>网络设置>启用DNS over HTTPS。 - Henry Clayton

24

我一直使用“清除最近的历史纪录/缓存”的解决方法,但我注意到在 Firefox 更新(可能是20.0.1)后停止工作。因此,我转而使用https://addons.mozilla.org/en-US/firefox/addon/dns-cache/插件来进行DNS清理。我希望这能帮助有同样问题的人。

编辑:根据Haozhun的建议更改了网址。

编辑2:不幸的是,在 FireFox 32 版本中,该插件不再兼容,无法使用。或许https://addons.mozilla.org/en-US/firefox/addon/dns-flusher/可以替代它。


2
感谢您分享最新的解决方案。您能否将提供的URL中的“pl”替换为“en-US”?我相信这样的修改会很有帮助。 - Haozhun
仅清除“缓存”就刷新了我的DNS,因此这可能再次成为最佳解决方案。当然,现在我们已经是第42个版本了。 - Jeff Davis
1
DNS Flusher 不兼容 Firefox Quantum。 - Ian Dunn
@IanDunn 这很不幸,但是这个答案是在2013/2014年写/编辑的。 - jahu
我明白这一点,但这只意味着它应该被编辑,以便现在是正确的(这是最重要的),或者删除,而不是让它在这里误导人们。我将继续提交编辑。 - Ian Dunn
显示剩余2条评论

6
我发现仅使用network.dnsCacheExpiration = 0不能完全解决问题,但是如果您还设置了network.dnsCacheEntries = 0,则DNS缓存将被永久禁用。因此,请执行以下操作:
network.dnsCacheEntries = 0
network.dnsCacheExpiration = 0

我可以知道在哪里放置或设置这个值吗?是在我的前端代码还是在浏览器中? - Lejiend
在浏览器中,特别是关于about:config,@bathulahmahir - Roman Starkov

6
安装DNS Flusher插件,这对我很有效。

1
@user1981275,实际上它提供了一个解决问题的方法,所以我认为没有理由删除它。 - Mike
1
有点荒谬,我们必须安装一个附加组件才能清除DNS缓存.. 清除缓存功能应该可以做到这一点.. :( - JamesTheAwesomeDude
@JamesTheAwesomeDude:通过设置network.dnsCacheExpiration=0来禁用FF内部DNS缓存...我不确定这是否有助于解决我的问题,但到目前为止我没有再遇到它了。 - 0xC0000022L

5
以下方法曾经有效,但现在已不再有效(使用所有方法都不起作用):
  • 重新启动浏览器
  • 清除浏览器缓存
  • 设置network.dnsCacheExpiration=0
  • ipconfig /flushdns
然而,您可以打开一个新的私人窗口,私人窗口显然不使用常规窗口相同的DNS缓存(这让人感到安心)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接