第四章

渲染模式
Next.js SEO的核心

理解服务器组件与客户端组件的区别,并掌握SSG、SSR、ISR三种渲染策略,是最大化Next.js SEO潜力的关键。

核心概念
预计阅读:50分钟
策略选择

4.1 理解App Router的渲染环境

在App Router中,组件默认是服务器组件,这是SEO的基石,因为它们在服务器上渲染成HTML。需要交互性的组件则通过 `'use client'` 指令标记为客户端组件

服务器组件 vs 客户端组件

服务器组件 (默认)

  • 在服务器上渲染
  • 代码不发送到客户端
  • 可以直接访问后端资源 (数据库, 文件系统)
  • SEO友好,直接输出HTML
  • 不支持交互 (useState, useEffect等)
// app/page.tsx (Server Component by default)
import { db } from '@/lib/db';

// This function runs ONLY on the server
async function MyServerComponent() {
  const data = await db.items.findMany();

  return (
    <div>
      {data.map(item => <p key={item.id}>{item.name}</p>)}
    </div>
  );
}
// Client does not receive this component's code.
// Client only receives the final rendered HTML.

4.2 Next.js中的渲染策略实践

Next.js提供了多种渲染策略,以适应不同场景的需求。选择正确的策略对性能和SEO至关重要。

渲染策略模拟器

静态站点生成 (SSG)

在构建时生成页面,每次访问都提供相同的文件。速度最快,SEO极佳。

实现方式 (App Router)
// 默认行为,或使用
fetch('...', { cache: 'force-cache' });
优点
  • 加载极快
  • 高可靠性
  • CDN友好
缺点
  • 内容更新需要重新构建
  • 不适合动态数据

页面生成时间

8:00:00 AM
页面在构建时生成,时间固定。

4.3 如何选择渲染策略?

根据页面的数据需求和内容更新频率来选择最合适的渲染策略。

使用 SSG (静态站点生成)

适用场景:博客文章、文档、营销页面、关于我们等内容不经常变化的页面。

判断依据:页面内容可以提前生成,并且对所有用户都一样。

使用 SSR (服务器端渲染)

适用场景:用户仪表盘、购物车、需要根据用户身份展示不同内容的页面。

判断依据:页面内容高度个性化,或依赖于实时数据。

使用 ISR (增量静态再生)

适用场景:热门新闻、商品列表、社交媒体 Feed 等内容会更新但不需要实时反映的页面。

判断依据:页面内容会定期更新,但可以接受一定的延迟。

第四章总结

核心概念

  • 服务器组件是默认,用于性能和SEO。
  • 客户端组件用于交互,需 `'use client'` 声明。
  • SSG提供最佳性能,SSR保证数据最新。
  • ISR是SSG和SSR的完美结合。

下章预告

下一章将学习如何利用Next.js的内置工具进行性能优化,重点关注Core Web Vitals、字体和脚本优化。

进入下一章