我已经在Vercel上部署了一个NextJS(13.2.4)应用程序,它在本地工作得很好。我正在从一个组件发出一个简单的获取请求('use client')。
该请求指向/app目录中的一个路由,其中有一个对第三方服务的API调用。
正如我上面提到的,它在本地工作正常,但在Vercel上不行。当我在部署的应用程序上发出获取请求时,它第一次正常工作,但它缓存了响应,并且再也没有获得新的数据。
它似乎在刷新数据并进行网络调用,但它的速度超级快,数据根本不会改变(它应该)。
我试过添加cache: “no-store”
到获取请求,但没有运气。
谢谢你的帮助,如果需要更多的信息,我很乐意提供。
1条答案
按热度按时间tzdcorbm1#
我一整天都在用头撞这个。Vercel上的Next13一直在缓存我的google api调用。
我找到的最好的答案是Youssouf Oumar的这个:
How to avoid caching in the app directory of Next.js?
以下是文档中特定部分的链接:
正在重新验证静态数据
在生产环境中,Next13似乎将大多数fetch调用缓存在app文件夹中(尽管我有两个对Hubspot的调用没有缓存)。如果你在route.js函数中做一个普通的提取,你应该能够添加"{cache:"no-store "}"添加到页中的提取中以防止缓存。
然而,这对我不起作用,因为我使用的是google api sdk。
最终对我有用的是将revalidate变量导出为route.js文件中的0。
这修复了页面中的缓存,我在那里获取了这个,现在我正在获取当前数据(谢天谢地)。
我希望这对你有帮助!