Maison >interface Web >js tutoriel >Pourquoi les données de route de mon API Next.js ne sont-elles pas mises à jour après le déploiement ?

Pourquoi les données de route de mon API Next.js ne sont-elles pas mises à jour après le déploiement ?

DDD
DDDoriginal
2024-11-01 17:22:30818parcourir

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

Mise en cache des données dans les routes API Next.js : dépannage des mises à jour

Lors du déploiement d'une application Next.js qui récupère les données d'une base de données via l'API points de terminaison, il est possible de rencontrer des problèmes où les données restent statiques malgré les modifications apportées à la base de données après le déploiement. La cause première réside souvent dans les mécanismes de mise en cache mis en œuvre par Next.js en mode production.

Comprendre la mise en cache dans Next.js

Dans le répertoire de l'application et en production, Next .js met en cache les données récupérées dans les routes API et les composants du serveur par défaut. Cela optimise les performances en réduisant les requêtes de base de données et en améliorant les temps de réponse. Cependant, cela peut interférer avec les mises à jour des données.

Désactivation de la mise en cache

Pour empêcher la mise en cache, vous pouvez modifier la méthode fetch() avec les options suivantes :

  • revalidate : Spécifie la fréquence à laquelle un appel fetch() doit revalider son cache, en secondes.
  • cache : Vous permet de contrôler le comportement de la mise en cache de la demande. "no-store" désactive entièrement la mise en cache.
<code class="javascript">fetch('https://...', { next: { revalidate: 10 } }); </code>

Configuration du segment d'itinéraire

Si vous n'utilisez pas fetch() ou si vous souhaitez configurer la mise en cache au niveau de la route, vous pouvez utiliser la configuration du segment de route. Cela vous permet de définir des options de mise en cache dans les composants d'itinéraire.

<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>

En appliquant ces ajustements de mise en cache, vous pouvez vous assurer que votre application Next.js récupère de nouvelles données de la base de données après le déploiement, en maintenant la précision et le temps réel. mises à jour.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn