25 | 页面性能:如何系统地优化页面?
该思维导图由 AI 生成,仅供参考
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了页面性能优化的系统性方法,从加载阶段和交互阶段两个方面进行了详细分析。在加载阶段,文章提到了影响页面加载速度的关键因素,包括关键资源个数、大小以及请求关键资源所需的往返时延(RTT)。针对这些因素,文章提出了优化方案,如减少关键资源个数、压缩资源大小以及使用CDN来减少RTT时长。在交互阶段,文章强调了渲染帧的速度对交互流畅度的重要性,讨论了通过JavaScript和CSSOM来触发帧生成的过程,并提出了减少JavaScript脚本执行时间的策略,如将一次执行的函数分解为多个任务或采用Web Workers。总的来说,本文通过系统性的分析和优化方案,为读者提供了深入理解和优化页面性能的方法。 在加载阶段,核心的优化原则是:优化关键资源的加载速度,减少关键资源的个数,降低关键资源的RTT次数。在交互阶段,核心的优化原则是:尽量减少一帧的生成时间。可以通过减少单次JavaScript的执行时间、避免强制同步布局、避免布局抖动、尽量采用CSS的合成动画、避免频繁的垃圾回收等方式来减少一帧生成的时长。 文章还提到了避免强制同步布局和布局抖动的重要性,以及合理利用CSS合成动画和避免频繁的垃圾回收的建议。这些优化策略可以帮助开发者更好地优化页面性能,提升用户体验。 总的来说,本文通过深入的技术分析和实用的优化建议,为读者提供了全面的页面性能优化指南,有助于开发者快速了解并应用于实际项目中。
《浏览器工作原理与实践》,新⼈⾸单¥59
全部留言(50)
- 最新
- 精选
- HB为老师点赞,假期不断更
作者回复: 争取快点把主干课程写完,然后还要整理几百条留言,来系统地答疑
2019-10-01235 - vianem老师您好,我利用will-change: transform优化css动画,动画只进行了transfrom: translate()平移。在测试该动画是否会被主线程阻塞的时候出了问题:我在控制台输入while (1) {};动画直接卡住了
作者回复: 我不知道你怎么写的代码,你可以用同样的方式试下这个站点:https://chokcoco.github.io/demo/css3demo/html/index.html
2019-12-03 - Crack想起一个问题,请问浏览器是如何渲染gif的,会引起页面重绘吗
作者回复: 不会的,gif是经过专门处理的
2019-11-132 - 桃翁老师,我感觉应该是 JavaScript 是加上 async 标签吧,你写的是 sync 标签,async(异步)的方式才能达到优化的效果。
作者回复: 嗯 是写错了,一会改正
2019-10-21 - Luke我们在进行优化的时候,其中有一条策略就是使用离线dom减少重排与重绘,就是将dom先隐藏再修改,修改完后再显示出来。但是浏览器的渲染策略更倾向于将一个大的任务拆分成多个小的任务进行实时多次的渲染。那么离线dom的这种优化是不是有可能成为一种负优化?将多个渲染任务都集中到一次渲染中,导致页面渲染不够及时,当前帧占用时间过长,页面也会出现卡顿?2019-10-10424
- 阿哲加载阶段渲染流水线的配图中,css解析器和v8引擎是不是写反了?2019-10-031119
- L2避免强制同步布局那里,我的疑问是既然需要知道offsetHeight肯定是想要最新的啊! 如果我先获取再执行dom操作,还有什么意义?2020-05-08814
- mfist加载阶段: 通过分析network中关键资源(html文件 js文件 css文件)的大小,个数,只找到一个可能性能问题:html文件是128kb比较大,网站本身已经开启gzip http2 多个静态资源域名、开启缓存等多个优化手段 交互阶段 新浪首页页面加载完成后,滚动页面查看次屏页面,没有太多的交互,查看performance没有发现太明显的性能问题 今日总结: 一个页面从生命周期的维度主要分为三个阶段:加载阶段、交互阶段、关闭阶段。 1. 加载阶段影响网页首次渲染的关键资源几个指标:个数、大小、RTT(round trip time)。通常一个HTTP的数据包在14kb左右。 2. 交互阶段的优化主要是指渲染进程渲染帧速度。如何让单个帧生成的速度变快呢? * 减少JavaScript脚本执行时间 * 避免强制同步布局,添加 删除dom后计算样式布局是在另外一个任务中执行的,这时候获取样式信息,会将其变成同步任务。 * 避免布局抖动 * 合理利用CSS合成动画(标识 will-change 单独生成一个图层) * 避免频繁的垃圾回收。(尽量避免临时垃圾数据,优化存储结构,避免小颗粒对象产生)2019-10-03114
- 安静请问老师:当 JavaScript 标签加上了 sync 或者 defer、CSSlink 属性之前加上了取消阻止显现的标志后,它们就变成了非关键资源了。 这段里面取消阻止显现标记是什么标记呀2019-10-08410
- Geek_fd81b3老师,如果操作dom引起了重拍或重绘,是整个页面从0开始吗,哪些没变化的地方也会重拍重绘吗?比如我把页面最后的元素大小改变了,上面的都没发生变化,这样上面哪些没有变化的也会重拍重绘吗?2020-09-0946