性能优化从零到一
性能优化需要做的事情很多 我所理解的是从网络层面,构建层面,浏览器渲染层面,服务器层面展开
页面监控的指标有哪些
FCP(First Contentful Paint):白屏时间(第一个文本绘制时间)
Speed Index:首屏时间
TTI(Time To Interactive):第一次可交互的时间
lighthouse score(performance):Chrome 浏览器审查工具性能评分
FCP(白屏时间):是指从用户进入网站(输入 url、刷新、跳转等方法)的时刻开始计算,一直到页面有内容展示出来的时间节点
这个过程包括 dns 查询、建立 tcp 连接、发送首个 HTTP 请求、返回 html 文档、html 文档 head 解析完毕
有哪些软件可以监控到
百度、google...
如何提速
说白了是如何做性能优化,这里不说废话,从四个角度切入
前端工程化角度思考(以 webpack 为例)
webpack 方面的
构建时压缩图片、使用 webp 图片、优化 SVG 图标
框架角度
Vue 我不熟,仅 React 而言,可以从这几个方面来做功夫
如果是类组件的话,使用 pureComponent、shouldComponentUpdate
如果是函数式组件的话,可以使用 useMemo、useCallback、memo
useMemo 和 useCallback 的区别
memo 应该和 useMemo 结合
优化 UI 代码体积
使用 React.lazy 做代码分割
如果遇到列表,使用 key 做关键字,并可使用虚拟列表
关于虚拟列表的解决方案,我在这篇文章都写了
具体为懒加载、IntersectionObserver、getBoundingClientRect
HTTP 方面
使用 HTTP 缓存
升级为 HTTP2
服务器使用 gzip 压缩
OSS+CDN 加速
页面构建方面
CSS 放顶部、JS 放底部
减少回流和重绘
回流和重绘
script defer、async
实战
react 项目部署后如何工作
缓存周末工作(搭配 node 服务器实战)
js、css、html 保证更新,又利用缓存
纯协商缓存方案
优点:能够保证每次前端打包后丢上服务器资源一定更新
缺点:只要文件是新放的,即使文件内容没变也不缓存
强缓存加定时
优点::一定期限内,根本不用向服务器询问,一定是拿到缓存。速度最快
缺点:如何不配合hash,无法感知到文件更新
参考资料
- 15 条前端必备的性能优化方法,你知道哪些
- 从龟速 11s 到闪电 1s,详解前端性能优化之首屏加载
- Web 性能的方方面面
- H5 性能监控
- 面试官:你知道的前端优化手段
- 前端性能优化,从入门到进阶(基础篇)
- 前端加载优化及实践
- 当聊起前端性能优化我们要聊什么
- 使用 Preload/Prefetch 优化你的应用
- 深入浅出 Performance 工具 & API
- 聊一聊前端性能与体验的优化
- Web 性能优化:Preload 与 Prefetch 的使用及在 Chrome 中的优先级
- performance-column
- 常见的前端性能优化手段都有哪些?都有多大收益?
- 前端工程与性能优化
- 前端性能优化
- 15 年双 11 手淘前端技术巡演 - H5 性能最佳实践
- 7000 字前端性能优化总结 | 干货建议收藏