第五章
性能优化
利用Next.js内置工具
性能即排名。学习如何保障Core Web Vitals,并利用next/font和next/script优化字体与第三方脚本加载。
进阶内容
预计阅读:35分钟
实战优化
5.1 Core Web Vitals 的保障
Core Web Vitals是Google衡量用户体验的核心指标,直接影响搜索排名。Next.js通过内置组件和优化策略,帮助开发者轻松达到良好标准。
Core Web Vitals 模拟器
LCP
Largest Contentful Paint
1.8s
良好 (<2.5)差 (>4)
衡量最大内容元素(如图片或文本块)的加载时间。
INP
Interaction to Next Paint
150ms
良好 (<200)差 (>500)
衡量用户与页面交互(如点击)的响应速度。
CLS
Cumulative Layout Shift
0.05
良好 (<0.1)差 (>0.25)
衡量页面加载期间视觉元素的稳定性,防止跳动。
5.2 字体优化 (next/font)
`next/font` 自动优化本地或Google字体,通过在构建时处理字体文件,消除字体加载引起的布局偏移(CLS)和性能瓶颈。
next/font 优化演示
传统 @import (会导致CLS)
Banner
This text will shift.
/* styles.css */
@import url('https://fonts.googleapis.com/css2?family=Roboto');
/* Causes layout shift when font loads */使用 next/font (零CLS)
Banner
This text is stable.
// app/layout.tsx
import { Inter } from 'next/font/google';
const inter = Inter({ subsets: ['latin'] });
<body className={inter.className}>{children}</body>5.3 脚本优化 (next/script)
第三方脚本(如分析、广告)是常见的性能瓶颈。`next/script` 组件通过提供不同的加载策略,让你能精细化控制脚本的加载时机,避免阻塞页面渲染。
next/script 加载策略模拟
选择策略
模拟日志
import Script from 'next/script'; <Script src="https://example.com/script.js" strategy="afterInteractive" />
5.4 代码分割 (Code Splitting)
Next.js 自动实现代码分割,将代码按页面拆分。用户访问某个页面时,只会下载该页面所需的JavaScript,大大减少了初始加载的JS体积,提升了页面加载速度和交互响应性。
自动代码分割
无需手动配置,Next.js的基于页面的路由系统天然支持代码分割。
// 当用户访问 /dashboard 时...
GET /_next/static/chunks/pages/dashboard-....js
// 只会加载dashboard页面相关的JS,而不是整个应用的JS
第五章总结
核心优化
- 理解并监控LCP, INP, CLS三个核心指标。
- 使用 `next/font` 消除字体加载的性能问题。
- 使用 `next/script` 的策略优化第三方脚本。
- 利用Next.js的自动代码分割优势。
下章预告
最后一章将介绍如何使用工具诊断和持续监控你的SEO效果,包括Google Search Console、PageSpeed Insights等。