App Hosting पर मौजूद ज़्यादातर Next.js ऐप्लिकेशन, Next.js की सामान्य डिफ़ॉल्ट सेटिंग को बनाए रख सकते हैं.
हालांकि, अगर आपके इंस्टेंस में Memory limit exceeded गड़बड़ियां आती हैं, तो आपको experimental.isrFlushToDisk: false सेट करना पड़ सकता है. इससे कैश मेमोरी को सेव रखा जा सकता है और इंस्टेंस को रीस्टार्ट होने से रोका जा सकता है.
डिफ़ॉल्ट रूप से, Next.js उन पेजों और डेटा को कैश मेमोरी में सेव करता है जिन्हें वह रनटाइम के दौरान रेंडर करता है. जैसे, इंक्रीमेंटल स्टैटिक रीजेनरेशन (आईएसआर) की मदद से जनरेट किए गए पेज, रूट हैंडलर के रिस्पॉन्स, और फ़ेच किए गए नतीजे. यह उन्हें मेमोरी में रखता है और आपके ऐप्लिकेशन की .next डायरेक्ट्री में मौजूद फ़ाइलों में भी लिखता है. Next.js इन फ़ाइलों को नहीं हटाता है.
App Hosting पर, आपका ऐप्लिकेशन Cloud Run पर चलता है. यहां फ़ाइल सिस्टम, मेमोरी में होता है. इसमें सेव की गई फ़ाइलें, हर सर्विंग इंस्टेंस (memoryMiB) के लिए तय की गई मेमोरी में तब तक गिनी जाती हैं, जब तक इंस्टेंस बंद नहीं हो जाता. अगर आपका ऐप्लिकेशन रनटाइम के दौरान कई अलग-अलग पेज रेंडर करता है, तो इंस्टेंस अपनी मेमोरी की सीमा को पार कर सकते हैं और रीस्टार्ट हो सकते हैं. उदाहरण के लिए, ऐसे पैरामीटर वाले डाइनैमिक रूट जो बिल्ड टाइम के दौरान जनरेट नहीं होते. Cloud Run इसके बाद, गड़बड़ी को लॉग करता है, जैसे कि
Memory limit of 512 MiB exceeded with 515 MiB used. ज़्यादा जानकारी के लिए, Cloud Run फ़ाइल सिस्टम
ऐक्सेस से जुड़ा दस्तावेज़ देखें.
कैश मेमोरी को सेव रखना
Next.js को फ़ाइल सिस्टम में अपनी कैश मेमोरी लिखने से रोकने के लिए, अपनी next.config.js फ़ाइल में experimental.isrFlushToDisk को false पर सेट करें:
// @ts-check
/** @type {import('next').NextConfig} */
const nextConfig = {
experimental: {
isrFlushToDisk: false,
},
};
module.exports = nextConfig;
इसके बाद, Next.js कैश मेमोरी में सेव किए गए कॉन्टेंट को सिर्फ़ मेमोरी में रखता है. यह कॉन्टेंट cacheMaxMemorySize (डिफ़ॉल्ट रूप से 50 एमबी) तक हो सकता है. कैश मेमोरी भरने पर, यह उन एंट्री को हटा देता है जिनका इस्तेमाल हाल ही में नहीं किया गया है. हर सर्विंग इंस्टेंस की अपनी कैश मेमोरी होती है. इंस्टेंस के रीस्टार्ट होने पर, यह कैश मेमोरी मिट जाती है.
एक कमिट बनाएं जिसमें ये बदलाव शामिल हों. इसके बाद, इसे अपनी लाइव ब्रांच में पुश करें. इसके बाद, App Hosting के रोल आउट होने का इंतज़ार करें.