Web 性能的“3 秒法则”

你只有三秒钟。

之后,你的用户就会离开。

Google 的研究表明,如果移动端网站加载时间超过 3 秒,53% 的用户会选择放弃。

网站加载缓慢会让你损失金钱。将移动端加载时间缩短 0.1 秒,即可提升 8.4% 的零售转化率。

性能不仅仅是一个技术指标,它更是一个业务指标。

为了取胜,你必须了解核心网页指标 (Core Web Vitals):

• LCP (Largest Contentful Paint):用户看到主要内容的速度。目标应在 2.5s 以内。 • INP (Interaction to Next Paint):页面对点击等操作的响应速度。目标应在 200ms 以内。 • CLS (Cumulative Layout Shift):页面的稳定性。目标应在 0.1 以内。

停止猜测,开始优化。以下是战胜时间的策略:

JavaScript 优化

• 减少代码传输量。使用动态导入 (dynamic imports) 仅在需要时加载代码。 • 使用 Tree-shaking。从 CommonJS 切换到 ES modules 以移除冗余代码。 • 将繁重任务移至 Web Workers。确保主线程能够及时响应用户输入。 • 使用 deferasync。不要让脚本阻塞 HTML 解析。

CSS 与渲染

• 内联关键 CSS (Critical CSS)。优先加载首屏 (above the fold) 可见的内容。 • 避免布局抖动 (layout thrashing)。批量处理读取和写入操作,防止频繁的重新计算。 • 使用 transformopacity 进行动画处理。这些属性会调用 GPU 并避免布局偏移。 • 使用 content-visibility: auto。跳过屏幕外内容的渲染。

图片策略

• 使用现代格式。WebP 和 AVIF 的体积远小于 JPEG。 • 设置 widthheight 属性。这可以防止布局偏移 (CLS)。 • 对首屏以下的内容进行图片懒加载。但不要对 LCP 关键大图进行懒加载。 • 使用 srcset。为移动端用户提供更小的图片。

网络与缓存

• 使用 CDN。将内容部署到离用户更近的地方以降低延迟。 • 启用压缩。使用 Brotli 或 Zstandard 来减小文件体积。 • 积极使用缓存。为带有哈希值的资源使用不可变缓存 (immutable cache) 响应头。 • 保持 bfcache (往返缓存) 正常工作。避免使用 unload 事件,以确保实现即时的前进/后退导航。

目标很简单:减少不必要的处理。

最快的代码是用户无需下载的代码。最快的请求是浏览器无需发出的请求。

来源:https://dev.to/utkarshbansal01/the-3-second-rule-of-web-performance-and-how-to-beat-it-1he1