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

xmjla07d  于 2023-04-30  发布在  其他
关注(0)|答案(3)|浏览(151)

我有nextjs API route /api/auth/signout,它基本上只是清除特定的cookie并发送json回来。
问题是,当我在Vercel中部署项目时,这个特定的API第一次正常工作(cookie被清除并给出200响应),但后来它不工作(cookie未被清除并给出304响应)。
我想知道,有没有什么方法可以避免缓存只为这条路线?
解决此问题的最佳方法是什么?

vs91vp4v

vs91vp4v1#

您可以为每个API端点配置Cache-Control标头
https://nextjs.org/docs/api-reference/next.config.js/headers#cache-control
在你的情况下,这样的东西可能会奏效:

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

kmynzznz2#

next.config.js上添加了此配置

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

svmlkihl3#

这更像是对你的用例的回答,而不是问题的标题:
我认为您应该将 checkout http端点视为具有副作用i的端点即用户会话的破坏(即使服务器端可能没有发生任何事情)。对于有副作用的http端点,建议使用适当的http方法调用它们,这意味着将发生副作用e。在这种情况下,DELETE将是好的。根据http规范,不应该缓存对http DELETE请求的响应。

相关问题