如何避免缓存特定的Nextjs api路由?



我有nextjs api route/api/auth/signout,它基本上只是清除特定的cookie并发送json返回

问题是,当我在Vercel中部署项目时,这个特定的API第一次正常工作(cookie清除并给出200响应),但后来它不工作(cookie未清除并给出304响应)。

我想知道,是否有办法避免缓存只针对这条路由?

解决这个问题的最好方法是什么?

您可以为每个API端点配置Cache-Control

https://nextjs.org/docs/api-reference/next.config.js/headers cache - control

在您的情况下,这样做可能会奏效:

res.setHeader('Cache-Control', 'no-store')

next.config.js上添加此配置

async headers() {
return [
{
source: '/api/<route-name>',
headers: [
{
key: 'Cache-Control',
value: 'no-store, max-age=0',
},
],
},
];
},

这更像是对你的用例的回答,而不是问题的标题:

我认为你应该把签出http端点看作是一个有副作用的,即用户会话的破坏(即使服务器端没有发生任何事情)。对于有副作用的http端点,建议使用暗示会产生副作用的适当http方法来调用它们,例如,在这种情况下,DELETE会很好。根据http规范,对http DELETE请求的响应不应该被缓存。

相关内容

  • 没有找到相关文章

最新更新