DNS解析场景
有很多大型的网站,都会用N
个CDN
域名来做图片、静态文件等资源访问。比如新浪,我们经常会看到有下列域。
img1.sina.com.cn
、 img2.sina.com.cn
、img3.sina.com.cn
、img4.sina.com.cn
等等,包括天猫、京东等,都会这样去使用,这是为什么呢,还是出在DNS
解析和浏览器加载原理上,解析单个域名同样的地点加上高并发(极端)难免有点堵塞,再加上部分浏览器对相同域名去DNS
解析的时候会异步,导致速度下降,虽然这些速度上咱们可能看不上,但蚊子再小也是肉,优化就讲究极致。
DNS-Prefetch用处介绍
上面说了那么多,下面来介绍下 dns-prefetch ,在介绍之前,我们先看看我们的大佬们的使用情况,当然一般电商图片比较多,使用的较多。
dns-prefetch天猫的使用
dns-prefetch京东的使用
dns-prefetch SOJSON 的使用 ^_^
DNS Prefetch
是一种DNS
预解析技术,当你浏览网页时,浏览器会在加载网页时对网页中的域名进行解析缓存,这样在你单击当前网页中的连接时就无需进行DNS
的解析,减少用户等待时间,提高用户体验。
我们DNS
解析的时候,需要用域名去DNS
解析匹配 IP ,这个是需要时间的,如果加了 dns-perfetch 呢,浏览器会记住(缓存)这个解析,直接就请求过去了,不需要再走DNS
解析。就是这么简单。
当我们访问一个网站如 www.amazon.com 时,需要将这个域名先转化为对应的 IP 地址,这是一个非常耗时的过程。DNS prefetch 分析这个页面需要的资源所在的域名,浏览器空闲时提前将这些域名转化为 IP 地址,真正请求资源时就避免了上述这个过程的时间。
DNS Prefetch使用方式
使用方式上面图片已经有了,就是添加如下代码。
<link rel="dns-prefetch" href="//cdn.www.sojson.com">
“//” 开始是为了适配 https 和 http 。就是当前请求链接是https
,那么这个//前面自动补充https
,反则补充http
。
应用场景1:
我们的资源存在在不同的 CDN 中,那提前声明好这些资源的域名,就可以节省请求发生时产生的域名解析的时间。
应用场景2:
如果我们知道用户接下来的操作一定会发起一起资源的请求,那就可以将这个资源进行 DNS-Prefetch,加强用户体验。