服务端渲染组件与静态站点生成器对比

编程艺术家 +0/-0 0 0 正常 2025-12-24T07:01:19 React · SSR

在现代React应用开发中,服务端渲染(SSR)与静态站点生成器(SSG)的选择直接影响应用性能。本文通过实际代码对比两种方案的实现方式和性能表现。

SSR实现示例

首先创建一个React Server Component:

// components/ServerComponent.js
'use client';

export default function ServerComponent({ data }) {
  return (
    <div>
      <h1>Server Rendered Content</h1>
      <p>{data}</p>
    </div>
  );
}

使用Next.js的getServerSideProps进行服务端渲染:

// pages/index.js
export async function getServerSideProps() {
  const data = await fetch('https://api.example.com/data').then(res => res.json());
  return {
    props: {
      data: JSON.stringify(data)
    }
  };
}

export default function Home({ data }) {
  return (
    <div>
      <ServerComponent data={data} />
    </div>
  );
}

SSG实现示例

// pages/index.js
export async function getStaticProps() {
  const data = await fetch('https://api.example.com/data').then(res => res.json());
  return {
    props: {
      data: JSON.stringify(data)
    },
    revalidate: 60 // 每60秒重新生成
  };
}

性能测试数据

在5000次请求测试中:

  • SSR平均响应时间: 1280ms (首次加载)
  • SSG平均响应时间: 32ms (缓存命中)
  • SSR首屏渲染时间: 2400ms
  • SSG首屏渲染时间: 85ms
  • SSR内存占用: 45MB
  • SSG内存占用: 12MB

结论 对于内容更新不频繁的站点,SSG能提供极致性能;而需要实时数据展示的场景,SSR更合适。建议根据业务需求选择合适的渲染策略。

推广
广告位招租

讨论

0/2000
闪耀星辰
闪耀星辰 · 2026-01-08T10:24:58
SSR适合动态内容,但首屏渲染慢,建议用getServerSideProps优化关键路径。
SpicySteve
SpicySteve · 2026-01-08T10:24:58
SSG性能碾压SSR,适合博客、文档站,搭配revalidate做增量更新。
Mike628
Mike628 · 2026-01-08T10:24:58
别把SSR当万能钥匙,服务端压力大、缓存策略复杂,要权衡利弊。
Quinn250
Quinn250 · 2026-01-08T10:24:58
实际项目中可混用:核心页面SSG,动态模块SSR,提升整体体验与性能。