问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

性能优化笔记

发布网友 发布时间:2024-09-26 05:11

我来回答

1个回答

热心网友 时间:2024-12-02 10:22

衡量标准

谈论性能优化首先需要明确衡量标准,前端工程师需要做的就是根据标准中的指标来确定一个页面是否有性能问题,然后通过经验或者相关工具来判断性能的瓶颈在哪里,从而确定具体优化的方案。

RAIL模型

RAIL是一种以用户为中心的性能模型,它提供了一种考虑性能的结构。该模型将用户体验分解到按键操作(例如,点击、滚动、加载)中,帮助您为每个操作定义性能目标。

RAIL代表Web应用生命周期的四个不同方面:响应、动画、空闲和加载。用户对这些上下文分别有不同的性能期望,因此,性能目标是根据上下文以及用户如何感知延迟的用户体验研究来定义的。

模型的细节可以使用RAIL模型衡量性能,总结一下:

以用户为中心。

在100毫秒内响应用户输入。

播放动画或执行滚动时,在10毫秒内生成一帧。

最大限度延长主线程空闲时间。

在5000毫秒内加载交互式内容。

测量工具Chrome浏览器的Performance使用lighthouse生成报告

指标包括:

FCP(FirstContentfulPaint)

LCP(LastContentfulPaint)

TTI(TimeToInterractive)

FID(FirstInputDelay)

TBT(TotalBlockTime)

CLS(CumulativeLayoutShift)

如何衡量加载速度:FCP、LCP

如何衡量操作流畅度:TTI、FID、TBT

如何衡量页面的视觉稳定程度:CLS

参考这篇文章

优化手段图片

JPEG

JPEG使用的是有损压缩算法,压缩比高,所以适合做轮播图、背景图等,可以呈现丰富的色彩。但是不太适合展示logo等对细节要求高的图片。

渐进式JPEG

在网络缓慢的情况下可以优先加载出一个比较模糊的版本,再逐渐清晰。

GIF

GIF支持的颜色数量少,不太适合展示照片。展示Logo的话不如PNG,所以一般用来展示动画,但是单纯展示动画也不如使用视频格式,成熟的视频编解码格式更能节省网络开销。

PNG

PNG使用的是无损压缩算法,并且支持alpha透明通道,适合展示logo或者带透明度的图片,通常包括PNG-8、PNG-24、PNG-32。

WebP

WebP是一种有较高视觉体验的格式,但在IE和Safari上兼容性较差。所以需要做兼容处理。

SVG

SVG是一种基于XML语法的文件格式。适合展示矢量图。学习成本比较高,通过工具编辑出来的svg会携带大量冗余信息。

优化手段包含:

CSSSpirit

小图片使用Base64

使用Web字体

加载

图片懒加载(注意intersectionObserver)

预加载(preload/prefetch/preconnect/dns-prefetch)

构建

压缩混淆

代码拆分,按需加载

DLLPlugin

多进程加快速度

支持TreeShaking

渲染

避免回流和重绘,尽量只触发合成(仅触发合成的CSS属性只有transform和opacity),可以参考浏览器渲染原理

避免主线程阻塞,可以使用webworker

截流防抖

减少样式计算,CSS使用BEM规范

避免频繁修改DOM,可以使用react等虚拟DOM技术

缓存

强制缓存(相关HTTP头expires和cache-control)

协商缓存(一般是last-modified和ETag两个头同时使用)

ServiceWorker拦截请求

通过HTTP2实现的Push缓存

CDN缓存

结合实际项目

小程序首页优化,测试机器iphone8:

优化前:2s+

分包加载1s

代码执行1s

接口1s

优化后:1s+

分包加载1s

代码执行+接口1s

方案:

图片优化

使用webp

后台上传图片增加相关校验,从上游规范素材质量

设置宽高,避免页面抖动

开启懒加载只渲染可是区域内的图片,首屏从100+图片减少到30+

使用字体图标

渲染优化:

拆分接口,分屏渲染,使首页接口请求速度提升50%+

通过localstorage缓存首屏骨架,实现渐进式秒开

利用空闲计算时间进行预加载详情页关键

下架一些不再使用的实验逻辑

针对feed流优化:

无限滚动。通过一个二位数组存储数据,根据视口的位置判断到底展示哪个list,其他list使用div替代。

算法优化。之前为了保证左右两边元素个数相同,频繁获取元素的clientHeight。改为一次计算。

原文:https://juejin.cn/post/7095680719174762527

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
干货| 如何利用PPT绘制手绘图像(内含视频教学)。 小米Mix2s开发者选项的设置与应用指南(探索小米Mix2s开发者选项)_百度... 我今年41岁女,我想问一买哪种养老保险更合算,可以一次买吗?要多少... 我们家有营业执照。我现在41岁了。养老保险如何来买?一年,交多少钱? 搅拌桩的两喷两搅怎么理解 ...上关于一喷二搅、二喷二搅、二喷三搅、二喷四搅的具体做法 两搅两喷与四搅四喷的区别 三轴搅拌桩两搅四喷是什么意思 梦幻西游将军令怎么解绑 EXCEL表,求值? 图片优化不完全指北 12368可以查询法官电话吗 这个是什么鱼,,能吃吗 DNF友好怎么算的啊?就是赠送只能送7天以上的好友? DNF点卷可以送人吗? ...了Q币Q点以及各类的点卷,我一冲就显示因帐号安全因素无法充值?_百度... ...说:赠送失败 为了保障您的财产安全仅允许好友之间赠送? Q币冲CF 点冲为什么充不进去? 安徽省合肥市交通违章带什么材料去处理 合肥违章停车处理需要带什么资料呢? 怎样才能拉拢人心的技巧 十大名牌行车记录仪推荐,行车记录仪什么牌子质量好_行车记录仪10大牌子... 围绕中心意思写的作文500字 华为企业业务如何撬动美国市场? 万利达PDVD-1760品牌介绍 赛尔号海洋星神秘精灵在哪 中秋礼品推荐一个给姐姐呗,我要送给我老公的? 介绍下2011年韶关中秋礼品网哪家性价比最好啊? 2011年广州中秋礼品团购网站哪家最有特色? 新日电动车大灯开关的问题 三岁宝宝为什么流鼻血 三岁宝宝流鼻血是白血病吗 三岁宝宝半夜流鼻血是什么原因 电影摄影机一些电影摄影机 教师资格证认定申请表会放入档案吗 指甲变软或发生变形如何鉴别诊断? 指甲夹伤教你这样来缓解 微信语音能打通,但是不能接通是怎么回事呢? 对方是诺基亚手机,打对方电话通了就是没人接,但是对方说手机没反应... 小孩入园体检怎么预约 爆仓现象如何规避爆仓 后群肌肉拉伤了,腘绳肌股四头肌那一块,我应该怎么办才能治好,求前辈们... 华硕ASUSB85PROGAMER游戏大板配什么CPU 华硕B85- PRO GAMER主板支持什么CPU 华硕b85m pro gamer配什么cpu好? 华硕B85PROGAMER支持哪些cpu 土耳其话费流量充值指南、土耳其话费余额、流量余额查询技巧 图书馆用英语单词怎么拼? husbend是什么意思(英语husband的中文是什么意思) 花谢花飞花满天花无谢心里爱的是谢千寻还是倾城 花无谢真正爱的是倾城...