You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 17:09:47