JS 开销和如何缩短解析时间
JS 开销主要有下载、解析编译和执行 解决方案:
- code splitting,代码拆分,按需加载
- tree shaking,代码减重 从解析、执行来看,还可以:
- 减少主线程工作量
- 避免长任务
- 避免超过 1kb 的行间脚本
- 使用 rAF 和 rIC 进行时间调度
- 渐进式启动
- 可见不可交互 VS 最小可交互资源集
配合 V8 有效优化代码
V8 编译原理
V8 优化机制
- 脚本流
- 字节码缓存
- 懒解析
函数优化
- 懒解析 VS 饥饿解析
对象优化
- 以相同顺序初始化对象成员,避免隐藏类的调整
- 实例化后避免添加新属性
- 尽量使用 Array 代替 array-like 对象
HTML 优化
- 减少 iframes 的使用
- 压缩空白符
- 避免节点深层级嵌套
- 避免 table 布局
- 删除注释
- css & js 尽量使用外链
- 删除元素默认属性
借助工具:html-minifier,webpack 已经集成了
CSS 对性能的影响
- 降低 CSS 对渲染的阻塞
- 利用 GPU 进行动画的完成
- 使用
contain:layout和font-display属性