Die meisten Next.js-Anwendungen in App Hosting können die normalen Next.js-Standardeinstellungen beibehalten.
Wenn bei Ihren Instanzen jedoch Memory limit exceeded-Fehler auftreten, müssen Sie möglicherweise experimental.isrFlushToDisk: false festlegen, damit der Cache im Arbeitsspeicher bleibt und Instanzen nicht neu gestartet werden.
Standardmäßig speichert Next.js die Seiten und Daten, die zur Laufzeit gerendert werden, im Cache, z. B. Seiten, die mit Incremental Static Regeneration (ISR) generiert wurden, Antworten von Routen-Handlern und Abrufergebnisse. Sie werden im Arbeitsspeicher gespeichert und auch in Dateien im Verzeichnis .next Ihrer Anwendung geschrieben. Next.js entfernt diese Dateien nicht.
In App Hosting wird Ihre Anwendung in Cloud Run ausgeführt, wobei sich das Dateisystem im Arbeitsspeicher befindet. Dateien, die in dieses Verzeichnis geschrieben werden, werden auf die Arbeitsspeicherzuweisung angerechnet, die jeder Bereitstellungsinstanz (memoryMiB) zugewiesen ist, bis die Instanz heruntergefahren wird. Wenn Ihre Anwendung zur Laufzeit viele verschiedene Seiten rendert, z. B. dynamische Routen mit Parametern, die nicht zur Build-Zeit generiert werden, können Instanzen ihr Speicherlimit überschreiten und neu gestartet werden. Cloud Run protokolliert dann einen Fehler wie Memory limit of 512 MiB exceeded with 515 MiB used. Weitere Informationen finden Sie in der Cloud Run-Dokumentation zum Dateisystemzugriff.
Cache im Arbeitsspeicher behalten
Wenn Sie verhindern möchten, dass Next.js seinen Cache in das Dateisystem schreibt, setzen Sie experimental.isrFlushToDisk in Ihrer next.config.js-Datei auf false:
// @ts-check
/** @type {import('next').NextConfig} */
const nextConfig = {
experimental: {
isrFlushToDisk: false,
},
};
module.exports = nextConfig;
Next.js speichert dann im Cache gespeicherte Inhalte nur im Arbeitsspeicher, bis zu cacheMaxMemorySize (Standard: 50 MB), und entfernt die am wenigsten verwendeten Einträge, wenn der Cache voll ist. Jede Bereitstellungsinstanz hat einen eigenen Cache, der beim Neustart der Instanz verloren geht.
Erstellen Sie einen Commit, der diese Änderungen enthält, und übertragen Sie ihn per Push an Ihren Live-Zweig. Warten Sie dann, bis der Roll-out von App Hosting abgeschlossen ist.