Next.js'de sunucu önbelleğe almayı yapılandırma

App Hosting üzerindeki çoğu Next.js uygulaması, normal Next.js varsayılanlarını koruyabilir. Ancak örneklerinizde Memory limit exceeded hataları oluşursa önbelleği bellekte tutmak ve örneklerin yeniden başlatılmasını önlemek için experimental.isrFlushToDisk: false değerini ayarlamanız gerekebilir.

Next.js, çalışma zamanında oluşturduğu sayfaları ve verileri varsayılan olarak önbelleğe alır. Artımlı Statik Yeniden Oluşturma (ISR) ile oluşturulan sayfalar, rota işleyici yanıtları ve getirme sonuçları buna örnek verilebilir. Bunları bellekte tutar ve uygulamanızın .next dizinindeki dosyalara yazar. Next.js bu dosyaları kaldırmaz.

App Hosting üzerinde uygulamanız, dosya sisteminin bellekte olduğu Cloud Run üzerinde çalışır. Bu dizine yazılan dosyalar, örnek kapatılana kadar her bir sunum örneği (memoryMiB) için ayrılan bellekten düşülür. Uygulamanız çalışma zamanında çok sayıda farklı sayfa oluşturuyorsa (ör. derleme zamanında oluşturulmayan parametreler içeren dinamik rotalar) örnekler bellek sınırını aşabilir ve yeniden başlatılabilir. Cloud Run, ardından şu şekilde bir hata kaydeder: Memory limit of 512 MiB exceeded with 515 MiB used. Ayrıntılar için dosya sistemi erişimi ile ilgili Cloud Run belgelerine bakın.

Önbelleği bellekte tutma

Next.js'nin önbelleğini dosya sistemine yazmasını durdurmak için next.config.js dosyanızda experimental.isrFlushToDisk değerini false olarak ayarlayın:

// @ts-check

/** @type {import('next').NextConfig} */
const nextConfig = {
  experimental: {
    isrFlushToDisk: false,
  },
};

module.exports = nextConfig;

Next.js daha sonra önbelleğe alınmış içeriği yalnızca bellekte, cacheMaxMemorySize'a kadar (varsayılan 50 MB) tutar ve önbellek dolduğunda en az kullanılan girişleri kaldırır. Her yayınlama örneğinin kendi önbelleği vardır ve örnek yeniden başlatıldığında bu önbellek kaybolur.

Bu değişiklikleri içeren bir commit oluşturun ve canlı dalınıza aktarın. Ardından, App Hosting kullanıma sunma işleminin tamamlanmasını bekleyin.