デプロイ後に Next.js API ルート データが更新されないのはなぜですか?

DDD
リリース: 2024-11-01 17:22:30
オリジナル
740 人が閲覧しました

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

Next.js API ルートのデータ キャッシュ: 更新のトラブルシューティング

API 経由でデータベースからデータを取得する Next.js アプリケーションをデプロイする場合エンドポイントでは、展開後にデータベースに変更が加えられたにもかかわらず、データが静的なままになるという問題が発生する可能性があります。根本的な原因は、多くの場合、本番モードの Next.js によって実装されたキャッシュ メカニズムにあります。

Next.js のキャッシュについて

アプリ ディレクトリと本番モードでは、次の手順を実行します。 .js は、デフォルトで API ルートおよびサーバー コンポーネントで取得したデータをキャッシュします。これにより、データベース クエリが減り、応答時間が短縮されてパフォーマンスが最適化されます。ただし、データの更新が妨げられる可能性があります。

キャッシュの無効化

キャッシュを防止するには、次のオプションを使用して fetch() メソッドを変更できます:

  • revalidate: fetch() 呼び出しがキャッシュを再検証する頻度を秒単位で指定します。
  • cache: キャッシュ動作を制御できます。リクエストの。 「no-store」はキャッシュを完全に無効にします。
<code class="javascript">fetch('https://...', { next: { revalidate: 10 } }); </code>
ログイン後にコピー

Route Segment Config

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!