浏览器多进程架构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 返回给网络异步线程。
多进程架构解决了单进程架构的缺点
- 解决不稳定问题:打开一个页面,就是开启一个渲染进程,这个页面奔溃了,只要把它关掉即可,不会影响其他页面
- 解决不流畅:同理,打开一个页面,就是开启一个渲染进程,无论这个页面多卡(再说一次,JavaScript 是单线程语言,就是指一次只能完成一件任务,要是执行过程中阻塞住就会影响到页面),卡的是这个页面,不会影响其他页面
相关问题
1. :如果打开了 2 个页面,会有几个进程呢?是 1 个网络进程、1 个浏览器进程、1 个 GPU 进程以及 2 个渲染进程,共 5 个吗?这些进程是可以在浏览器开发者中被实际观察到的吗? 通常情况下会是五个,但是有很多其他情况: 1. 如果页面里有 iframe 的话,iframe 也会运行在单独的进程中! 2. 如果页面里有插件,同样插件也需要开启一个单独的进程! 3. 如果你装了扩展的话,扩展也会占用进程 4. 如果 2 个页面属于同一站点的话,并且从 a 页面中打开的 b 页面,那么他们会公用一个渲染进程 Chrome 的渲染线程中没有网络线程! 现代浏览器已经将网络模块剥离出来了,有的以线程形式运行在浏览器主进程中的,有的像最新版本 Chrome 已经将网络功能单独独立出来一个进程来执行了!
学而不思则罔,思而不学则殆!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享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项目???