这个是面试时经常问到的一个问题,主要是经历了以下几个过程:
一、经历过程
- DNS寻址
- 建立TCP连接
- 发起HTTP请求
- 浏览器渲染
主要是以上的几个步骤了。
DNS寻址,之前在这篇文章介绍过,请参考:DNS寻址过程。
建立TCP连接要三次握手,断开连接要四次挥手。
发起HTTP请求把相关的html文档和相关资源例如css文件,图片从服务端给请求回来。
最后进行浏览器渲染,浏览器对请求回来的文件进行解析,解析成浏览器可以识别的格式,然后渲染成我们可以看到的网页。
二、浏览器是如何渲染页面的?
1、解析 HTML 文件,创建 DOM 树
自上而下,遇到任何样式(link、style)与脚本(script)都会阻塞(外部样式不阻塞后续外部脚本的加 载)。
2、解析 CSS
优先级:浏览器默认设置<用户设置<外部样式<内联样式
3、构建渲染树
将 CSS 与 DOM 合并,构建渲染树(Render Tree)
4、布局和绘制
布局和绘制,重绘(repaint)和重排(reflow)