含middleware、getStaticProps等场景的请求频次及缓存方案咨询
Next.js 服务器请求频率与缓存选型问题解答
问题1:同时存在middleware、getStaticProps及_app.tsx中getInitialProps时,客户端请求Vercel服务器的频率?
- 核心点在于:
_app.tsx里的getInitialProps会直接禁用所有页面的静态优化——哪怕页面本身配置了getStaticProps也没用,所有页面都会被强制转为SSR(服务器端渲染)模式。 - 这种情况下,客户端的每一次页面访问请求都会触发Vercel服务器的处理:middleware会在每次请求时执行(边缘层),接着服务器会执行SSR逻辑渲染页面,完全没有静态页面缓存复用的空间。
问题2:带rewrites的middleware用node-cache、页面配getStaticProps/getStaticPaths、_app挂getInitialProps时的请求频率,及缓存选型?
请求频率情况
- 还是受
_app.tsx中getInitialProps的影响,所有页面依然会被强制转为SSR模式,客户端每一次页面访问都会触发Vercel服务器请求。页面配置的getStaticProps和getStaticPaths会被忽略,没法生成静态页面让客户端直接复用。
缓存选型建议
- 不适合用node-cache在Vercel服务器缓存:
- node-cache是内存级缓存,而Vercel的Serverless/边缘函数是无状态、按需创建的,函数实例销毁后缓存就没了;而且多个函数实例之间的缓存不共享,缓存命中率极低,基本起不到有效缓存的作用。
- 更推荐选用Redis:
- Redis是分布式缓存系统,能跨多个Vercel函数实例共享缓存数据,还支持持久化存储,适合在Serverless环境下缓存频繁访问的通用数据(比如配置信息、高频查询结果),能有效减少服务器重复计算的压力,提升响应速度。
内容的提问来源于stack exchange,提问作者Shreyas Chorge
相关产品推荐
相关产品推荐

