生产环境检查清单
在将您的 Next.js 应用程序投入生产环境之前,有一些优化和模式您应该考虑实施,以获得最佳的用户体验、性能和安全性。
此页面提供了最佳实践,您可以在 构建应用程序、在进入生产环境之前 和 部署后 作为参考,以及您应该了解的 自动 Next.js 优化。
自动优化
这些 Next.js 优化默认启用,无需配置
- 代码分割:Next.js 会自动根据页面分割应用程序代码。这意味着在导航时仅加载当前页面所需的代码。您还可以考虑在适当的情况下 延迟加载 第三方库。
- 预取:当指向新路由的链接进入用户的视口时,Next.js 会在后台预取该路由。这使得导航到新路由几乎是即时的。您可以在适当的情况下选择退出预取。
- 自动静态优化:如果页面没有阻塞数据需求,Next.js 会自动确定该页面是静态的(可以预渲染)。优化的页面可以被缓存,并从多个 CDN 位置提供给最终用户。您可以在适当的情况下选择使用 服务器端渲染。
这些默认设置旨在提高应用程序的性能,并降低每次网络请求的数据传输成本和数量。
开发期间
在构建应用程序时,我们建议使用以下功能以确保最佳的性能和用户体验
路由和渲染
数据获取和缓存
- API 路由:使用路由处理程序访问您的后端资源,并防止敏感机密暴露给客户端。
- 数据缓存:验证您的数据请求是否正在被缓存,并在适当的情况下选择缓存。确保不使用
getStaticProps
的请求在适当的情况下被缓存。 - 增量静态再生:使用增量静态再生在静态页面构建后更新它们,而无需重新构建整个站点。
- 静态图像:使用
public
目录自动缓存应用程序的静态资源,例如图像。
UI 和可访问性
- 字体模块: 通过使用字体模块优化字体,该模块会自动将您的字体文件与其他静态资源一起托管,消除外部网络请求并减少 布局偏移。
<Image>
组件: 通过使用 Image 组件优化图像,该组件会自动优化图像、防止布局偏移并以现代格式(如 WebP 或 AVIF)提供图像。<Script>
组件: 通过使用 Script 组件优化第三方脚本,该组件会自动延迟脚本并防止其阻塞主线程。- ESLint: 使用内置的
eslint-plugin-jsx-a11y
插件尽早捕获可访问性问题。
安全性
- 环境变量: 确保您的
.env.*
文件已添加到.gitignore
中,并且只有公共变量以NEXT_PUBLIC_
为前缀。 - 内容安全策略: 考虑添加内容安全策略以保护您的应用程序免受各种安全威胁,例如跨站点脚本、点击劫持和其他代码注入攻击。
元数据和 SEO
<Head>
组件: 使用next/head
组件添加页面标题、描述等。
类型安全性
- TypeScript 和 TS 插件: 使用 TypeScript 和 TypeScript 插件获得更好的类型安全性,并帮助您尽早捕获错误。
发布前
在发布之前,您可以运行 next build
在本地构建您的应用程序并捕获任何构建错误,然后运行 next start
以在类似生产的环境中衡量应用程序的性能。
核心网络指标
- Lighthouse: 在隐身模式下运行 Lighthouse,以便更好地了解用户如何体验您的网站,并确定改进的领域。这是一个模拟测试,应与查看现场数据(例如核心网络指标)结合使用。
分析包
使用 @next/bundle-analyzer
插件 分析 JavaScript 包的大小,并识别可能影响应用程序性能的大型模块和依赖项。
此外,以下工具可以帮助您了解向应用程序添加新依赖项的影响
部署后
根据您部署应用程序的位置,您可能可以使用其他工具和集成来帮助您监控和改进应用程序的性能。
对于 Vercel 部署,我们推荐以下内容
- 分析: 内置的分析仪表板,可帮助您了解应用程序的流量,包括访客数量、页面浏览量等。
- 速度洞察: 基于访客数据的真实性能洞察,提供您网站在现场运行情况的实用视图。
- 日志记录: 运行时和活动日志,可帮助您调试问题并在生产环境中监控您的应用程序。或者,请参阅 集成页面 以获取第三方工具和服务的列表。
需要了解
要全面了解在 Vercel 上进行生产部署的最佳实践,包括提高网站性能的详细策略,请参阅 Vercel 生产检查清单。
遵循这些建议将有助于您为用户构建更快、更可靠、更安全的应用程序。
这有帮助吗?