有dns的地方,就有缓存。浏览器、操作系统、Local DNS、根域名服务器,它们都会对DNS结果做一定程度的缓存。本文总结一些常见的浏览器和操作系统的DNS缓存时间
浏览器先查询自己的缓存,查不到,则调用域名解析函数库对域名进行解析,以得到此域名对应的IP地址
DNS查询顺序:浏览器缓存→系统缓存→路由器缓存→ISP DNS 缓存→递归搜索
1、chrome:
为了加快访问速度,Google Chrome浏览器采用了预提DNS记录,在本地建立DNS缓存的方法,加快网站的连接速度。chrome://net-internals/#dns 这里可以看各域名的DNS 缓存时间。chrome对每个域名会默认缓存60s。
在url地址栏输入chrome://chrome-urls/可以看到chrome所有的配置界面;
选择chrome://dns或者chrome://net-internals/#dns可以查看chrome浏览器的dns缓存信息
点击“Clear host cache”+然后选择"clear cache"和 " flush socket",可以清空chrome的dns缓存
2、firefox:
配置含义:
network.dnsCacheEntries:缓存的数量
network.dnsCacheExpiration:dns缓存的时间
network.dnsCacheExpirationGracePeriod:dns缓存的时间,设置为0表示不缓存
3、浏览器对DNS解析结果的处理
如果一个域名的DNS解析结果会有多个的话,浏览器是如何处理的呢?Chrome浏览器会优先向第一个IP发起HTTP请求,如果不通,再向后面的IP发起HTTP请求
4、验证一把:如图,有DNS Lookup、Initial connection(TCP连接)、SSL连接
再次请求,上面的三个过程没有了,因为浏览器有DNS 缓存;TCP长连接还没有断开;SSL连接也还在
如图所示点击“Flush sockets”
三个请求重新发起:DNS查询、TCP三次握手、SSL连接