learn:how-does-browser-work
差異處
這裏顯示兩個版本的差異處。
下次修改 | 前次修改 | ||
learn:how-does-browser-work [2022/06/25 00:03] – 建立 admin_wi1d5ky | learn:how-does-browser-work [2024/12/22 21:17] (目前版本) – 外部編輯 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
# 瀏覽器原理筆記 | # 瀏覽器原理筆記 | ||
- | Browser | + | Browser |
- | * Browser | + | * **Browser |
- | * GPU 进程:最多一个,用于 3D 绘制。我们常说的启动硬件加速渲染使用的进程,就是这个进程 | + | * **GPU process**:最多一个,用于 3D 绘制。我们常说的启动硬件加速渲染使用的 |
- | * 渲染(Renderer)进程:多个,默认每个Tab页为一个渲染进程。其中包含:GUI 渲染线程、js 引擎线程、事件触发线程、定时触发器线程、异步 http 请求线程等 | + | * **Renderer |
- | * 其他进程:如插件进程等 | + | * **其他 |
- | 其中,渲染(Renderer)进程有下面這些: | + | 其中,Renderer |
- | ### 1. GUI 渲染线程 | + | ### 1. GUI renderer thread |
- 负责渲染浏览器界面,解析HTML、CSS、构建 DOM 树和 RenderObject 树,布局和绘制等 | - 负责渲染浏览器界面,解析HTML、CSS、构建 DOM 树和 RenderObject 树,布局和绘制等 | ||
行 16: | 行 16: | ||
- GUI渲染线程与JS引擎线程是互斥的,当JS引擎执行时 GUI 线程会被挂起(相当于被冻结了),GUI更新会被保存在一个队列中等到JS引擎空闲时立即被执行。 | - GUI渲染线程与JS引擎线程是互斥的,当JS引擎执行时 GUI 线程会被挂起(相当于被冻结了),GUI更新会被保存在一个队列中等到JS引擎空闲时立即被执行。 | ||
- | ### 2. JS 引擎线程 | + | ### 2. JS engine thread |
- 如V8引擎。JS内核,负责处理 Javascript 脚本程序 | - 如V8引擎。JS内核,负责处理 Javascript 脚本程序 | ||
行 24: | 行 24: | ||
- GUI渲染线程与JS引擎线程是互斥的,所以如果 JS 执行的时间过长,会导致页面渲染加载阻塞。 | - GUI渲染线程与JS引擎线程是互斥的,所以如果 JS 执行的时间过长,会导致页面渲染加载阻塞。 | ||
- | ### 事件触发线程 | + | ### 3. 事件觸發 thread |
- 可以理解为 JS 引擎事务处理不过来,分出来一部分(事件触发部分),需要浏览器另开一个线程来协助。事件触发线程归属于浏览器而不是JS引擎,用来控制事件循环 | - 可以理解为 JS 引擎事务处理不过来,分出来一部分(事件触发部分),需要浏览器另开一个线程来协助。事件触发线程归属于浏览器而不是JS引擎,用来控制事件循环 | ||
行 31: | 行 31: | ||
- | ### 定时触发器线程 | + | ### 定時觸發器 thread |
- setInterval与setTimeout所在线程 | - setInterval与setTimeout所在线程 | ||
行 39: | 行 39: | ||
- | ### 异步http请求线程 | + | ### 异步 http 请求 |
- 在XMLHttpRequest在连接后是通过浏览器新开一个线程请求 | - 在XMLHttpRequest在连接后是通过浏览器新开一个线程请求 | ||
行 49: | 行 49: | ||
- < | - < | ||
+ | - < |
learn/how-does-browser-work.1656086633.txt.gz · 上一次變更: 2024/12/22 21:17 (外部編輯)