Next.js-এ সার্ভার ক্যাশিং কনফিগার করুন

App Hosting-এ বেশিরভাগ Next.js অ্যাপ সাধারণ 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-কে ফাইল সিস্টেমে ক্যাশে লেখা থেকে আটকাতে, আপনার next.config.js ফাইলে experimental.isrFlushToDisk-কে false-এ সেট করুন:

// @ts-check

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

module.exports = nextConfig;

Next.js তারপর ক্যাশে করা কন্টেন্ট শুধুমাত্র মেমরিতে রাখে, cacheMaxMemorySize পর্যন্ত (ডিফল্ট ৫০ এমবি), এবং ক্যাশে ভর্তি হয়ে গেলে সবচেয়ে কম সম্প্রতি ব্যবহৃত এন্ট্রিগুলি সরিয়ে দেয়। প্রতিটি সার্ভিং ইনস্ট্যান্সের নিজস্ব ক্যাশে থাকে, যা ইনস্ট্যান্স রিস্টার্ট হলে হারিয়ে যায়।

এইসব পরিবর্তন সহ একটি কমিট তৈরি করুন এবং আপনার লাইভ ব্রাঞ্চে এটি পুশ করুন। তারপর, App Hosting রোল-আউট সম্পূর্ণ হওয়া পর্যন্ত অপেক্ষা করুন।