建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块

筋斗云

发帖: 2粉丝: 0

级别 : 新手上路

Rank: 1

发消息 + 关注

发表于2017-9-30 11:00:57 38479 20
直达本楼层的链接
楼主
显示全部楼层
[云解析] 浅谈DNS缓存机制--浏览器和OS篇

本帖最后由 沧海 于 2017-12-1 10:33 编辑

有人的地方,就有江湖,有DNS的地方,就有缓存。
为了提升域名查询效率,设计了域名缓存机制,当访问过某个网站并得到其IP后,会将其域名和IP缓存下来,下一次访问的时候,就不需要再请求域名服务器获取IP,直接使用缓存中的IP,提高了响应的速度。当然缓存是有有效时间(即TTL值)的,当过了有效时间后,再次请求网站,还是需要先请求域名解析。
目前,除了传统的递归DNS服务器(如运营商的Local DNS, 114dns,Google public DNS等)外,计算机中DNS记录在本地也有两种缓存方式:浏览器缓存和操作系统(OS)缓存。在浏览器中访问的时候,会优先访问浏览器缓存,如果未命中则访问OS缓存,最后再访问递归DNS服务器,然后递归DNS服务器会递归式的查找域名记录,然后返回结果。那么浏览器DNS缓存和操作系统DNS缓存又是怎样的呢?
浏览器DNS缓存:首先,浏览器DNS缓存的时间跟DNS服务器返回的TTL值无关。浏览器在获取网站域名的实际IP地址后会对其IP进行缓存,减少网络请求的损耗。每种浏览器都有一个固定的DNS缓存时间,如Chrome的过期时间是1分钟,在这个期限内不会重新请求DNS。常用的浏览器的DNS缓存时间如下:Chrome:为了加快访问速度,Google Chrome浏览器采用了预提DNS记录,在本地建立DNS缓存的方法,加快网站的连接速度。在Chrome地址栏中输入chrome://net-internals/#dns 就可以看各域名的DNS 缓存时间。默认,Chrome对每个域名会默认缓存60s:
1.png
2.png
Firefox:Firefox也有dns缓存功能,但是默认缓存时间只有1分钟,可以通过修改该默认值加快DNS解析速度,方法如下:打开一个新的窗口,地址栏输 入 about:config,回车,进入设置界面。然后搜索 network.dnsCacheExpiration,把原来的60改成 6000(表示缓存6000秒),再搜索network.dnsCacheEntries 把默认的20改成1000(表示缓存1000条)。如果没 有上面两个项目,新建它们即可,新建条目类型为整数型。 当然也可以按照需要设置成其它的值。但是dns缓存太久了也会出问题,比如有的网站ip换了,就无法访问了。针对这样的问题,还可以安装一个 firefox 插件来开启或者 关闭dns cache功能,https://addons.mozilla.org/zh-CN/firefox/addon/5914。
以下是第三方之前测试的不同浏览器的DNS缓存时间情况      
3.png
(来源链接:https://dyn.com/blog/web-browser-dns-caching-bad-thing/)
操作系统DNS缓存:OS缓存会参考DNS服务器响应的TTL值,但是不完全等于TTL值。
     Windows
     Windows系统默认开启DNS缓存服务,叫做DNSClient,可以缓存一些常用的域名。
      4.png
ipconfig/displaydns – 这个命令可以展示现在你电脑已经缓存的域名
5.png
ipconfig/flushdns –这条记录可以帮你马上清空已经缓存的记录
6.png
Linux
Linux系统的nscd服务可以实现DNS缓存的功能。nscd会缓存三种服务passwd,group,hosts,所以它会记录三个库,分别对应源/etc/passwd, /etc/hosts 和/etc/resolv.conf每个库保存两份缓存,一份是找到记录的,一份是没有找到记录的。每一种缓存都保存有生存时间(TTL)。其作用就是增加cache ,加快如DNS的解析等的速度。配置文件为/etc/nscd.conf    默认该服务在redhat或centos下是关闭的,可以通过services nscd start开启。缓存DB文件在/var/db/nscd下。可以通过nscd -g查看统计的信息,这里列出部分:
7.png
也可以通过strings /var/db/nscd/hosts命令查看缓存文件
8.png
清除缓存
1.    nscd -i passwd
2.    nscd -i group
3.    nscd -i hosts
除了上面的方法,重启nscd服务同样可以达到清理cache的目的。
举报
分享

分享文章到朋友圈

分享文章到微博

追风猎手

发帖: 3粉丝: 0

级别 : 新手上路

Rank: 1

发消息 + 关注

发表于2017-11-13 15:53:53
直达本楼层的链接
沙发
显示全部楼层

通过这个文章 很好理解DNS缓存机制   棒棒的

点赞 评论 引用 举报

厉害的毛球

发帖: 42粉丝: 4

级别 : 版主

Rank: 7Rank: 7Rank: 7

发消息 + 关注

发表于2017-11-15 17:20:20
直达本楼层的链接
板凳
显示全部楼层

有DNS的地方,就有缓存,不缓存天天去查,不疯才怪

点赞 评论 引用 举报

挨踢攻城狮

发帖: 2粉丝: 0

级别 : 新手上路

Rank: 1

发消息 + 关注

发表于2017-11-15 20:25:02
直达本楼层的链接
地板
显示全部楼层

内容不错,感觉要写成一个系列。

点赞 评论 引用 举报

yd_8631061...

发帖: 4粉丝: 0

级别 : 注册会员

Rank: 2

发消息 + 关注

发表于2017-11-28 14:16:57
直达本楼层的链接
5#
显示全部楼层

介绍的很详细,学习学习

点赞 评论 引用 举报

知足常乐

发帖: 3粉丝: 0

级别 : 新手上路

Rank: 1

发消息 + 关注

发表于2017-12-8 23:38:38
直达本楼层的链接
6#
显示全部楼层

期待下篇

点赞 评论 引用 举报

qshujun

发帖: 5粉丝: 1

级别 : 注册会员

Rank: 2

发消息 + 关注

发表于2017-12-11 11:38:06
直达本楼层的链接
7#
显示全部楼层

高质量文章 学习了 涨姿势

点赞 评论 引用 举报

yd_miaomia...

发帖: 4粉丝: 0

级别 : 注册会员

Rank: 2

发消息 + 关注

发表于2017-12-17 20:51:12
直达本楼层的链接
8#
显示全部楼层

点赞,学习学习,

点赞 评论 引用 举报

风吹宝宝PP...

发帖: 6粉丝: 1

级别 : 注册会员

Rank: 2

发消息 + 关注

发表于2017-12-22 14:35:59
直达本楼层的链接
9#
显示全部楼层

好,大赞,楼主大神

点赞 评论 引用 举报

nirvana

发帖: 0粉丝: 1

级别 : 中级会员

Rank: 3Rank: 3

发消息 + 关注

发表于2017-12-30 13:02:51
直达本楼层的链接
10#
显示全部楼层

马克

点赞 评论 引用 举报

当年明月09...

发帖: 0粉丝: 0

级别 : 中级会员

Rank: 3Rank: 3

发消息 + 关注

发表于2017-12-30 23:51:13
直达本楼层的链接
11#
显示全部楼层

^^

点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册