输入URl开始:
参考MDN地址
=> 浏览器向域名服务器请求进行DNS查找(以前未访问过,访问过的话先向缓存进行查找);
**=>**服务器或者缓存返回一个IP地址(浏览器会缓存一段时间以减少首屏时间);
**=>**通过IP定位到服务器后,浏览器通过TCP的三次握手与服务器建立连接;
**=>**浏览器代替用户发送一个http的 GET请求,实际是向服务器请求一个包含html的包;
**=>**服务器返回相应的响应头和html(TTFB 是用户通过点击链接进行请求与收到第一个HTML包之间的时间。第一块内容通常是14kb的数据)
=> 然后进行‘TCP慢开始’,其实就是一种均衡网络连接速度的算法(初始为值14k,每次加倍到两倍直到达到设定阈值或与阻塞,是一个自适应的过程;‘拥塞控制算法’就是服务器利用发送包和客户端返回的确认帧流来控制发送速率的)
=> 浏览器渲染的五个步骤:
**1.**构建DOM树:CSS不会阻塞html解析,会阻塞渲染,会阻塞js加载执行;
js 会阻塞dom解析和渲染,defer是加载完script资源要等解析结束后才执行,async并行下载完就并行执行了;
**2.**创建CSSOM树:很快,一般小于一次DNS查找的时间;
**3.**dom树和CSSOM树结合在渲染引擎GPU上的层上生成渲染树,让出主线程,速度且更快;
**4.**根据在渲染树布局(大小位置变化导致回流);
**5.**最后一步是将各个节点绘制到屏幕上(是在GPU上的层上完成而不是在CPU上的主线程);