输入URL到页面渲染的整个流程
2019-03-06 本文已影响62人
木子川页心
DNS查询
DNS查询分为DNS迭代查询(由客户端去做请求)和递归查询(由系统配置的DNS服务器去做请求,得到结果后将数据返回给客户端)
比如访问www.google.com时会进行如下操作(迭代查询)
1.操作系统会首先在本地缓存中查询IP
2.没有的话会去系统配置的DNS服务器中查询
3.如果还没有,会去DNS根服务器查询,这一步查询会找出负责com这一级域名的服务器
4.然后去该服务器查询google这个二级域名
5.接下来三级域名的查询是我们配置的,可以给www这个域名配置一个IP
TCP握手
应用层会下发数据给传输层,这里TCP协议会指明两端的端口号,然后下发给网络层。网络层的IP协议会确定IP地址,并且指示了数据传输中如何跳转路由器,然后包会再被封装到数据链路层的数据帧结构中,最后就是物理层传输了。
TLS握手
数据在进入服务端之前,可能还会先经过负载均衡的服务器,它的作用就是将请求合理的分发到多台服务器上,这时假设服务器端会响应一个HTML文件。
1.首先浏览器判断状态码是什么
2.浏览器开始解析文件,如果是gzip格式的话会先解压一下,然后通过文件的编码格式知道如何解压
渲染流程
1.先会根据HTML构建DOM树,有CSS的话会去构建CSSOM.如果遇到script标签的话,会判断是否有async或者defer,前者会并行进行下载并执行JS,后者会先下载文件,然后等待HTML解析完成后顺序执行。
如果以上都没有,就会阻塞住渲染流程知道JS执行完毕。遇到文件下载的话就会去下载文件
2.CSSOM树和DOM树构建完成后会开始生成Render树,这一步就是确定页面元素 的布局、样式等诸多方面的东西,