首页 >web前端 >js教程 >为什么我的 Next.js API 路由数据在部署后没有更新?

为什么我的 Next.js API 路由数据在部署后没有更新?

DDD
DDD原创
2024-11-01 17:22:30818浏览

Why Isn't My Next.js API Route Data Updating After Deployment?

Next.js API 路由中的数据缓存:更新故障排除

部署通过 API 从数据库获取数据的 Next.js 应用程序时端点,可能会遇到这样的问题:尽管部署后数据库发生了更改,但数据仍保持静态。根本原因通常在于 Next.js 在生产模式下实现的缓存机制。

了解 Next.js 中的缓存

在应用程序目录和生产环境中,Next .js 默认缓存在 API 路由和服务器组件中检索的数据。这通过减少数据库查询和缩短响应时间来优化性能。但是,它会干扰数据更新。

禁用缓存

要防止缓存,您可以使用以下选项修改 fetch() 方法:

  • revalidate: 指定 fetch() 调用重新验证其缓存的频率(以秒为单位)。
  • cache: 允许您控制缓存行为的请求。 “no-store”完全禁用缓存。
<code class="javascript">fetch('https://...', { next: { revalidate: 10 } }); </code>

路由段配置

如果您不使用 fetch() 或想要配置缓存在路由级别,您可以使用路由段配置。这允许您在路由组件中设置缓存选项。

<code class="javascript">// layout.js OR page.js OR route.js

import prisma from './lib/prisma';

/*
  Below option is when you want no caching at all, there are more options
  on the doc depending on your needs. 
*/
export const dynamic = "force-dynamic";

async function getPosts() {
  const posts = await prisma.post.findMany();
  return posts;
}

export default async function Page() {
  const posts = await getPosts();
  // ...
}</code>

通过应用这些缓存调整,您可以确保您的 Next.js 应用程序在部署后从数据库检索最新数据,保持准确性和实时性更新。

以上是为什么我的 Next.js API 路由数据在部署后没有更新?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn