我有一个使用nextjs 13和应用路由器的nextjs应用。一个端点返回一个randomInt:
import { randomInt } from "crypto";
import { NextResponse } from "next/server";
export async function GET() {
return NextResponse.json({ revenue: randomInt(100) });
}
字符串
在local中,每次我加载这个端点时,我都会得到一个不同的数字。但是在vercel上的prod中,我总是得到相同的数字,就像它被缓存了一样。我如何禁用它?
3条答案
按热度按时间xeufq47z1#
如果问题确实出在该高速缓存上,你可以尝试使用fetch函数参数。类似于:
字符串
还有一些其他的参数和选项可以查找,只要在他们的网站上或在“RequestInit”接口中查找即可。参考:https://nextjs.org/docs/app/api-reference/functions/fetch。
nwo49xxi2#
我也试过禁用他们文档中提到的该高速缓存,但是没有用
1.基于时间的再验证:
字符串
1.按需再验证:
型
1.在服务器(API/gettasks/route.ts)上,我尝试使用revalidateTag方法禁用该高速缓存。
型
1.但是请求仍然具有相同的
x-Vercel-Cache: HIT
而不是x-Vercel-Cache: MISS
1.类似的问题已经向他们报告,目前处于开放状态已有一年多。
https://github.com/vercel/next.js/issues/42112
qlfbtfca3#
当打开API端点时,如https://mysite.vercel.app/api/GetData显示相同的数据,即使数据应该得到更新,您可以在API路由文件的末尾添加以下行。
字符串