无论设置了哪个选项为无缓存,NextJS App 目录始终会缓存获取的数据

问题描述 投票:0回答:3

因此,我尝试了互联网上所有可能的建议,但获取的数据仍然被缓存。我知道这一点是因为我使用的是 mongodb 服务器,我向服务器添加数据,我在服务器上看到数据,但在网站上数据是以前的(在 NextJS 项目构建之前)。构建后它没有显示数据库中的新数据,这让我认为 fetch 已被缓存。

我在下面尝试过;

export const revalidate = 0;
export const fetchCache = "force-no-store";
await fetch("/api/myApiRoute", {
      cache: "no-store" // I also tried "no-cache",
    });

我也在手动刷新页面并使用

router.refresh()
。尽管如此,来自 fetch 的数据仍然被缓存。

如何获取更新的数据,而不是缓存的数据?

javascript reactjs next.js fetch next.js13
3个回答
0
投票

终于,我找到了解决办法。在我看来,该文档有点误导。

在文档中,他们建议在客户端组件中使用以下内容,以实现无缓存行为

await fetch("/api/myApiRoute", {
      cache: "no-store" // I also tried "no-cache",
    });

但这不起作用,因为你还必须把

export const revalidate = 10;

在“/api/myApiRoute”。我再说一遍,你不要将这一行放入你的组件中,因为如果你这样做,它就不起作用。您将此行 放入 API Route.jsx 中。

之后,我就可以看到更新的数据了。


0
投票

没有缓存应该起作用。您可以看到控制台显示在开发环境中获取时缓存丢失。 (否则显示命中)


0
投票

伙计,你救了我的命!我一整天都在寻找这个问题的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.