「web浏览器」从一张进程截图说起,总结了一波Chrome架构知识点

简介: 本文从一张进程截图说起,总结了一波Chrome架构知识点。

出发前

最近撸学习浏览器原理,以前因为实际使用频率低、内容较难、鸵鸟心理等原因,有点刻意避开这块知识。

最近,心态被调整了,感觉还挺有信心撸平这块知识的。(希望接下来不会被打脸)

一张Chrome任务管理器的截图

我打开Chrome的一个空白的页面,然后从设置>更多工具中找到任务管理器并打开,下面就是我的浏览器的任务管理器截图:

看到这个截图的时候,我有点惊讶。我就开了一个页面,怎么这么多进程?这么多进程会不会导致内存消耗过高?

于是我开启了我的学习之旅。

多进程架构

目前Chrome的多进程架构如下:


进程介绍

进程名称

数量/个

进程介绍

浏览器主进程

1

负责子进程管理、操作界面的显示、用户的交互。

网络进程

1

负责网络资源加载。

GPU 进程

1

负责3D效果、动画、图片等渲染。

渲染进程

N

负责将 HTML、CSS 和 JavaScript 转换成用户可以交互的操作界面。

默认情况下,每个Tab都会被创建一个渲染进程。且渲染进程运行在沙箱模式下。

插件进程

N

负责插件的运行和隔离。

隔离插件主要是防止出现单个插件崩溃导致页面或者浏览器崩溃的情况。

