前端性能测试:Server Component vs Client Component
在React Server Component的实践中,我们通过实际测试对比了服务端组件与客户端组件的性能表现。
测试环境
- React版本: 18.2
- Node.js版本: 18.17
- 测试页面: 包含100个列表项的数据展示
测试代码示例
Server Component版本:
// ServerComponent.jsx
export default async function ServerComponent() {
const data = await fetchData(); // 服务端获取数据
return (
<div>
{data.map(item => (
<div key={item.id}>{item.name}</div>
))}
</div>
);
}
Client Component版本:
// ClientComponent.jsx
'use client';
import { useEffect, useState } from 'react';
export default function ClientComponent() {
const [data, setData] = useState([]);
useEffect(() => {
fetchData().then(setData);
}, []);
return (
<div>
{data.map(item => (
<div key={item.id}>{item.name}</div>
))}
</div>
);
}
性能测试数据
| 测试指标 | Server Component | Client Component | 差异 |
|---|---|---|---|
| 首屏渲染时间 | 120ms | 350ms | -69% |
| 初始HTML大小 | 2.1KB | 8.7KB | -76% |
| JavaScript包大小 | 0KB | 45KB | -100% |
| 首次交互延迟 | 15ms | 280ms | -95% |
结论
Server Component通过服务端渲染减少了客户端JavaScript的传输和执行,显著提升了页面加载性能。对于数据密集型应用,建议优先使用Server Component模式。
复现步骤:
- 创建React项目并启用Server Component支持
- 分别实现上述两个组件版本
- 使用Chrome DevTools Performance工具进行测试
- 对比网络面板中的资源加载情况

讨论