首頁  >  文章  >  web前端  >  為什麼我的 Next.js API 路由資料在部署後沒有更新?

為什麼我的 Next.js API 路由資料在部署後沒有更新?

DDD
DDD原創
2024-11-01 17:22:30741瀏覽

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