unstable_cache

Warnung: Diese API wird durch use cache ersetzt, sobald sie stabil ist.

Mit unstable_cache können Sie die Ergebnisse aufwändiger Operationen wie Datenbankabfragen zwischenspeichern und sie über mehrere Anfragen hinweg wiederverwenden.

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);
  ...
}

Gut zu wissen:

  • Der Zugriff auf dynamische Datenquellen wie headers oder cookies innerhalb eines Cache-Bereichs wird nicht unterstützt. Wenn Sie diese Daten in einer zwischengespeicherten Funktion benötigen, verwenden Sie headers außerhalb der Funktion und übergeben Sie die erforderlichen dynamischen Daten als Argument.
  • Diese API nutzt den integrierten Data Cache von Next.js, um Ergebnisse über Anfragen und Deployments hinweg beizubehalten.

Parameter

const data = unstable_cache(fetchData, keyParts, options)()
  • fetchData: Eine asynchrone Funktion, die die zu cachenden Daten abruft. Es muss eine Funktion sein, die ein Promise zurückgibt.
  • keyParts: Ein zusätzliches Array von Schlüsseln, die den Cache weiter identifizieren. Standardmäßig verwendet unstable_cache bereits die Argumente und die stringifizierte Version Ihrer Funktion als Cache-Schlüssel. In den meisten Fällen ist dies optional; nur wenn Sie externe Variablen verwenden, ohne sie als Parameter zu übergeben, müssen Sie diesen Parameter nutzen. Es ist jedoch wichtig, innerhalb der Funktion verwendete Closures hinzuzufügen, wenn Sie sie nicht als Parameter übergeben.
  • options: Ein Objekt, das das Cache-Verhalten steuert. Es kann folgende Eigenschaften enthalten:
    • tags: Ein Array von Tags, die zur Steuerung der Cache-Invalidierung verwendet werden können. Next.js verwendet diese nicht zur eindeutigen Identifizierung der Funktion.
    • revalidate: Die Anzahl der Sekunden, nach denen der Cache neu validiert werden soll. Lassen Sie dies weg oder übergeben Sie false, um den Cache unbegrenzt oder bis zum Aufruf passender revalidateTag()- oder revalidatePath()-Methoden zu speichern.

Rückgabewert

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

Beispiel

import { unstable_cache } from 'next/cache'

export default async function Page({
  params,
}: {
  params: Promise<{ userId: string }>
}) {
  const { userId } = await params
  const getCachedUser = unstable_cache(
    async () => {
      return { id: userId }
    },
    [userId], // Fügen Sie die Benutzer-ID zum Cache-Schlüssel hinzu
    {
      tags: ['users'],
      revalidate: 60,
    }
  )

  //...
}

Versionsverlauf

VersionÄnderungen
v14.0.0unstable_cache eingeführt.

On this page