Next.js 13.2 API エンドポイントでのキャッシュの問題を回避するにはどうすればよいですか?

DDD
リリース: 2024-11-04 04:50:01
オリジナル
646 人が閲覧しました

How to Avoid Caching Issues in Next.js 13.2 API Endpoints?

Next.js 13.2 API エンドポイントのデータ キャッシュの問題を解決する方法

データを取得する API エンドポイントを使用して Next.js アプリケーションをデプロイする場合外部ソースからの場合、開発者は、基礎となるデータ ソースに加えられた変更に関係なく、キャッシュされたデータが一貫して表示されるという問題に遭遇する可能性があります。この動作は、本番環境の API ルートとサーバー コンポーネントに対する Next.js のキャッシュ メカニズムが原因である可能性があります。

このキャッシュの問題を解決するために、Next.js はキャッシュ動作を制御するためのオプションをいくつか提供しています。

Revalidate または Cache オプションを指定した Fetch() の使用

データのフェッチに fetch() を使用する場合、開発者は、Revalidate または Cache オプションを指定して、クエリごとのキャッシュ動作を制御できます:

<code class="js">fetch('https://...', { next: { revalidate: 10 } });
// OR
fetch('https://...', { cache: 'no-store' });</code>
ログイン後にコピー

再検証オプションは、キャッシュが再フェッチされるまでの秒数を指定します。キャッシュ オプションを使用すると、ブラウザが応答をキャッシュしないようにする no-store などの値を使用して、より詳細な制御が可能になります。

カスタム キャッシュ ルールにルート セグメント構成を使用する

fetch() がカスタム キャッシュ ルールで使用される場合、または axios などのライブラリを使用する場合、またはデータベースと直接対話する場合、開発者は Route Segment Config を使用できます。 Route Segment Config を使用すると、ルートごとにキャッシュ動作を定義できます。

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

import prisma from "./lib/prisma";

/*
  Bleow 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>
ログイン後にコピー

dynamic を "force-dynamic" に設定することで、Next.js は指定されたルートのキャッシュを無効にします。開発者は、Next.js ドキュメントに記載されているように、特定のキャッシュ要件に基づいて追加のオプションを検討できます。

以上がNext.js 13.2 API エンドポイントでのキャッシュの問題を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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