lixinliang

不懂用户体验的技术不是好设计

⚡️ 性能优化指标与方案笔记


简语

性能优化与用户体验息息相关,

减少白屏时间,降低首屏渲染时间🕐,

有助于减少用户跳出率,等等。

模型

建立合适的模型体系,才能明确目标与方向。

这里用 GoogleRAIL 模型评估性能⚡️。

同时,也是大部分开发者采用的模型。

https://developers.google.com/web/fundamentals/performance/rail

指标

这里参考 Google 的开发者文档,

FPfirst paint,指页面首屏,

FPFCP 会非常接近,

对于开发者来说,在文档靠前的节点会优先被渲染,

从而呈现给用户非白屏的内容,虽然未必是完整的框架。

FCPfirst contentful paint,指包含页面的基本框架,但没有数据内容,

https://developers.google.com/web/tools/lighthouse/audits/first-contentful-paint

FMPfirst meaningful paint,指包含页面所有元素及数据,

https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint

TTItime to interactive,指首次可交互时间,

https://developers.google.com/web/tools/lighthouse/audits/time-to-interactive

方案

以目前的主流 MVVM 框架,ReactVue 为例,

基于前端路由的 SPA 开发,

主要有以下两种模式,

CSRclient side rendering,传统网页渲染模式,

SSRserver side rendering,服务端渲染,

除此以外,

预渲染,《美团网页首帧优化实践》中提出的方案,

核心思路是,在编译源码发布上线中间,新增一个环节,预编译

遍历全部前端路由,并且生成对应的页面,

线下做更多,线上就做得少。

基于 CSR 的前提下,减少了每个客户端的首屏 mounted 开销,

区别于 SSR 的动态生成,脱离了 node 层依赖。

预编译 环节中,

利用无头浏览器 phantom 预渲染。

参考

更多优秀的参考文章:

https://segmentfault.com/a/1190000017040216

https://xiaoiver.github.io/coding/2017/06/09/%E4%BB%A5%E7%94%A8%E6%88%B7%E4%B8%BA%E4%B8%AD%E5%BF%83%E7%9A%84%E6%80%A7%E8%83%BD%E6%8C%87%E6%A0%87.html

灵感