浏览器渲染进程,html标签之表格标签

浏览器是多进程的,每打开一个tab页,就相当于创建了一个独立的浏览器进程。

浏览器包含的进程:

1.Browser进程:浏览器的主进程(负责协调i,主控)

  • 负责浏览器的页面显示,与用户交互,如前进,后退等

  • 负责各个页面的管理,创建和销毁其他进程

  • 网络资源的管理,下载

  • 将Rendered进程得到的内存的Bitmap,绘制到用户界面上

2.第三方插件进程:每种类型的插件对应一个进程,仅当使用该插件时才创建

3.GPU进程:最多一个,用户3D绘制等

4.浏览器渲染进程(浏览器内核或者Render进程,内部时多线程的),默认每个Tab页面一个进程,互部影响,主要作用为:

  • 页面渲染,运行脚本,事件处理等

在浏览器中打开一个网页就相当于新起了一个进程(进程内部有自己的多线程)

浏览器渲染进程(前端重点)

1)浏览器渲染进程浏览器内核,Render进程(内部是多线程的),默认的每个Tab页面一个进程,互不影响。

2)浏览器是多进程的,每打开一个Tab页就相当于创建了一个渲染进程,每个渲染进程又是多线程的。

其中,以下都是在渲染进程中进行的

  • 页面的渲染

  • 脚本执行

  • 任务队列轮询

一、渲染进程中主要的常驻线程:
1.GUI渲染线程
  • 负责渲染浏览器界面,解析HTML、CSS,构建DOM树和RenderObject树,然后布局和绘制页面。

  • 当页面需要重绘(Repaint)或由于某种操作引发回流(reflow)时,该线程就会被执行。

2.JS引擎线程
  • 也称为JS内核,负责处理JavaScript脚本程序(例如V8引擎)

  • JS引擎线程负责解析JavaScript脚本,运行代码。

  • JS引擎一直等待着队列中的任务的到来,然后加以处理,浏览器无论什么时候只有一个js线程在运行js程序,JS是单线程的(由于每个Tab页面都是一个独立的进程,且每个页面浏览器渲染进程(Render)都会有一个JS引擎线程,因此每个Tab页面之间的JS引擎线程是互不影响的。

GUI线程和JS引擎线程是互斥的,当JS引擎线程执行时GUI线程会被挂起(相当于被冻结了),GUI更新会被保存在一个队列中等到JS引擎空闲时才立即执行,如果JS执行时间过长,那么就很容易引起页面渲染被堵塞。

3.事件触发线程
  • 归属于浏览器而不是JS引擎,用来控制事件循环(可以理解为JS引擎自己忙不过来,需要浏览器另开线程协助)

  • 当JS引擎执行代码块如setTimeout时(也可以来自浏览器内科的其他线程,如鼠标点击,Ajax异步请求等),会将对应的任务添加到事件线程中。

  • 当对应的事件符合触发条件被触发时,该线程会把事件添加到待处理队列的队尾,等待JS引擎的处理。

  • 注意,由于JS的单线程关系,所以这些待处理的事件都得排队等待JS引擎处理

4.定时触发器线程
  • 就是传说中setTimeout和setInterval所在的线程

  • 浏览器定时计数器并不是由javascript引擎计数的(因为javascript引擎室单线程的,如果处于阻塞线程状态会影响计时的准确)

5.异步http请求线程
  • 在XMLHttpRequst在连接后通过浏览器新建一个线程请求

  • 将检索到状态的变更时,如果设置有回调函数,异步线程就尝试状态变更事件,将这个回调再放入事件队列中,再由javascript引擎执行

6.总结渲染进程

在这里插入图片描述

二、Browser主线程和浏览器内核(渲染进程)的通信过程

打开一个浏览器,可以看到:任务管理器出现可2个进程(一个主进程,一个是打开Tab页的渲染进程);

  • Browser主进程受到用户的请求,手下需要获取页面内容(如通过网络下载资源),随后将该任务通过RendererHost接口传递给Render渲染进程

  • Render渲染进程的Renderer接口受到信息,简单解析后,交给渲染线程GUI,然后开始渲染

  • GUI线程接收到请求,加载网页并解析网页,这其中可能需要Browser主线程获取资源和需要GPU进程来帮助渲染

  • 当然可能会有JS线程操作DOM(这可能会造成回流和重绘)

  • 最后Render渲染进程将结果传递给Browser主线程

  • Browser主线程接收到结果并将结果绘制出来

  • 在这里插入图片描述

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

更多面试题

**《350页前端校招面试题精编解析大全》**内容大纲主要包括 HTML,CSS,前端基础,前端核心,前端进阶,移动端开发,计算机基础,算法与数据结构,项目,职业发展等等

资料获取方式:点击蓝色传送门免费获取

**内容大纲主要包括 HTML,CSS,前端基础,前端核心,前端进阶,移动端开发,计算机基础,算法与数据结构,项目,职业发展等等

资料获取方式:点击蓝色传送门免费获取

[外链图片转存中…(img-nT2t4M9o-1712375216487)]

  • 10
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值