1. 浏览器线程
1. js引擎线程(主线程)
- 主要负责执行JavaScript脚本,js是单线程异步,异步是由子线程完成,js引擎负责调度子线程。
2. GUI渲染线程
- 负责渲染浏览器界面,包括解析HTML、css、构建DOM树、渲染树、布局与绘制.
3. 事件监听线程
- 对事件进行处理
4. 计时器线程
- 负责定时, setInterval 和 setTimeout
5. 网络线程
- 负责处理http请求
当主线程空闲时,才会执行子线程
2. 浏览器渲染流程
- 在浏览器中输入url(统一资源定位符)地址
- 浏览器会进行HTTP / HTTPS请求 (DNS -> IP)
- 建立tcp 三次握手、四次挥手
- 服务器响应请求数据
- 浏览器开始解析请求数据(html、css、JavaScript、img、)(渲染页面开始)
浏览器渲染页面
- DOM Tree : 浏览器将HTML解析成树形结构的数据结构
- CSS Rule Tree : 浏览器将css解析成树形结构的数据
- Render Tree:将DOM Tree 和 cssTree 进行合并形成Render Tree</