对浏览器工作原理的理解 | 青训营笔记

43 阅读2分钟

什么是进程?

程序运行要有自己专属的空间,也就是程序实例。比如我打登录了多个企鹅,也就是多个进程。 每个应用至少有一个进程,进程间相互独立。

什么是线程?

线程(Thread)是操作系统中的另一个基本概念,指计算机分配处理器时间的最小单位。与进程不同,线程是进程内部可独立调度、执行的较小单位,在同一进程内共享进程资源和地址空间。一个进程中至少有一个线程。

浏览器多进程

浏览器是多进程多线程的应用,主要进程如下: image.png

浏览器内核

image.png

Chrome浏览器早期使用Webkit内核,2013年后使用了Blink内核。

浏览器地址栏输入url到页面展示的过程

1、输入url按下回车后,判断是url还是查询条件,如果是url组装成一个完整的url,如果是关键字查询,则将输入内容发送给搜索引擎。

2、浏览器通过进程间通信(IPC),将url发送给网络进程

3、网络进程去缓存中判断是否有需要请求的资源,如果有就直接使用缓存

4、如果没有缓存,网络进程向服务器发起网路请求:

解析DNS,获取服务器IP地址

建立TCP连接

构建请求头信息

发送请求头信息

等待服务器响应后接收响应头和响应信息,解析响应内容

5、判断响应类型,如果是下载类型,进行下载,如果是html类型通知浏览器准备解析

6、判断之前打开的页面是否有相同的站点,如果有共用一个渲染进程、如果没有,等待数据传输完成后进行渲染。

渲染过程

7、解析HTML生成DOM树;

8、解析CSS,转换成cssom,并计算样式生成渲染树;

9、创建布局树,生成布局信息;

10、对布局树进行分层,生成分层树;

11、执行绘制指令进行绘制,提交给合成线程;

12、合成线程生成图块,栅格线程进行光栅化

13、展示在屏幕上