知识储备:
I.DNS缓存存在于哪里?
a. 浏览器DNS缓存(chrom默认缓存60S)
b. 操作系统缓存(windows下etc/lmhosts, linix下dns/...cathe)
c. host文件
d. 路由器缓存
e. 网络供应商DNS缓存(移动、网通、电信...,又叫本地DNS服务器)
f. 根域名服务器DNS缓存(根域名服务器: 用来管理互联网的主目录,全世界只有13台)
II.客户端缓存
a. 强缓存与协商缓存
b.强缓存判断是否可用的条件cache-control、expires
c.协商缓存判断是否可用的条件e-tag、last-modify
III.事件队列与JS事件循环
IV.域的划分
www.baidu.com.(最后有个‘.’, 代表根服务器)
.com 一级域
baidu 二级域
www 服务器名或主机名
www.baidu.com URL
VI. DNS解析: 将主机名与域名转化为IP的过程
过程:
1. URL+enter
2. DNS解析 :
a. 浏览器依次查看浏览器、系统、host、路由器DNS缓存,如果在这中间任何一个环节中发现有此地址的缓存,直接返回IP,浏览器查看本地强缓存是否过期,若不过期,返回文件。缓存过期,则建立链接,发送请求拉取资源
b. 若第2步未发现缓存中存在地址与IP的对应关系,则浏览器向本地DNS服务器(电信、移动)发送DNS请求,本地DNS服务器发现有缓存记录,返回IP(这个返回成为非权威服务器应答)。之后浏览器根据IP与缓存的对应关系,查看本地强缓存是否过期,若不过期,返回文件。缓存过期,则建立链接,发送请求拉取资源
c. 如果第三步也没有成功解析,则本地DNS服务器会向根服务器发送请求,根服务器告知本地DNS服务器去一级域服务器下查找。
d. 紧接第4步,本地服务器向一级域对应服务器发送请求,一级域服务器告知本地DNS服务器向二级域发送请求查询
e. 本地DNS服务器再向二级域下服务器发送请求(baidu.com)
f. 域名服务器返回域名与IP的对应关系
g. 本地DNS服务器拿到解析结果返回给浏览器并缓存(这种缓存也是优化加载速度的一种)
h. 浏览器查看本地强缓存是否过期,若不过期,返回文件。缓存过期,则建立链接,发送请求拉取资源
由此可见,DNS解析是一个复杂的过程,如果亿万请求都位于同一个机器,就会出现负载量过大的问题。解决方法为DNS负载均衡技术: 在DNS服务器中为同一台主机分配多个IP地址,在应答DNS查询时,将客户端的访问引导到不同的机器上去,从而达到负载均衡的目的。应用实例: CDN
3.DNS解析完成之后,与服务端进行TCP链接
4.发送请求
5.服务器解析请求
6.浏览器接受数据,并断开链接
7.渲染标签、CSS,每一个路径都会重新发起一次请求(每一个请求都是一个HTTP请求,都要经历上述步骤)
8.进行JS中的异步事件。ajax或者事件绑定等https://blog.youkuaiyun.com/qq_41206257/article/details/84102383