Menu

unstable_cache

In Version 15 empfehlen wir stattdessen die Verwendung der use cache-Direktive.

unstable_cache ermöglicht es Ihnen, die Ergebnisse aufwendiger Operationen wie Datenbankabfragen zwischenzuspeichern und über mehrere Anfragen hinweg wiederzuverwenden.

import { getUser } from './data';
import { unstable_cache } from 'next/cache';
 
const getCachedUser = unstable_cache(
  async (id) => getUser(id),
  ['my-app-user']
);
 
export default async function Component({ userID }) {
  const user = await getCachedUser(userID);
  ...
}

Hinweis:

  • Der Zugriff auf dynamische Datenquellen wie headers oder cookies innerhalb eines Cache-Bereichs wird nicht unterstützt. Wenn Sie diese Daten innerhalb einer zwischengespeicherten Funktion benötigen, verwenden Sie headers außerhalb der zwischengespeicherten Funktion und übergeben Sie die erforderlichen dynamischen Daten als Argument.
  • Diese API verwendet Next.js' integrierte Datenzwischenspeicherung, um das Ergebnis über Anfragen und Bereitstellungen hinweg zu speichern.

Warnung: Diese API ist instabil und kann sich in Zukunft ändern. Wir werden Migrationsdokumentation und Codemods bereitstellen, falls erforderlich, während diese API stabilisiert wird.

Parameter

const data = unstable_cache(fetchData, keyParts, options)()
  • fetchData: Dies ist eine asynchrone Funktion, die die Daten abruft, die Sie zwischenspeichern möchten. Es muss eine Funktion sein, die ein Promise zurückgibt.
  • keyParts: Dies ist ein zusätzliches Array von Schlüsseln, das die Identifikation im Cache weiter ergänzt. Standardmäßig verwendet unstable_cache bereits die Argumente und die Zeichenfolgenversion Ihrer Funktion als Cache-Schlüssel. Es ist in den meisten Fällen optional; Sie müssen es nur verwenden, wenn Sie externe Variablen ohne Übergabe als Parameter verwenden. Es ist jedoch wichtig, Closures hinzuzufügen, die innerhalb der Funktion verwendet werden, wenn Sie sie nicht als Parameter übergeben.
  • options: Dies ist ein Objekt, das steuert, wie sich der Cache verhält. Es kann die folgenden Eigenschaften enthalten:
    • tags: Ein Array von Tags, die zur Steuerung der Cache-Invalidierung verwendet werden können. Next.js wird dies nicht zur eindeutigen Identifizierung der Funktion verwenden.
    • revalidate: Die Anzahl der Sekunden, nach denen der Cache neu validiert werden soll. Weglassen oder false übergeben, um unbegrenzt oder bis zum Aufruf der übereinstimmenden revalidateTag()- oder revalidatePath()-Methoden zu speichern.

Rückgabe

unstable_cache gibt eine Funktion zurück, die beim Aufrufen ein Promise zurückgibt, das die zwischengespeicherten Daten auflöst. Wenn sich die Daten nicht im Cache befinden, wird die bereitgestellte Funktion aufgerufen und ihr Ergebnis zwischengespeichert und zurückgegeben.

Beispiel

app/page.tsx
TypeScript
import { unstable_cache } from 'next/cache'
 
export default async function Page({ params }: { params: { userId: string } }) {
  const getCachedUser = unstable_cache(
    async () => {
      return { id: params.userId }
    },
    [params.userId], // Benutzer-ID zum Cache-Schlüssel hinzufügen
    {
      tags: ['users'],
      revalidate: 60,
    }
  )
 
  //...
}

Versionsverlauf

VersionÄnderungen
v14.0.0unstable_cache eingeführt.