昨天我偶然发现了一个 Firefox 扩展,叫做高速 DNS据称,它可以通过预先执行 DNS 查找来加快浏览速度。根据作者的说法,它“对网页上的所有链接进行 DNS 预解析”,评论似乎表明这种方法效果很好。
这让我开始思考,构建一个由 cronjob 组成的简单 DNS 优化器是否可行(或者是一个好主意),它可以:
- 提取顶部X浏览历史记录中访问次数最多的条目(在我的例子中,来自 Firefox 的地点.sqlite, 使用sqlite 的命令行实用程序)
- 对每个节点执行 ping 操作,获取其 IP 地址,然后
- 使用此信息来更新
/etc/hosts
文件。
我认为这会加快网页浏览速度,并在互联网连接良好但 DNS 服务器暂时不工作时提供额外的稳健性(例如,当 IM 工作但浏览器不工作时 —— 例如,在我大学的实验室计算机上偶尔会发生这种情况)。
这是个好主意吗?会起作用吗?X?(或者换句话说,hosts 文件的大小在什么情况下会变得太大而无法正常工作?)更重要的是:以前做过这样的事情吗?如果做过,我在哪里可以找到它?
答案1
简短回答 - 我不会打扰,因为它真的不值得。根据您的 DNS 服务器 - 查找执行速度相对较快,特别是如果您使用 ISP 专用的 DNS 服务器(延迟方面)。因此,这样做的努力不值得获得最小的收益 - 只有当您实际上遇到分配或第三方 DNS 服务的减速时才值得。
参见此内容(如果在 Windows 上):
ipconfig /displaydns
这应该会公开 DNS 解析的缓存条目,每个条目都有自己的生存时间。
编辑主办方但是,文件将添加静态解析。就我个人而言,我只会在那里添加几个映射(我确定),仅此而已。如果手动执行 - 您始终有获得过时条目的风险。但是,您建议不断解析主机。(nslookup或者挖可能比 ping 更好)。对我来说,这似乎是多余的……也就是说,每隔 X 分钟进行一次脚本轮询。最终似乎只是一项小成就。您还必须决定是否要询问国家标准直接或通过 DNS 链(非权威)负责该域的服务器。
更简单的解决方案可能就是获得更快的 DNS 服务。我不记得那个网站的名字了,但有一个网站对您所在地区的 DNS 服务器进行了延迟评估。据我记得,它相当准确。可能有人会告诉你那里。
不过,如果您在实验室遇到连接问题 - 那就另当别论了。那么,您可以简单地切换到备用 DNS 服务器吗?(如果您有权访问 /etc/hosts,我认为您可以 - 除非流量以某种方式针对 DNS 请求进行过滤)。
编辑:我想我明白了 -NameBench。
答案2
不,这是毫无意义的重复。
hosts
尽管 DNS 在 20 世纪 80 年代初期取代了 DNS,但人们仍然痴迷于 DNS 。这些人甚至没有运行功能匮乏的操作系统,如 DOS 系列或 DOS-Windows。如今,即使是hosts
痴迷于 DNS 的 Windows 用户也在运行 Windows NT,它自带缓存 DNS 客户端,这是操作系统的标准组成部分。启用缓存 DNS 客户端(默认情况下)后,应用程序的所有 DNS 查找都会在本地缓存。
除了 Windows NT(工作站版本)之外的操作系统都带有缓存DNS代理服务器(djbdns
例如,BIND、MaraDNS 以及适用于 Unices 和 Linux 的类似程序),它们不仅可以在本地缓存信息,而且完全能够执行DNS 查询解析本地也是如此。将 DNS 代理服务器作为解析代理服务器运行,将 DNS 客户端库指向它,无需担心其他人的代理服务器的缺陷根本。
无论哪种情况,如果你想要保留某些 DNS 信息缓存,以便在 WWW 浏览器尝试 DNS 查找时立即检索,只需以正常方式事先查找。(使用使用系统提供的 DNS 客户端库例程的程序。像严重缺陷 nslookup
有自己独立的 DNS 客户端库,无法完成这项工作。)请注意,一些组织故意在其 DNS 数据上使用非常短的 TTL 值。他们想每 30 秒(或其他时间)重新查找一次内容。
答案3
视情况而定。hosts 文件是实际上 快点比 DNS 更方便。但是,为什么不通过完全消除名称而只使用 IP 地址来节省更多时间呢?最终,节省时间所需的努力超过了节省的时间。使用 DNS 是因为它动态且简单。
答案4
我同意 Keltari ip 会快速而简单,但只适用于内部系统,显然不适用于网络......
Win7 有一个已知的 DNS 问题,所以是的...即使到今天他们仍然无法正常工作....所以如果您遇到问题,HOSTS 文件仍然是一个好主意。