前端性能优化方案
为了确保事情或工作有序有效开展,通常需要提前准备好一份方案,方案属于计划类文书的一种。那么方案应该怎么制定才合适呢?下面是小编为大家收集的方案策划范文,供大家参考借鉴,希望可以帮助到有需要的朋友。
前端性能优化方案篇一
上面的脚本计算了 head 中的第一个 js脚本执行后加载页面所需的时间,但它没有给出任何关于从服务器获取页面所需的时间,或是页面初始化生命周期的信息。
由此我们可以计算旧文档的卸载、重定向、应用缓存、dns lookup、tcp 握手、http 请求处理、http 响应处理、dom 处理、document加载完成等页面性能打点。具体可以参考navigation-timing w3c的规范 和 几个页面关键指标是如何计算的
从上图中我们可以看出document processing是 navigation timing 独有的,后面我们也会介绍resource timing。整体而言 level 2 标准更加的全面,把web performance timing分成了各个 performance metric,看起来一目了然,然而各个主流浏览器还存在兼容性问题。
介绍完这两个performance navigation timing api,我们顺便再来看一下其余几个主要的performance timing api:resource timing api 、 paint timing api 和 long task timing api,以及如何使用performanceobserver异步获取性能数据。
performanceobserver 可以被动地订阅与性能相关的事件,也就是说这个 api 通常不会干扰页面主线程的性能,因为它的回调通常在空闲期间触发。默认情况下,performanceobserver 对象只能在条目出现时观察它们。如果想延迟加载性能分析代码(不阻止更高优先级的资源),我们需要这么做:
设置buffered 为true,浏览器将在第一次调用 performanceobserver 回调时返回其性能条目 缓冲区中的历史条目。
前端性能优化方案篇二
(下文以2024年2月a频道页面为例,均为dummy仿造后数据,也不代表整体情况)
.如何衡量性能问题严重性
衡量性能问题严重性,是为了让大家意识到优化的必要性,以及急迫性
同.性能黑榜,不赘述
见下图“可交互时长分布图”,一个记录代表一个用户。
即使不去统计,我们都能很明显的看出来,这个a频道页面:
和开发说明问题严重性时,这个会很有代入感,比如见下图,10%的android用户在以上,是不是可以认为他们大部分都跳失了?
下图不用算都能明显发现,秒开率和 整体数据差异实在太大
.分析性能瓶颈-分析思路
首先要明确,性能分析主要是给相关页面的前端、开发同学看,给关心问题的测试同学看,所以我们可以拆分的更细节、更专业。可以先分前端、后端2个大类:
.分析性能瓶颈-前端环节
业务因素(具体不表),分终端是重点。
从可交互时长、秒开率、3秒+率、5秒+率,分别分析,都能论证--支付宝端问题更明显。
下图将t1~t9 每个阶段打点情况可视化,并分析重点环节的差值(打点逻辑由前端定义)
见图2可以明显观察到:
1、接口耗时太久,且后变差明显(可以去追溯下发生了什么); 2、lbs获取耗时很久,高于平均1倍以上,而取lbs是a频道页的关键逻辑
我们根据手淘的高中低端机评判标准,埋点获得数据。平均时长,高中低各自占比,以及低端时长分布(也可选中高端)。下图可发现,低端机比例很低(需要思考是否有必要重点优化),但低端机超过3秒以上的比例远高于其他的(和总体的完全时间分布对比) 。
包括:机型、系统等,可做参考
.分析性能瓶颈-后端环节
主要从后端维度来分析
这里可见,下图尽管是开始发起请求-》收到请求的全过程,但也严重超标(几乎是标准值的2倍)
前端性能优化方案篇三
通过线上用户的真实采集,并制定能反应用户体感的指标,进行性能黑榜和全局趋势分析。
从重点单点角度,我们通过性能黑榜;从整体视角,我们通过整体趋势分析。
.性能数据的采集
arms前端监控专注于对web场景、小程序场景的监控,从页面打开速度(测速)、页面稳定性(js诊断错误)和外部服务调用成功率(api)这三个方面监测web和小程序页面的健康度。
sls日志服务为log、metric、trace等数据提供大规模、低成本、实时的平台化服务。日志服务一站式提供数据采集、加工、查询与分析、可视化、告警、消费与投递等功能。
odps即maxcompute,是适用于数据分析场景的企业级saas模式云数据仓库。
fbi是阿里内的智能大数据分析和可视化平台,下面的所有截图都是在fbi平台配置图表而成,还未对外开放。
arms-sdk结合前端的自定义埋点,在海量用户访问的同时,就会自动上报数据到sls日志库,整体过程如下图:
.性能指标的确定
所有前台页面,每个用户每次浏览的有效数据(完全加载<15s 内有效)
指标的影响因子:从用户视角,页面流量越大,则对整体数据的影响越大(也就是权重越大)
这样做的好处:流量越大数值越严重的,优化的效果(正反馈)越明显,确定了治理性能问题的优先级。
结合淘系、以及集团其他部门的
.性能黑榜
为何要用性能黑榜来作为主要发现手段?我们通常可推理得:
(可根据各自业务,加个样本量的筛选,如我们看每日pv 10w以上的)
.整体性能趋势分析
整体趋势分析,即是为在整体角度,看我们的页面性能趋势,它是重要的度量指标。 这里我们把所有的流量都纳入,没有页面的区分,为的是基于用户维度,流量大的页面权重自然会更大。
从上图看,1月初到2月中旬的数据正在持续恶化,必须要采取措施治理!
前端性能优化方案篇四
很多人都以为,前端性能优化,重点在“前端”优化,“测试”很难起到主导作用。试着换个角度,从整个研发团队视角看,前端做运动员专项治理,测试做裁判员专项评测,这套机制,是否更能切实做到优化,达成的数据也更让大家信赖?再者,测试不止局限于此,还可做队医、分析师。。。。
.可持续优化闭环
以下持续优化闭环,是我们摸索着实行了一年多,有效且高效的解法。
从上图看,整个过程为:
step0、前端事先进行埋点,(一般前端做了sdk,直接引入即可)
step1、测试通过性能黑榜,发现最为突出的重点性能问题页面(首屏平均时长&秒开率,pv&业务意义, 多项结合度量)
step2、协助前端一起专业分析问题页面,找出性能瓶颈点
step3、前端更有策略地针对性治理
step4、查看性能趋势变化,验证优化效果
step5、假设已达到优化预期,或者有更糟糕的页面把之前页面挤下去,继续关注黑榜前列的页面(即跳到step1,继续轮转)
我们可以发现,测试通过发现、分析、验证 三板斧,驱动推进页面性能优化。
.效果明显
从2024年10月份开始迭代以来,共发现了8类严重性能问题。
包括:端外(支付宝)性能问题,外投&跨端性能问题,pha架构性能问题,运营不规范配置导致、其他业务原因导致的性能问题等。
并且快速有效,在业务方或其他同学提过来之前,我们都已经发现并有了分析,在优化节奏上更具有主动性。
前端性能优化方案篇五
1、静态资源的压缩合并(js 代码压缩合并、css 代码压缩合并、雪碧图)
2、静态资源缓存(资源名称加 md5 戳)
可以通过链接名称控制缓存:通过前端构建工具为打包的文件添加md5后缀,这样当打包上线时请求的链接发生改变,这样可以防止由于缓导致静态资源更新失效;
3、 使用 cdn 让资源加载更快
二.优化页面渲染
1、css 放前面,js 放后面
2、懒加载(图片懒加载、下拉加载更多)
先将src赋值成一个通用的预览图,下拉时候再动态赋值成正式的图片。如下,是预览图片,比较小,加载很快,而且很多图片都共用这个,加载一次即可。待页面下拉,图片显示出来时,再去替换src为data-src的值。(data-开头的属性浏览器渲染的时候会忽略掉,提高渲染性能)
3、减少dom 查询,对 dom 查询做缓存
4、减少dom 操作,多个操作尽量合并在一起执行(documentfragment)
dom 操作是非常耗费性能的,因此插入多个标签时,先插入 fragment 然后再统一插入 dom。因为fragment文档片段存在于内存中,并不在dom树中,所以将子元素插入到文档片段时不会引起页面回流。
5、事件节流
在开发过程中会遇到页面一些频繁触发的事件,比如mouseover、scroll、resize等事件。一秒可以执行很多次,这样会造成严重的页面性能问题,导致页面c出现卡顿甚至浏览器崩溃。因此我们需要对事件进行节流,简单的说就是控制其执行的次数。这里就涉及到了常用到的js的节流和防抖功能实现。 1.防抖(debounce):在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。
2、节流(throttle):规定一个单位时间,在这个单位时间内,只能有一次触发事件的回调函数执行,如果在同一个单位时间内某事件被触发多次,只有一次能生效。
6、尽早执行操作(domcontentloaded)