DNS全称为Domain Name System,即域名系统,是域名
和IP地址
相互映射的一个分布式数据库。
域名系统DNS将主机名映射到IP地址,就像电话簿将人们的姓名映射到他们的电话号码中,在浏览器中输入https://www.baidu.com/时,浏览器联系的DNS解析器将返回该服务器的IP地址,DNS有成本,DNS通常需要20-120毫秒来查找给定主机名的IP地址,在DNS查找完成之前,浏览器无法从该主机名下载任何内容。
这其中很大的好处就是在域名之后可以绑定多个IP地址来进行资源均衡,而且当你通过域名提供服务时,可以随时更新已绑定的IP地址(当然没事不会更改IP地址,而且域名还有TTL时效) ,而不用动应用服务。
即,域名解析即通过主机名,最终得到该主机名对应的IP地址的过程
Tip:
可以通过访问百度域名:https://www.baidu.com/访问百度
也可以通过访问百度IP:202.108.22.5 来访问百度
浏览器对网站第一次的域名DNS解析查找流程依次为:
浏览器缓存 – 系统缓存 – 路由器缓存 – ISP DNS缓存 – 递归搜索
减少DNS的请求查询次数(前端优化点)
DNS查询也消耗响应时间,若网页内容来自各个不同的domain,则客户端首次解析这些domain需要消耗一定的时间,但由于DNS查询结果会缓存在本地系统和浏览器中一段时间,所以DNS查询一般只是对首次访问时的速度有影响。
进行DNS预获取:DNS Prefetch(前端优化点)
DNS Prefetching简介:
DNS请求需要的带宽非常小,但是延迟却有点高,这点在手机网络上特别明显,而一次典型的DNS解析一般需要20-200ms,所以DNS预解析可以让延迟明显减少一些。
在某些浏览器中这个预读取的行为将会与页面实际内容并行发生(而不是串行)。正因如此,某些高延迟的域名的解析过程才不会卡住资源的加载。
这样可以极大的加速(尤其是移动网络环境下)页面的加载。在某些图片较多的页面中,在发起图片加载请求之前预先把域名解析好将会有至少 5%的图片加载速度提升。
DNS-prefetch
(DNS预获取)是尝试在请求资源之前解析域名,这可能是后面要加载的文件,也可能是用户尝试打开的链接目标。域名解析和内容载入时串行的网络操作,所以这个方式能减少用户的等待时间,提升用户体验。
DNS-prefetch
可以帮助开发人员掩盖DNS解析延迟。HTML
的link
元素通过dns-prefetch
的rel
属性值提供此功能,然后再href
属性中指要跨域的域名。
如何设置dns-prefetch?
X-DNS-Prefetch-Control
头控制着浏览器的DNS预解析功能
X-DNS_prefetch-Control: on|off
on:启用DNS预解析。在浏览器支持DNS预解析的特性时及时不适用该标签浏览器依然会进行预解析。
off:关闭DNS预解析。这个属性在页面上的链接并不是由你控制的或是你根本不想向这些域名引导数据时非常有用。
DNS Prefetch 应该尽量的放在网页的前面,推荐放在 <meta charset="UTF-8"> 后面。具体使用方法如下:
<meta http-equiv="x-dns-prefetch-control" content="on"> <link rel="dns-prefetch" href="https://www.baidu.com"> <link rel="dns-prefetch" href="https://blog.csdn.net">
每当站点引用跨域资源的时候,都应在head
元素中放置dns-prefetch
提示,但是要记住下面的注意事项。
延长DNS缓存时间(运维)
DNS查询过程大约消耗20毫秒,在DNS查询过程中,浏览器什么都不会做,保持空白。如果DNS查询很多,网页性能会受到很大影响,因此需要用到DNS缓存。
不同浏览器的缓存机制不同: IE对DNS记录默认的缓存时间为30分钟,Firefox对DNS记录默认的缓存时间为1分钟,Chrome对DNS记录默认的缓存时间为1分钟。
缓存时间长:减少DNS的重复查找,节省时间。
缓存时间短:及时检测服务器的IP变化,保证访问的正确性。
使用CDN加速域名(运维)
原文链接:https://blog.csdn.net/weixin_39550080/article/details/126040498
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/23420