从输入url到页面展示发生了什么?其中再页面渲染以及网络请求响应的性能优化方面,我们分别可以做哪些优化工作?
url到页面展现过程
- 首先,客户端浏览器输入URL,由于是域名,应用层DNS开始解析域名;
- 接着,应用层客户端发送一个HTTP请求,把拿到的应用层HTTP请求报文数据分割编号,为了方便安全的传输,传输层会通过TCP三次握手建立TCP/IP连接;
- 建立连接后网络传输层IP协议会查询服务器MAC地址也就是物理地址进行数据包的传输,找到对方的MAC地址后,将数据发送到数据链路层传输,到此客户端发送请求阶段结束;
- 接收端的服务器在数据链路层接收到数据包,再通过相反的方式将数据一层一层的还原回应用层;
- 服务器接收到客户端发送的HTTP请求后,会查找客户端请求的资源,并返回响应报文;请求成功后,服务器会返回相应的页面,浏览器接收到响应成功的报文后便开始下载网页,至此,网络通信结束;
- 浏览器拿到网页文件后,首先根据顶部定义的DTD类型进行对应解析方式,网页解析会交给内部GUI渲染线程处理;
- 接着构建DOM树和CSSOM树,过程中,如果遇到节点是JS,就会调用JS引擎对JS代码进行解析执行,此时由于JS引擎和GUI渲染线程互斥,GUI渲染线程会被挂起,渲染过程停止,如果JS代码的运行中对DOM树进行了修改,那么DOM构建要从新开始,然后DOM树和CSSOM树构建为渲染树;
- 然后进入布局阶段,计算渲染树节点在设备视口内的确切位置和大小;
- 再接着将渲染树中每个节点转换成屏幕上的实际像素,也就是绘制阶段;
10.最后合成阶段浏览器会将各层信息发送给GPU,GPU将各层合成,显示在屏幕上
可优化的工作:
- DNS的优化
- 资源的合并与压缩;减小http请求次数,减小数据传送的体积
- 减少重回与回流
- 按需导入对应组件