字节前段训练营笔记

55 阅读2分钟

浏览器架构:多进程架构 面向服务架构(升级版)

主进程 网络进程 渲染进程 GPU进程 插件进程 分离运行的 防止一个崩溃其他也不行

主进程:负责页面展示逻辑,用户交互,子进程管理,包括地址栏,书签,前进后退,收藏夹等

GPU进程:负责UI绘制,包含浏览器全部的UI

网络进程:负责网络资源加载

标签页(渲染进程)控制tab内的所有内容,讲HTML,css,和Javascript转换为用户可交互网页

插件进程:控制网站运行的插件,如flash

为什么有单进程架构? 硬件受限,内存等

面向服务架构是否会替代多进程? 会。面向服务架构是多进程的改进,还可以根据不同设备调整自己为面向服务架构或者多进程架构

JS引擎 vs 渲染引擎 解析执行JS xml解析生成渲染树,显示在屏幕 桥接方式通信(通过JS控制渲染引擎需要通过bridge,延迟较高)

Chrome运行原理

输入处理→开始导航→向服务端读取响应→寻找渲染进程

渲染进程:

资源加载(加载子资源,执行脚本)→构建(构建dom,cssom,渲染树)→布局→绘制(构建图层,绘制图层)→合成(光栅化)→展示

输入处理:URL框输入内容后,UI线程会判断输入的说URL还是query查询,URL则请求站点资源,query则将输入发送给搜索引擎

开始导航:用户按下回车,UI线程通知网络线程发起一个网络请求,来获取站点内容,发起过程tab处于loading状态

读取响应:网络线程接受到http请求后,检查响应头媒体类型,如果响应主体是HTML文件,将内容交给渲染进程处理,如果是其他类型,交给下载管理器处理

寻找渲染进程:网络线程检查完毕后,告知主进程数据已准备完毕,主进程为站点寻找渲染进程(通过IPC告知渲染进程去处理本次导航),渲染进程开始接受数据并告知主进程自己已开始处理,导航结束,开始加载文件

加载资源→构建渲染树(dom树是转化html,cssom树是转化css代码,两树组合成渲染树)

页面布局→页面绘制

首屏优化: 压缩,分包(多线程),删除无用代码 静态资源分离 JS脚本非阻塞加载 缓存策略 SSR 预置loading,骨架屏

渲染优化: GPU加速 减少回流,重绘 离屏渲染 懒加载

JS优化: 防止内存泄露 循环尽早break 合理使用闭包 减少dom访问 防抖,节流 web workers

跨端容器 开发成本低,效率高 一致性体验