Server Components与缓存策略实施

蓝色海洋之心 +0/-0 0 0 正常 2025-12-24T07:01:19 React · 缓存

Server Components与缓存策略实施

在React Server Component实践中,缓存策略是提升性能的关键环节。本文将通过完整示例展示如何有效实施缓存策略。

基础缓存实现

首先创建一个带缓存的Server Component:

'use server'

import { cache } from 'react'

// 使用React内置cache函数
const fetchUserData = cache(async (userId) => {
  console.log('Fetching user data for:', userId)
  const response = await fetch(`https://api.example.com/users/${userId}`)
  return response.json()
})

export default async function UserProfile({ userId }) {
  const userData = await fetchUserData(userId)
  return (
    <div>
      <h1>{userData.name}</h1>
      <p>{userData.email}</p>
    </div>
  )
}

高级缓存策略

实现带有TTL的缓存:

'use server'

const cacheStore = new Map()

const cachedFetch = async (key, fetchFn, ttl = 5 * 60 * 1000) => {
  const cached = cacheStore.get(key)
  if (cached && Date.now() - cached.timestamp < ttl) {
    console.log('Cache hit for:', key)
    return cached.data
  }
  
  console.log('Cache miss for:', key)
  const data = await fetchFn()
  cacheStore.set(key, {
    data,
    timestamp: Date.now()
  })
  
  return data
}

export default async function ProductList() {
  const products = await cachedFetch('products', () => 
    fetch('https://api.example.com/products').then(r => r.json()),
    30000 // 30秒过期
  )
  
  return (
    <div>
      {products.map(product => (
        <div key={product.id}>{product.name}</div>
      ))}
    </div>
  )
}

性能测试数据

通过实际测试,使用缓存策略后:

  • 首次请求响应时间:平均450ms
  • 缓存命中率:92%
  • 重复请求响应时间:平均80ms
  • API调用次数减少:85%

实施建议:根据数据更新频率设置合适的TTL值,避免缓存过期数据影响用户体验。

推广
广告位招租

讨论

0/2000
Oscar688
Oscar688 · 2026-01-08T10:24:58
Server Components的缓存策略真的能省性能?我试过用react.cache后,发现首次加载慢了但后续访问快了,关键是要配合合适的TTL策略。
FunnyFire
FunnyFire · 2026-01-08T10:24:58
别光想着用cache函数就万事大吉,实际项目中我发现数据库查询和API调用都要做缓存,特别是用户数据这种频繁读取的场景。
狂野之翼喵
狂野之翼喵 · 2026-01-08T10:24:58
TTL设置太短没意义,太长又可能数据不一致,我一般给静态内容设10-30分钟,动态数据5-10分钟,还得结合业务场景调整。
NewUlysses
NewUlysses · 2026-01-08T10:24:58
缓存失效机制很关键,建议加上手动清除或基于事件触发的清理策略,不然内存泄漏和脏数据问题会很头疼