Caching چیست؟

Caching
تصویر یاسر دهقان

یاسر دهقان

برخی برنامه‌ها با حجم انبوهی از درخواست‌های تکراری دست و پنجه نرم می‌کنند . پردازش مداوم این درخواست‌ها، نه تنها سرعت برنامه را به شدت کاهش می‌دهد، بلکه تجربه کاربری ناخوشایندی را رقم می‌زند. مشکل زمانی حادتر می‌شود که این درخواست‌ها نیازمند توان پردازشی بالا یا صرف زمان قابل توجهی باشند.

در چنین شرایطی، Caching  به عنوان یک راه‌حل نجات‌دهنده وارد عمل می‌شود. Caching در واقع فرآیندی است که نتایج حاصل از پردازش درخواست‌ها را در یک حافظه موقت ذخیره می‌کند تا در صورت نیاز مجدد به آن درخواست، به جای پردازش دوباره، از نسخه ذخیره‌شده استفاده شود.

این کار به طور قابل توجهی سرعت برنامه را افزایش می‌دهد، چرا که دیگر نیازی به صرف زمان و منابع برای پردازش‌های تکراری نیست.

در ادامه این بلاگ، به بررسی بیشتر Caching، مزایای آن در برنامه‌های مختلف خواهیم پرداخت.

Caching چیست؟

در دنیای کامپیوتر، Caching به فرایند ذخیره‌سازی داده‌  به صورت موقت در مکانی خاص به نام حافظه Cache می گویند؛ این مکان سرعت بالاتری را برای دسترسی به داده  فراهم می کند. بدین صورت سیستم می تواند در دفعات بعدی که نیاز به آن داده را دارد، داده را با سرعت بالاتری دریافت بکند.

به عبارت ساده‌تر، Caching مانند انباری برای ذخیره‌سازی نتایج آماده‌ی مصرف عمل می‌کند تا دیگر نیازی به پردازش دوباره آن‌ها از ابتدا نباشد. به این ترتیب، سیستم می‌تواند از داده‌های پردازش‌شده‌ی قبلی یا داده‌هایی که دسترسی به آن‌ها کند است، برای پاسخ به درخواست‌های مشابه در آینده استفاده کند و به این ترتیب سرعت و کارایی سیستم را به طور قابل توجهی افزایش دهد.

Caching
در سمت چپ که سیسیتم بدون Cache هست هر سه درخواست مشابه توسط سیستم پردازش می شوند. ولی در سمت راست فقط درخواست اول پردزاش می شود و نتیجه آن در Cache ذخیره می شود. پس از آن برای درخواست های مشابه بعدی به جای پردازش درخواست از داده های ذخیره شده مربوط به درخواست در Cache استفاده می شود.

 

مثال دنیای واقعی برای درک مفهوم Caching

بیایید مفهوم Caching را با یک مثال ملموس از دنیای واقعی درک کنیم. فرض کنید شما با پلتفرم X (توییتر سابق) کار می‌کنید. زمانی که یک سلبریتی توییت جدیدی منتشر می‌کند، سیل عظیمی از کاربران به دنبال مشاهده و تعامل با آن توییت هستند. اگر برای هر بار درخواستِ مشاهده‌ی این توییت، نیاز به برقراری ارتباط با دیتابیس و دریافت اطلاعات آن توییت باشد، فرآیند بسیار کند و طاقت‌فرسا خواهد شد. همچنین این امر تجربه‌ی کاربری ناخوشایندی را برای کاربران به ارمغان خواهد آورد.

در اینجا Caching به کمک ما می‌آید. زمانی که اولین درخواست برای مشاهده‌ی توییت سلبریتی ارسال می‌شود، اطلاعات مربوط به آن توییت پس از پردازش، در حافظه‌ای موقت به نام Cache ذخیره می‌شود. در این صورت، درخواست‌های بعدی برای مشاهده‌ی همان توییت، به جای مراجعه به دیتابیس، مستقیماً از حافظه‌ی Cache اطلاعات را دریافت می‌کنند. این امر باعث صرفه‌جویی در زمان و افزایش سرعت نمایش توییت به کاربران می‌شود.

به این ترتیب، برنامه از پردازش‌های تکراری بی‌نیاز می‌شود و سرعت و عملکرد آن به طور قابل‌توجهی ارتقا می‌یابد. در نهایت، تجربه‌ی کاربری برای کاربران نیز به مراتب لذت‌بخش‌تر خواهد شد.

در کجا می توان از Cache استفاده کرد؟

Cache را می‌توان در لایه‌های مختلف تکنولوژی به کار برد. از جمله این موارد سیستم عامل، لایه‌های شبکه CDN (Content Delivery Network) و DNS، برنامه‌های تحت وب و پایگاه‌داده می باشد.

با استفاده از cache، می‌توانیم تأخیر (latency) را به طور قابل توجهی کاهش دهیم و عملیات خواندن در هر ثانیه (IOPS) را بهبود ببخشیم. این امر برای بسیاری از  برنامه‌های مبتنی بر خواندن، مانند پورتال‌های پرسش و پاسخ، بازی، اشتراک‌گذاری رسانه و شبکه‌های اجتماعی خیلی مفید می باشد.

اطلاعات cache شده می تواند. شامل نتایج query پایگاه داده، محاسبات با حجم پردازشی بالا، پاسخ‌های API و منابع وب مانند فایل‌های HTML، JavaScript و تصاویر باشد.

استفاده از cache باعث کاهش بار بر روی سرورها و افزایش سرعت بارگذاری صفحات و برنامه‌ها می‌شود که این امر برای بهبود تجربه کاربری به شدن  مفید می باشد.

ارسال دیدگاه