前端性能-域名解析和域名发散
域名发散
概述
即同一应用下,采取多个域名请求静态资源,比如 css,使用 css.yourDomain.com,js 采用 js.yourDomain.com,将静态资源切分多个域名去请求。
优点
- 突破浏览器对同一域名的并发请求限制,以提升加载速度
- 如果你使用 cdn,或者多个服务去代理不同的静态资源,可以降低高并发带来的负荷,提升服务器稳定性
缺点
- 虽然突破同一域名的并发请求限制,但是也加多了解析的开销和时间。需权衡业务和网络环境,移动端更适合域名收敛(因为移动端网络环境变化大,3g,4g 等)
- SSL 证书成本和管理大
应用场景
适用于 Web 端对首页加载速度要求高 (web 端一般网速稳定、快)
域名收敛
域名收敛就是将静态资源放在一个域名下不进行发散,这主要是为了适应移动端的发展需求;通常 DNS 是一个开销较大的操作,而移动端由于网络带宽和实时性、资源等的限制,这些开销对移动端的用户体验是致命的。
优点
降低 dns 查找消耗
应用场景
适用于客户端的 h5 应用
http-dns
传统域名解析(LocalDNS)
DNS 解析详细过程:
用户输入网址如http://www.baidu.com 回车–>游览器解析网址,获取域名,解析域名。
① 先是向游览器中找是否有此域名的缓存,如果有则解析结束,没有则继续查找操作系统缓存中是否有这个域名对应的 dns 结果。
② 如果以上两则都未能命中,则游览器会向系统网络配置中已经配好的 LocalDNS 发送解析请求,请求中携带着要解析的域名
这个 dns 称为本地区的域名服务器(LocalDNS),通常离我们本地电脑不会太远。
③ 如果这个 LocalDNS 还是未能命中,就直接到 Root Server(根域名服务器)请求解析,根域名解析器会返回给 LocalDNS 服务器一个所查寻域的顶级域名服务器(gTLD Server)地址。gTLD 是国际顶级域名服务器,包含.com、.cn、.org 等后缀域名解析,所有提供域名注册的注册商必须在此 DNS 服务器中注册。
④ LocalDNS 拿到这个 gTLD 的地址后,再带着要解析的域名向 gTLD 发起解析请求。gTLD 服务器查找并返回此域名对应的 Name Server 域名服务器(或者叫二级域名服务器)的地址,这个 Name Server 通常就是你注册的域名服务器。
⑤ LocalDNS 又再次获得 Name Server 地址,再次请求,这时 Name Server 会查询所有存储的域名与 IP 映射的关系表单,结果连同 IP 和一个 TTL 值返回给 LocalDNS 域名服务器。LocalDNS 拿到 IP 和 TTL,先根据 TTL 值缓存此 IP,最后将 IP 和 TTL 返回给用户系统。系统根据 TTL 值缓存在本地缓存中。
http-dns
HTTPDNS 是使用 HTTP 协议向 DNS 服务器的进行请求,代替传统的 DNS 协议使用 UDP 协议向 DNS 服务器的进行请求,绕开了运营商的 Local DNS,简化了请求的复杂性,避免了使用运营商 Local DNS 造成的劫持和跨网问题。
和本地 host 文件相似,但本地 host 是不联网,http-dns 是联网服务。
HTTP DNS,通常需要先请求 HTTP DNS 服务获取真实的 IP 地址,然后再使用这个 IP 地址去请求需要的资源。
简单的使用 HTTP DNS 的示例:
|
跨域、协议等问题
通过设置 http 的host属性解决
使用场景
1、对首屏时延要求比较高的 APP 或者网页;
2、希望降低访问延迟、减少跨网访问的资讯、游戏类 APP;
3、希望降低连接失败率,提升业务成功率的通用 APP;
4、域名屡次被劫持,希望用户访问顺畅无阻的 APP;