从浏览器结构和原理说优化
2020-01-11 本文已影响0人
9吧和9说9话
浏览器组成

具体参考:https://www.html5rocks.com/zh/tutorials/internals/howbrowserswork/#The_browsers_we_will_talk_about
从进程、线程角度来看

Browser主进程
-
负责浏览器界面显示,与用户交互。如前进,后退等
-
负责各个页面的管理,创建和销毁其他进程
-
将Renderer进程得到的内存中的Bitmap,绘制到用户界面上
-
网络资源的管理,下载等
Renderer进程
- 一般而言,浏览器每新建一个tab,就是一个独立的renderer进程。
- 内部是多线程实现的
- 负责 DOM,CSS,解析构建,JS 解析执行,事件处理等
- 主要包含:GUI 渲染线程、js引擎线程、定时器线程、异步http线程、事件触发线程等
- GUI线程和JS引擎线程互斥:当解析执行JS的时候,GUI渲染线程将被挂起阻塞
- CSS的加载和解析不会阻塞DOM树的构建, 但是render树的构建依赖css tree,所以会阻塞最终的页面渲染
关于css,js加载和渲染显示过程 实例代码