در حال دریافت اطلاعات ...
متن رفرنس
ریشه Memoization از کلمه Memorandum (یادداشت کردن برای به خاطر سپردن) میآید و شبیه به کلمه Memorize است. در برنامهنویسی یعنی: “جواب را به خاطر بسپار تا مجبور نشوی دوباره همان کار را تکرار کنی.”
نحوه رفتار و تفاوت آن با کش (Cache):
بله، این مفهوم نوعی کش کردن است، اما بسیار کوتاهمدت. تفاوت اصلی اینجاست:
کش معمولی (Caching): دادهها را برای مدت طولانی ذخیره میکند. مثلاً اگر کاربر A صفحه را باز کند، سرور داده را میگیرد و کش میکند. ۵ دقیقه بعد کاربر B میآید و سرور همان داده قبلی را به او میدهد.
مموایز شدن (Memoization): فقط و فقط در طول یک چرخه رندر (یک بار لود صفحه توسط یک کاربر) زنده است.
دقیقاً چطور کار میکند؟
فرض کنید یک کاربر وارد صفحه پروفایل میشود. سرور شروع به ساختن (رندر) صفحه میکند.
درون این صفحه ۳ کامپوننت مختلف (مثلاً هدر، سایدبار و بدنه اصلی) وجود دارند که هر سه به اطلاعات کاربر نیاز دارند و هر سه در کدهایشان نوشته شده:
fetch('https://api.com/user/1')
اتفاقی که میافتد این است:
۱. کامپوننت اول fetch را اجرا میکند. سرور درخواست را به API میفرستد. زمان میبرد تا جواب بیاید.
۲. وقتی جواب آمد، سرور آن را موقتاً یادداشت میکند (Memoize).
۳. کامپوننتهای دوم و سوم که به همان خط fetch میرسند، سرور دیگر درخواست جدیدی به API نمیفرستد! بلکه همان جوابِ یادداشت شده را به آنها میدهد.
نتیجه: به جای ۳ درخواست شبکه، فقط ۱ درخواست انجام شد.
اما به محض اینکه صفحه ساخته شد و به مرورگر کاربر ارسال شد، آن یادداشت پاره میشود. اگر کاربر صفحه را رفرش کند، کل این پروسه از نو تکرار میشود.
به همین دلیل به شما اجازه میدهد بدون نگرانی از افت سرعت، fetch را در هر کامپوننتی که به آن نیاز دارید بنویسید و نگران تکراری بودن درخواستها نباشید.
عنوان کارت
پاسخ