缓存进程(Storage Service

1

负责提供浏览器存储等功能。

它是从浏览器主进程中分离出来的服务。

音频进程(Audio Service)

1

负责处理音频、频。

解答截图下面的问题

了解了Chrome的多进程架构,也就大致明白了,前面提到的问题。

为什么即便打开一个空白页面,会有多个进程?

Chrome采用多进程架构。

首先会有浏览器主进程、网络进程、GPU 进程、缓存进程、多插件进程、缓存进程

默认情况下每个Tab还会被创建一个渲染进程。

如果Tab中有音频、视频,还会有一个音频进程。

同时打开这么多进程会不会导致内存消耗过高?

前面提到的这些进程,其实都会包含公共的基础内容,比如JavaScript的运行环境。同时打开多个进程,是会消耗更多的内存资源的。

多进程架构是终点吗?

那肯定不是,因为它仍然存在高消耗、高复杂度的问题。

Chrome团队早在 2016 年,就已经使用“面向服务的架构”( SOA)的思想设计了新的 Chrome架构。

该架构的设计是,每个模块都会是一个独立的服务,每个服务都在独立的进程中运行,访问服务时必须使用定义好的接口,需要使用 IPC 来通信。

该架构的特点是,高内聚、低耦合、更易扩展、更易维护。

笔记时刻 📒

学习过程中,除了上面的总结,几个学习到的知识点,记下摸索笔记📒。

1、内嵌iframe

如果页面内嵌了 iframe,iframe页面会在一个单独的进程中。

2、往返缓存策略

我在任务管理器里面发现了一个叫做往返缓存版页面的名称。于是顺手查了一下这个知识点。

主要作用是,当用户点击后退或前进按钮时,可以瞬时加载页面。(我理解是属于缓存性质的优化方案)。

详细内容可以看这篇文章浏览器往返缓存--back-forward cache(bfcache)

过往探索

最早浏览器是单进程的,如果进程中某个线程出错,整个进程都会崩溃,进而导致浏览器崩溃。(有点塔罗牌的既视感)

Chrome引入多进程架构,帮助解决了单进程时代的一些问题。早期的多进程,只有浏览器主进程、渲染进程、插件进程三个。浏览器主进程承担了很多工作。(这块描述如果有误欢迎指出)

随着Chrome创新和进化,进程从功能上被细分成了多项,也就发展成了前面图片所示的多进程架构。

旅行总结

Chrome团队对于技术的不断的创新和进化,给了我启发:

  • 事情不会一下子变完美,循序渐进,逐步完善。
  • 对于像我这样的逐梦者,要勇于拥抱变化,善于追寻技术的发展脚步。
  • 理论的知识确实要辅助更多的理解力,才能吃透它。
目录
相关文章
|
1月前
|
Web App开发 数据采集 存储
WebDriver与Chrome DevTools Protocol:如何在浏览器自动化中提升效率
本文探讨了如何利用Chrome DevTools Protocol (CDP) 与 Selenium WebDriver 提升浏览器自动化效率,结合代理IP技术高效采集微博数据。通过CDP,开发者可直接操作浏览器底层功能,如网络拦截、性能分析等,增强控制精度。示例代码展示了如何设置代理IP、cookie及user-agent来模拟真实用户行为,提高数据抓取成功率与稳定性。适用于需要频繁抓取互联网数据的应用场景。
145 3
WebDriver与Chrome DevTools Protocol:如何在浏览器自动化中提升效率
|
24天前
|
Web App开发 存储 前端开发
Chrome浏览器的跨域问题
Chrome浏览器的跨域问题
|
2月前
|
Web App开发
Chrome——谷歌浏览器chrome如何模拟其他客户端
Chrome——谷歌浏览器chrome如何模拟其他客户端
86 1
Chrome——谷歌浏览器chrome如何模拟其他客户端
|
2月前
|
Web App开发 JSON 安全
【跨域难题终结者】:一键解锁Chrome浏览器神秘设置,彻底告别开发阶段的跨域烦恼!
【8月更文挑战第20天】跨域是前端开发常遇难题,尤其在前后端分离项目中。浏览器因安全考量会阻止不同源间的请求。本文对比CORS、JSONP、代理服务器等解法,并介绍开发阶段通过调整Chrome设置来临时禁用跨域限制的方法,提供启动Chrome及使用`fetch`API示例,适合快速测试。但请注意这不适用于生产环境,存在一定安全风险。
202 1
|
2月前
|
Web App开发
成功解决Chrome浏览器 控制台下看不到接口信息的问题
这篇文章提供了解决Chrome浏览器控制台不显示接口信息问题的方法,包括检查过滤设置和确保“保留日志”开关已打开。
成功解决Chrome浏览器 控制台下看不到接口信息的问题
|
2月前
|
Web App开发 前端开发 JavaScript
手摸手教你,从0到1开发一个Chrome浏览器插件
开发 Chrome 插件既有趣又具成就感。本教程将引导你从零开始,逐步创建一个简单的 Chrome 插件。首先了解 Chrome 插件是可增强浏览器功能的小程序。以一个基础示例开始,你将学习如何设置开发环境,包括安装 Chrome 和准备文本编辑器,并掌握 HTML、CSS 和 JavaScript 的基础知识。接着,我们将构建插件的基本结构,涉及 `manifest.json` 配置文件、`background.js` 后台脚本、`popup.html` 用户界面以及 `style.css` 样式表。
188 8
|
2月前
|
Web App开发
Chrome浏览器导出HTTPS证书
Chrome浏览器导出HTTPS证书
43 0
Chrome浏览器导出HTTPS证书
|
2月前
|
Android开发 iOS开发 C#
Xamarin.Forms:从零开始的快速入门指南——打造你的首个跨平台移动应用,轻松学会用C#和XAML构建iOS与Android通用界面的每一个步骤
【8月更文挑战第31天】Xamarin.Forms 是一个强大的框架,让开发者通过单一共享代码库构建跨平台移动应用,支持 iOS、Android 和 Windows。使用 C# 和 XAML,它简化了多平台开发流程并保持一致的用户体验。本指南通过创建一个简单的 “HelloXamarin” 应用演示了 Xamarin.Forms 的基本功能和工作原理。
44 0
|
2月前
|
Web App开发 缓存 前端开发
哇塞!Chrome 浏览器竟有四大神秘进程,带你探秘互联网世界的强大引擎!
【8月更文挑战第31天】Chrome浏览器因其快速稳定的表现深受用户喜爱,其背后是四大独特多进程架构的支持:浏览器主进程管理界面与进程协调;网络进程处理网络请求及缓存;渲染进程将网页内容转化为可视化页面;插件进程则确保各类插件如Flash Player的安全稳定运行。通过这些进程间的高效协作,Chrome实现了流畅、稳定的上网体验。例如,在访问新闻网站时,各进程协同工作,确保网页内容顺利加载和显示。理解这些进程有助于提升使用体验并有效解决问题。
46 0
|
3月前
|
Web App开发 前端开发 JavaScript
Chrome插件实现问题之用户在浏览器中输入URL后,浏览器进程会进行什么操作
Chrome插件实现问题之用户在浏览器中输入URL后,浏览器进程会进行什么操作
下一篇
无影云桌面