第53篇:浏览器底层原理精讲——页面渲染、重绘重排、内存机制、浏览器工作全过程
前言
很多前端只会“写代码”,不懂“浏览器怎么跑代码”。
普通前端写业务,高级前端懂底层。
所有页面卡顿、性能损耗、渲染bug、布局抖动、内存泄漏,根源全部来自浏览器底层渲染机制。
本篇一次性讲透浏览器完整工作原理,让你的优化不再是死记硬背,而是知根知底,面试直接吊打普通求职者。
一、浏览器五大核心进程(面试必背)
浏览器是多进程软件,核心五大进程:
主进程:界面展示、地址栏、标签页、管理其他进程
渲染进程:核心!解析HTML/CSS/JS、渲染页面、合成图层
GPU进程:3D加速、图层合成、页面丝滑动画
网络进程:请求资源、HTTP通信、跨域拦截
插件进程:管理第三方插件
我们写的所有前端代码,全部在渲染进程执行。
二、页面完整渲染流程(从输入网址到页面显示)
1. DNS解析
域名解析为IP地址,找到服务器真实地址。
2. TCP三次握手建立连接
建立可靠传输通道,保证数据稳定传输。
3. HTTP请求与响应
浏览器请求HTML、CSS、JS、图片资源,服务器返回资源。
4. 解析HTML → 生成DOM树
从上到下解析标签,生成文档对象模型树。
5. 解析CSS → 生成CSSOM样式树
解析样式、计算权重、生成样式规则树。
6. 生成渲染树(Render Tree)
DOM + CSSOM 结合,只包含需要渲染的可见节点。
7. 布局(Layout / Reflow)重排
计算元素大小、位置、页面几何布局。
8. 绘制(Paint)重绘
按照布局结果,填充颜色、图片、阴影、文字。
9. 图层合成(Composite)
将页面分层,GPU合成画面,最终展示屏幕。
三、重排(Reflow)& 重绘(Repaint)终极精讲
1. 重排(回流)
元素布局、大小、位置发生改变 → 重新计算整页布局
触发场景:宽高、边距、定位、字体、DOM增删、窗口大小改变。
消耗极大,是页面卡顿元凶。
2. 重绘
布局不变,仅样式颜色、背景、透明度改变 → 重新绘制
开销比重排小很多。
3. 层级:重排 > 重绘 > 合成
合成层不会触发重排重绘,性能最高。
四、如何减少重排重绘(企业优化标准答案)
批量修改DOM,避免频繁操作DOM
使用变量缓存DOM节点,避免重复获取
修改样式统一使用class,不逐行修改style
频繁动画开启GPU加速(transform、opacity)
脱离文档流动画,减少页面整体布局震荡
五、浏览器内存机制与泄漏原理
1. JS垃圾回收机制
浏览器自动回收不使用的变量、引用,释放内存。
2. 常见内存泄漏场景
定时器未清除
全局事件监听未移除
闭包常驻内存
全局变量过多
DOM引用未释放
3. 解决方式
组件销毁手动清空所有副作用、置空引用、销毁监听。
六、面试满分真题总结
1. 重排和重绘的区别?
重排是布局改变,开销最大;重绘是样式视觉改变,不影响布局。重排一定会触发重绘,重绘不会触发重排。
2. 为什么 transform 性能最高?
transform 和 opacity 变化只会触发图层合成,不走重排、重绘,GPU加速,页面最流畅。
七、本篇结语
掌握浏览器底层原理,你的优化不再是“背答案”,而是懂原理、会分析、能排查线上性能问题。
这是初级前端晋升中级前端的核心分水岭。