Next.js中能否定义可在getServerProps中设置的全局数组用作缓存?
在Next.js中用全局数组做缓存是否可行?
可行,但存在关键限制,需要根据部署场景权衡:
- 全局数组可以在Node.js环境中定义(比如单独文件导出),
getServerProps作为服务端运行函数,能正常访问和修改这个数组。 - 核心限制1:多进程环境下缓存不共享。Next.js生产部署时通常是多进程/多实例运行,每个进程会维护独立的全局数组副本,不同请求命中不同实例时,缓存数据不一致。
- 核心限制2:无持久化能力。服务端重启后,全局数组里的缓存会全部丢失,无法保留数据。
- 仅适合开发环境、单实例部署的临时缓存场景;生产环境建议用Redis等专门的分布式缓存工具来保证数据一致性和持久化。
简单实现示例
创建缓存模块 cache.js:
let globalCache = []; export const setCache = (data) => { globalCache = [...globalCache, ...data]; }; export const getCache = () => [...globalCache];
在页面的getServerProps中使用:
// pages/example.js import { setCache, getCache } from '../cache'; export async function getServerProps() { // 模拟从API获取数据 const apiData = await fetch('https://api.example.com/list').then(res => res.json()); // 更新缓存 setCache(apiData); // 获取当前缓存内容 const currentCache = getCache(); return { props: { currentCache } }; }
内容的提问来源于stack exchange,提问作者Mohammad Miras
相关产品推荐
相关产品推荐

