แอป Next.js ส่วนใหญ่ใน App Hosting สามารถใช้ค่าเริ่มต้นของ Next.js ตามปกติได้
อย่างไรก็ตาม หากอินสแตนซ์พบข้อผิดพลาด Memory limit exceeded คุณอาจต้องตั้งค่า experimental.isrFlushToDisk: false เพื่อเก็บแคชไว้ในหน่วยความจำและป้องกันไม่ให้อินสแตนซ์รีสตาร์ท
โดยค่าเริ่มต้น Next.js จะแคชหน้าเว็บและข้อมูลที่แสดงผลที่รันไทม์ เช่น หน้าเว็บที่สร้างด้วย Incremental Static Regeneration (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 MB) และนำรายการที่ใช้ล่าสุดออกเมื่อแคชเต็ม อินสแตนซ์การแสดงผลแต่ละรายการมีแคชของตัวเอง ซึ่งจะหายไปเมื่ออินสแตนซ์รีสตาร์ท
สร้างคอมมิตที่มีการเปลี่ยนแปลงเหล่านี้และพุชไปยังสาขาที่ใช้งานอยู่ จากนั้นรอให้การเปิดตัว App Hosting เสร็จสมบูรณ์