Większość aplikacji Next.js na platformie App Hosting może zachować normalne ustawienia domyślne Next.js.
Jeśli jednak w instancjach wystąpią błędy Memory limit exceeded, może być konieczne ustawienie experimental.isrFlushToDisk: false, aby zachować pamięć podręczną w pamięci i zapobiec ponownemu uruchamianiu instancji.
Domyślnie Next.js przechowuje w pamięci podręcznej strony i dane, które renderuje w czasie działania, takie jak strony wygenerowane za pomocą przyrostowej regeneracji statycznej (ISR), odpowiedzi modułu obsługi tras i wyniki pobierania. Są one przechowywane w pamięci i zapisywane w plikach w katalogu .next aplikacji. Next.js nie usuwa tych plików.
W usłudze App Hosting aplikacja działa w środowisku Cloud Run, w którym system plików znajduje się w pamięci. Zapisane w nim pliki są wliczane do alokacji pamięci przydzielonej każdej instancji wyświetlania (memoryMiB), dopóki instancja nie zostanie wyłączona. Jeśli aplikacja renderuje wiele różnych stron w czasie działania, na przykład dynamiczne trasy z parametrami, które nie są generowane w czasie kompilacji, instancje mogą przekroczyć limit pamięci i zostać ponownie uruchomione. Cloud Run rejestruje błąd, np. Memory limit of 512 MiB exceeded with 515 MiB used. Szczegółowe informacje znajdziesz w dokumentacji Cloud Run dotyczącej dostępu do systemu plików.
Przechowywanie pamięci podręcznej w pamięci RAM
Aby uniemożliwić Next.js zapisywanie pamięci podręcznej w systemie plików, ustaw experimental.isrFlushToDisk na false w pliku next.config.js:
// @ts-check
/** @type {import('next').NextConfig} */
const nextConfig = {
experimental: {
isrFlushToDisk: false,
},
};
module.exports = nextConfig;
Next.js przechowuje wtedy treści z pamięci podręcznej tylko w pamięci, do cacheMaxMemorySize (domyślnie 50 MB), i usuwa najmniej używane wpisy, gdy pamięć podręczna jest pełna. Każda instancja wyświetlania ma własną pamięć podręczną, która jest tracona po ponownym uruchomieniu instancji.
Utwórz zatwierdzenie, które zawiera te zmiany, i prześlij je do aktywnej gałęzi. Następnie poczekaj na zakończenie wdrażania App Hosting.