浏览器多进程架构pending

浏览器架构是单进程的,

单进程浏览器是指浏览器的所有功能模块都是运行在同一个进程里,这些模块包含了网络、JS引擎、渲染引擎和页面等

Chrome浏览器多进程架构:解决单进程的缺点

1.浏览器进程(主进程)(Browser Process): 界面显示、用户交互、子进程管理,同时提供存储
2.网络进程(Network Process):负责页面的网络资源加载,之前是作为一个模块运行在浏览器进程里面的
3.渲染进程(Render Process):将 HTML、CSS 和 JavaScript 转换为用户可以与之交互的网页(默认情况下,Chrome 会为每个 Tab 标签创建一个渲染进程。出于安全考虑,渲染进程都是运行在沙箱模式下)

  • JS引擎线程
  • 事件触发线程
  • 网络异步线程
  • 定时器线程
    4.GPU进程(GPU Process):Chrome 的 UI 界面都选择采用 GPU 来绘制

网络进程和渲染进程下的网络异步线程有什么区别

网络异步线程工作流程

定义:
渲染进程是负责页面渲染、JavaScript 执行和用户交互的进程。
网络异步线程是渲染进程中的一个线程,用于处理与网络请求相关的异步操作,但这些请求通常是通过网络进程间接完成的。
主要职责:
发起网络请求:

处理页面中的 JavaScript 发起的异步请求(如 fetch、XMLHttpRequest、动态加载资源)。
将请求发送到网络进程,并等待响应。
处理响应数据:

接收网络进程返回的数据,将其解析或传递给主线程(如调用 JavaScript 的回调函数)。
比如,处理 AJAX 请求的结果或加载图片等资源。
异步非阻塞:

网络异步线程确保网络相关操作不会阻塞渲染主线程(UI 线程)。
与网络进程的关系:
渲染进程的网络异步线程本身并不直接处理网络通信,而是通过 IPC(进程间通信)将请求发送到网络进程。
网络进程完成请求后,响应数据通过 IPC 返回给网络异步线程。

多进程架构解决了单进程架构的缺点

  1. 解决不稳定问题:打开一个页面,就是开启一个渲染进程,这个页面奔溃了,只要把它关掉即可,不会影响其他页面
  2. 解决不流畅:同理,打开一个页面,就是开启一个渲染进程,无论这个页面多卡(再说一次,JavaScript 是单线程语言,就是指一次只能完成一件任务,要是执行过程中阻塞住就会影响到页面),卡的是这个页面,不会影响其他页面

相关问题

1. :如果打开了 2 个页面,会有几个进程呢?是 1 个网络进程、1 个浏览器进程、1 个 GPU 进程以及 2 个渲染进程,共 5 个吗?这些进程是可以在浏览器开发者中被实际观察到的吗?
通常情况下会是五个,但是有很多其他情况:
1. 如果页面里有 iframe 的话,iframe 也会运行在单独的进程中!
2. 如果页面里有插件,同样插件也需要开启一个单独的进程!
3. 如果你装了扩展的话,扩展也会占用进程
4. 如果 2 个页面属于同一站点的话,并且从 a 页面中打开的 b 页面,那么他们会公用一个渲染进程

Chrome 的渲染线程中没有网络线程!
现代浏览器已经将网络模块剥离出来了,有的以线程形式运行在浏览器主进程中的,有的像最新版本 Chrome 已经将网络功能单独独立出来一个进程来执行了!
posted @   Felix_Openmind  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2024-01-09 Vue3中实现world、excel、txt、pdf文件预览,(vue-office的使用)
2022-01-09 如何运行一个“拿来”的Vue项目???
*{cursor: url(https://files-cdn.cnblogs.com/files/morango/fish-cursor.ico),auto;}
点击右上角即可分享
微信分享提示