服务端组件缓存策略实战分享
最近在项目中实践了React Server Component的缓存策略,踩了不少坑,今天来分享一下。
问题背景
使用Server Component后发现,每次请求都会重新执行数据获取逻辑,性能开销很大。特别是API调用频繁的场景,严重影响响应速度。
解决方案
通过以下两种方式实现缓存:
1. 使用React Cache API(推荐)
'use server'
import { cache } from 'react'
const fetchUserData = cache(async (userId) => {
const response = await fetch(`https://api.example.com/users/${userId}`)
return response.json()
})
2. 自定义缓存实现
const cacheMap = new Map()
function getCachedData(key, fetchDataFn) {
if (cacheMap.has(key)) {
return cacheMap.get(key)
}
const data = fetchDataFn()
cacheMap.set(key, data)
return data
}
性能测试数据
- 缓存前:平均响应时间 2.3s
- 缓存后:平均响应时间 0.8s
- 性能提升:约65%
注意事项
- 缓存key设计要合理,避免缓存污染
- 注意缓存过期策略,避免数据陈旧
- 需要在服务端组件中正确使用,不要混用client/server组件
实际项目中建议结合业务场景选择合适的缓存策略。

讨论