作为web前端工程师,每天都会使用浏览器,所以就想总结下浏览器的知识,下面开始正文,本文的东西都是拿Chrome浏览器来说的。
浏览器是多进程。
我们先打开浏览器然后打开一个页面,这个时候我们并不清楚浏览器在后台为我们做了什么,接下来打开资源管理器(快捷键 Shift + Esc直接打开或者 浏览器右上角三个点-> 更多工具 -> 任务管理器)我们能看到各个进程。
上面是我打开的任务管理的截图,从图中我们看最右面一列就可以发现浏览器的多进程的。
那么具体都有什么进程呢?
1、浏览器(Browser)主进程,浏览器也只有这一个主进程负责资源下载、界面展示(比如浏览器的主题)等的功能。
2、扩展程序(也就是第三方插件)进程。
3、GPU进程,就是负责3D图形绘制的东西。
4、渲染(Renderer)进程,就是负责JavaScript执行,页面渲染等功能。
对于第一个浏览器主进程和第二个扩展程序进程没有什么要多解释的,大家看一下就会明白。
GPU进程的东西就涉及到图像学的一些东西大家可以看这篇文章,因为最近在用threejs 来做一个项目,所以里面用到了 GLSL ES(着色器语言),所以这点东西稍微了解点。那么在什么条件下才会触发GUI渲染。
1、3D透视转换CSS属性。
2、拥有 3D (WebGL) 上下文或加速的2D上下文的<canvas>元素。
....
渲染进程里面涉及到:
1、GUI渲染线程。
2、JavaScript引擎线程。
3、事件循环线程。
4、定时器线程。
5、异步请求线程。
通过上面的东西我们就可以把浏览器和JavaScript的东西关联到一起了。最后再用一张图做个总结。