پیکربندی ذخیره‌سازی موقت سرور در Next.js

اکثر برنامه‌های Next.js در App Hosting می‌توانند پیش‌فرض‌های عادی Next.js را حفظ کنند. بااین‌حال، اگر نمونه‌هایتان با خطاهای Memory limit exceeded مواجه شد، ممکن است لازم باشد experimental.isrFlushToDisk: false را تنظیم کنید تا حافظه نهان در حافظه باقی بماند و از بازراه‌اندازی نمونه‌ها جلوگیری شود.

به‌طور پیش‌فرض، Next.js صفحه‌ها و داده‌هایی را که در زمان اجرا ارائه می‌کند، مانند صفحه‌های تولیدشده با بازتولید ایستا افزایشی (ISR)، پاسخ‌های کنترل‌کننده مسیر، و نتایج واکشی، ذخیره می‌کند. این ابزار آن‌ها را در حافظه نگه می‌دارد و همچنین آن‌ها را در فایل‌هایی در فهرست راهنمای .next برنامه‌تان می‌نویسد. Next.js این فایل‌ها را برنمی‌دارد.

در App Hosting، برنامه‌تان در Cloud Run اجرا می‌شود که سیستم فایل آن در حافظه است. فایل‌هایی که در آن نوشته می‌شوند جزو حافظه اختصاص‌داده‌شده برای هر نمونه ارائه‌دهنده (memoryMiB) محسوب می‌شوند تا زمانی‌که نمونه خاموش شود. اگر برنامه‌تان صفحه‌های متمایز زیادی را در زمان اجرا ارائه می‌دهد، برای مثال مسیرهای پویا با پارامترهایی که در زمان ساخت تولید نمی‌شوند، نمونه‌ها می‌توانند از حد مجاز حافظه خود فراتر روند و بازراه‌اندازی شوند. ‫Cloud Run سپس خطایی مانند Memory limit of 512 MiB exceeded with 515 MiB used را ثبت می‌کند. برای جزئیات بیشتر، Cloud Run مستندات مربوط به دسترسی به سیستم فایل را ببینید.

نگه داشتن حافظه نهان در حافظه

برای متوقف کردن Next.js از نوشتن حافظه پنهان خود در سیستم فایل، experimental.isrFlushToDisk را روی false در فایل next.config.js خود تنظیم کنید:

// @ts-check

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

module.exports = nextConfig;

سپس Next.js محتوای ذخیره‌شده در حافظه نهان را فقط در حافظه نگه می‌دارد، تا cacheMaxMemorySize (به‌طور پیش‌فرض ۵۰ مگابایت)، و وقتی حافظه نهان پر می‌شود، ورودی‌هایی را که اخیراً کمتر استفاده شده‌اند حذف می‌کند. هر نمونه ارائه‌دهنده حافظه نهان خودش را دارد که وقتی نمونه بازراه‌اندازی می‌شود، ازدست می‌رود.

ثبتی ایجاد کنید که شامل این تغییرات باشد و آن را به شاخه فعال خود روانه‌سازی کنید. سپس، منتظر بمانید تا عرضه App Hosting تکمیل شود.