此文件通过 Web 特定性能内容扩展 common/performance.md。
Web 性能规则¶
Core Web Vitals 目标¶
| 指标 | 目标 |
|---|---|
| LCP | < 2.5秒 |
| INP | < 200ms |
| CLS | < 0.1 |
| FCP | < 1.5秒 |
| TBT | < 200ms |
捆绑包预算¶
| 页面类型 | JS 预算(gzip 压缩后) | CSS 预算 |
|---|---|---|
| 落地页 | < 150kb | < 30kb |
| 应用页面 | < 300kb | < 50kb |
| 微型站点 | < 80kb | < 15kb |
加载策略¶
- 在适当情况下,内联关键首屏 CSS
- 仅预加载主视觉图像和主要字体
- 延迟加载非关键 CSS 和 JS
- 动态导入重量级库
const gsapModule = await import('gsap');
const { ScrollTrigger } = await import('gsap/ScrollTrigger');
图像优化¶
- 显式指定
width和height - 仅对主视觉媒体使用
loading="eager"和fetchpriority="high" - 对首屏以下资产使用
loading="lazy" - 优先使用带回退的 AVIF 或 WebP
- 不要提供远大于渲染尺寸的源图像
字体加载¶
- 除非有明确例外,字体族最多 2 个
font-display: swap- 尽可能进行子集化
- 仅预加载真正关键的权重/样式
动画性能¶
- 仅动画合成友好属性
- 小范围使用
will-change,并在完成时移除 - 简单过渡优先使用 CSS
- JS 动效使用
requestAnimationFrame或成熟的动画库 - 避免滥用滚动处理器。使用 IntersectionObserver 或行为良好的库
性能检查清单¶
- [ ] 所有图像都有显式尺寸
- [ ] 没有意外的渲染阻塞资源
- [ ] 没有由动态内容引起的布局偏移
- [ ] 动效仅限于合成友好属性
- [ ] 第三方脚本以 async/defer 方式加载,且仅在需要时使用
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 ev/ECC