预解析的意义
DNS解析时间可能导致大量用户感知延迟,DNS解析所需的时间差异非常大,延迟范围可以从1ms(本地缓存结果)到普遍的几秒钟时间。所以利用DNS预解析是有意义的。
DNS解析查找流程
浏览器缓存-系统缓存-路由器缓存-ISP DNS缓存-递归搜索
DNS预解析定义
DNS Prefetch,即DNS预解析就是根据浏览器定义的规则,提前解析之后可能会用到的域名,使解析结果缓存到系统缓存中,缩短DNS解析时间,来提高网站的访问速度。
开启自动解析
浏览器使用超链接的href
属性来查找要预解析的主机名。当遇到a
标签,浏览器会自动将href
中的域名解析为IP地址,这个解析过程是与用户浏览网页并行处理的。但是为了确保安全性,在HTTPS
页面中不会自动解析。用以下语句后,开启HTTPS
页面开启自动解析功能。
<meta http-equiv="x-dns-prefetch-control" content="on">
开启手动解析
<link rel="dns-prefetch" href="//img.alicdn.com">
使用场景
页面中的静态资源在不同的domain下(大量引用很多其他域名资源的网站),如CSS、JS、图片等文件
浏览器内置的功能
浏览器底层缓存进行了建模,当Chrome浏览器启动的时候,就会自动的快速解析浏览器最近一次启动时记录的前10个域名。所以经常访问的网址就没有DNS解析的延迟,打开速度更快