mirror of
https://github.com/bitsocialnet/5chan.git
synced 2026-08-03 07:41:04 +02:00
* chore(ai-workflow): track repo-managed review tooling * fix(ai-workflow): remove repo-specific path assumptions Make shared workflow hooks and APK testing guidance resolve paths from the repo and contributor environment so the tooling works for all contributors, not just one machine.
42 lines
1.3 KiB
Markdown
42 lines
1.3 KiB
Markdown
---
|
|
title: Cross-Request LRU Caching
|
|
impact: HIGH
|
|
impactDescription: caches across requests
|
|
tags: server, cache, lru, cross-request
|
|
---
|
|
|
|
## Cross-Request LRU Caching
|
|
|
|
`React.cache()` only works within one request. For data shared across sequential requests (user clicks button A then button B), use an LRU cache.
|
|
|
|
**Implementation:**
|
|
|
|
```typescript
|
|
import { LRUCache } from 'lru-cache'
|
|
|
|
const cache = new LRUCache<string, any>({
|
|
max: 1000,
|
|
ttl: 5 * 60 * 1000 // 5 minutes
|
|
})
|
|
|
|
export async function getUser(id: string) {
|
|
const cached = cache.get(id)
|
|
if (cached) return cached
|
|
|
|
const user = await db.user.findUnique({ where: { id } })
|
|
cache.set(id, user)
|
|
return user
|
|
}
|
|
|
|
// Request 1: DB query, result cached
|
|
// Request 2: cache hit, no DB query
|
|
```
|
|
|
|
Use when sequential user actions hit multiple endpoints needing the same data within seconds.
|
|
|
|
**With Vercel's [Fluid Compute](https://vercel.com/docs/fluid-compute):** LRU caching is especially effective because multiple concurrent requests can share the same function instance and cache. This means the cache persists across requests without needing external storage like Redis.
|
|
|
|
**In traditional serverless:** Each invocation runs in isolation, so consider Redis for cross-process caching.
|
|
|
|
Reference: [https://github.com/isaacs/node-lru-cache](https://github.com/isaacs/node-lru-cache)
|