本次性能优化根据灯塔测试,优化前桌面端50分左右,优化后提高到90分,但经过一次迭代评分落到70分,经检测是isReady回调中app.mount函数导致了长任务,暂未找到解决方案
一、服务原因
1、首屏响应太慢。
服务端渲染中间可能涉及到接口请求,请求时间过长会延迟页面的ssr渲染时间
依据:根据实验,加上接口请求和不加区别大,尤其线上服务端接口响应时间过长,单看浏览器端接口响应平均为800ms左右,这也可能是为什么评分测试时生产环境会提示"请缩短初始服务器响应用时",而测试环境不会
方案:服务端接口优化,提升接口响应速度
影响评分项:FCP,LCP
二、资源加载原因
1、图片太大,加载时间长
方案:转换图片格式(jpg或webp),对图片进行压缩
影响评分项:LCP
2、推迟加载屏幕外图片
方案:视口之外的图片进行懒加载,提升首屏完全加载速度(可使用lazysizes第三方库实现,也是谷歌分析官方示例的库)
影响评分项:LCP
3、网站设置了缓存,但测评时还是提示”采用高效的缓存策略提供静态资源“
查询资料,可能是由于设置缓存的时间过短(缓存设置应由服务端设置)
三、代码执行原因
1、长任务过长
依据:在chrome devtools栏检测到存在长任务(官网项目长达200多毫秒)
方案:在代码中减少长任务耗时(官网导致原因是由于初始渲染svg symbol标签时间过长,且废弃svg太多,导致不必要的计算和渲染)
影响评分项:TBT,TTI
四、体验性能原因
1、未在字体下载完前让字体保持可见状态
依据:体验优化,优化后测试环境提升5分
方案:在字体下载完前让字体保持可见状态,设置@font-face属性font-display: swap
影响评分项:FCP,LCP