前端性能优化
性能指标(白屏/首屏/关键内容展现)
分析(Chrome/埋点)
优化(资源/缓存/网络/体验)
性能指标
FCP
LCP
产品的关键路径
自行埋点
如何分析性能
Performance Lighthouse
全链路埋点
分析过后,希望能够得到一个加载的流程图,标明每个步骤的用时
然后就可以针对性地解决用时长的那些步骤
一些常见的用时长的步骤:
- 静态资源加载&解析执行
- 图片的加载
- 接口调用
常见的性能优化手段
减小资源体积
js/css资源
- 分包,提取公共代码
- 异步(动态)组件,非首屏需要的代码不加载
- babel的精细化配置,仿vue-cli的modern mode
分析工具:
webpack analyze plugin
图片资源
- 图片压缩
- 上传时压缩
- 与设计达成图片体积限制共识
- 图片转webp格式
- 对于固定的代码如webp检测,如何自动注入?
- postcss,自动生成对应的css?
更好地利用缓存
- 合理分包,划分出“经常改动的代码”“基本不会变的代码”,配合contenthash和资源的ETag,实现每次部署后只有改动的那些代码对应的文件变了,而其他文件都还可以用缓存的
- 基于DLL实现依赖共享,如vue等基础框架包 团队公共sdk包等
- 如何合理拆分DLL
- 如何进行DLL的版本控制
- 客户端的离线包机制
网络层
- preconnect
- gzip压缩
- http2
让用户“觉得快”
- 把Loading放在html模板中
- 如何避免手写html模板?如何维护跨端项目的两份代码?
- 加载完首屏之后对其他可能用到的资源进行预加载,包括图片/js/css等
- 配合异步组件,如何自动化这个过程?
这部分如何衡量收益