يمكن لمعظم تطبيقات 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 (القيمة التلقائية هي 50 ميغابايت)، ويزيل الإدخالات الأقل استخدامًا مؤخرًا عندما تكون ذاكرة التخزين المؤقت ممتلئة. تحتوي كل نسخة عرض على ذاكرة تخزين مؤقت خاصة بها، والتي يتم فقدها عند إعادة تشغيل النسخة.
أنشِئ عملية تثبيت تتضمّن هذه التغييرات وأرسِلها إلى الفرع المنشور. بعد ذلك، انتظِر حتى تكتمل عملية طرح App Hosting.