بسیاری از توسعهدهندگان و متخصصان فناوری اطلاعات برای دسترسی سریعتر به دادههای کلیدی و مهم از حافظه کش (حافظه پنهان / Cache) استفاده میکنند. حافظه کش چیست و چه کاربردی دارد؟
در این مقاله با ما همراه باشید تا بهطور کامل با مفهوم حافظه کش و کاربردهای آن در سناریوهای مختلف، از جمله CDN آشنا شوید.
حافظه کش (Cache) چیست؟
از نظر فنی، Cache به مکان ذخیرهسازی موقتی گفته میشود، که امکان استفاده مجدد از دادههای پردازش شده قبلی (که به تازگی دستیابی شدهاند) را فراهم میکند.
از نظر محاسباتی (computing)، Cache یک لایه ذخیرهسازی داده با سرعت بالا است، که زیرمجموعهای از دادهها را ذخیره میکند و معمولا ماهیتی گذرا دارد؛ یعنی ذخیرهسازی این دادهها موقتی بوده و بعد از گذشت مدت زمان معینی میتوان بهصورت خودکار یا دستی آنها را از حافظه کش پاک کرد.
بهطور کلی، Caching فرایندی است که در آن یک کپی از فایلهایی که قرار است به طور مکرر مورد استفاده قرار بگیرند، در یک مکان ذخیرهسازی موقت ذخیره میشوند، تا بعدا بتوان با سرعت بیشتری به آنها دسترسی پیدا کرد.

برای درک بهتر حافظههای کش، میتوانیم آنها را مانند انبار تدارکات و مواد غذایی بین راه درنظر بگیریم.
زمانی که کاوشگر “رولد آموندسن” در سال 1912 از سفر قطب جنوب بازگشت، اظهار داشت که او و افرادش به لطف وجود انبارهای غذایی بین راه توانستند شرایط راحتتری را سپری کنند، که این کار بسیار بهتر از انتظار برای تحویل تدارکات از طرف کمپ اصلی بود.
حافظه پنهان در اینترنت هدف مشابهی را دنبال میکند. Cache به طور موقت «تدارکات» یا محتوای مورد نیاز کاربران را برای سفر او در سراسر وب ذخیره میکند، تا هر زمان که کاربر به آنها نیاز داشت بتواند خیلی سریع در اختیار او قرار دهد.
مزایای استفاده از Caching
استفاده از حافظه کش مزایای قابل توجهی را برای مدیران و توسعهدهندگان برنامههای کاربردی موبایل، وبسایتها، نرمافزارها و غیره به همراه دارد، که برخی از این مزایا به شرح زیر است:

بهبود عملکرد برنامههای کاربردی
همانطور که میدانید، سرعت خواندن و نوشتن در حافظه (Memory) به مراتب سریعتر از دیسک (مغناطیسی یا SSD) است؛ بدین ترتیب، سرعت خواندن دادهها از حافظه کش نیز بسیار سریعتر (زیر میلی ثانیه) انجام میشود، که در نتیجه عملکرد کلی برنامههای کاربردی (شامل وبسایت، نرمافزار، اپلیکیشن موبایل و…) را بهبود میبخشد.
کاهش هزینه پایگاه داده
Cache میتواند جایگزین تعداد زیادی از نمونههای پایگاه داده شود و به تنهایی صدها هزار IOPS (عملیات ورودی/خروجی در هر ثانیه) را انجام دهد، که در نهایت منجر به کاهش هزینههای پایگاه داده میشود. این مزیت، به ویژه در زمانی که باید به ازای هر بار عملیات پایگاه داده هزینهای پرداخت شود، بسیار مهم است.
علاوه بر این، Caching با هدایت (Redirect) بخش قابل توجهی از بار خواندن دادهها از پایگاه داده به لایه حافظه پنهان، میتواند بار روی پایگاه داده را کاهش دهد و از پایگاه داده دربرابر کاهش سرعت عملکرد و خراب شدن نیز محافظت کند.
عملکرد قابل پیشبینی برنامهها
افزایش ناگهانی ترافیک و استفاده از برنامههای کاربردی، یکی از بزرگترین چالشهای رایج است. مثلا، در روزهای خاصی از سال، مانند روز انتخابات، جمعه سیاه و شب یلدا، استفاده از برخی اپلیکیشنها و وبسایتهای فروشگاهی چند برابر میشود، که این امر موجب افزایش بار پایگاه داده شده و درنهایت منجر به تأخیر دریافت دادهها میشود. به همین دلیل، در اینگونه موارد به اصطلاح گفته میشود که عملکرد برنامه “غیر قابل پیشبینی” است. اما، با استفاده از Caching میتوان این مشکل را تا حد زیادی برطرف کرده و از عملکرد صحیح برنامهها در وضعیتهای چالش برانگیز اطمینان حاصل کرد.
حذف هاتاسپاتهای پایگاه داده
آیتمهای بسیار محبوبی، مانند صفحه محصول، عکس، مقاله یا هر آیتم دیگری در برنامههای کاربردی وجود دارند که کاربران به آنها بیشتر از موارد دیگر مراجعه میکنند. مثلا، یک وبسایت فروشگاه لوازم آرایشی را در نظر بگیرید، که یکی از پرفروشترین محصولات آن، کرم ضد آفتاب برند خاصی است. وقتی کاربران به صفحه این محصول بیشتر از سایر صفحات مراجعه میکنند، در پایگاه داده وبسایت برای این صفحه خاص، یک هات اسپات ایجاد میشود. این امر منجر به افزایش عملیات پایگاه داده شده و در نتیجه باعث درگیر شدن بیش از حد منابع پایگاه داده برای ارائه مداوم یک سرویس تکراری میشود.
اگر این صفحه در حافظه کش ذخیره شود، علاوه بر کاهش عملیات اضافه پایگاه داده، ارائهی دادهها (صفحه محصول) با سرعت بیشتری انجام میشود.
حافظه کش در سناریوها و فناوریهای مختلفی کاربرد دارد، که در ادامه به برخی از آنها اشاره میکنیم.
حافظه کش در سرورهای DNS (Domain Name System)
سرورهای DNS رکوردهای DNS را برای جستجوی سریعتر در حافظه کش خود ذخیره میکنند.
وقتی نام دامنهای در اینترنت جستجو میشود، ابتدا درخواست آن به سرورهای کش DNS فرستاده میشود تا آدرس IP مرتبط با نام دامنه را جستجو کند. کش DNS میتواند در سطوح مختلفی، از جمله در سیستمعامل، از طریق ISPها و سرورهای DNS انجام شود، که در هر صورت سرعت عملیات بازیابی آدرس IP نام دامنه را افزایش میدهد.
حافظه کش وب (Web Caching)
تکنیکهای مختلف کش وب را میتوان هم در سمت سرور و هم در سمت کاربر پیادهسازی کرد.
- کش وب در سمت سرور: این نوع ذخیرهسازی با استفاده از پروکسی وب، پاسخهای سرور وب را نگه میدارد تا بعدا از این طریق، بتواند تأخیر در پاسخدهی را کاهش دهد.
- کش وب در سمت کاربر: این نوع ذخیرهسازی مبتنی بر مرورگر است؛ مرورگر وب برای اجرای سریعتر وبسایتها، فایلهای HTML، جاوا اسکریپت و تصاویر وبسایتی که کاربر قبلا یکبار از آن بازدید کرده است را در حافظه کش خود ذخیره میکند.
هر بار که کاربر یک صفحه وب را باز میکند، مرورگر او باید دادههای بسیار زیادی (شامل فایلهای JavaScript، عکس، ویدئو و…) را برای نمایش آن صفحه دانلود کند. مرورگرها اینگونه دادهها را برای افزایش سرعت بارگذاری صفحه در حافظه پنهان خود کش کرده و یک کپی از محتوای صفحه وب را نیز در هارد دیسک دستگاه کاربر ذخیره میکنند. بدین ترتیب، دفعه بعد که کاربر همان صفحه وب را دوباره بارگذاری میکند، بیشتر محتوا، بدون نیاز به دانلود مجدد، با سرعت بسیار بیشتری بارگیری میشود.

مرورگرها این فایلها را تا وقتی که زمان حیات آنها (Time To Live – TTL) منقضی شود یا کش هارد دیسک پر شود، نگه میدارند. (TTL نشاندهنده مدت زمانی است که محتوا باید در حافظه پنهان ذخیره بماند.)
همچنین، کاربران میتوانند در صورت تمایل کش مرورگر خود را پاک کنند، که این کار بهطور موقت زمان بارگذاری صفحه را افزایش میدهد. زیرا از این پس، هر صفحه وبی که قرار است دوباره بارگیری شود، به صورتی خواهد بود که گویی اولین بار است که کاربر از آن صفحه بازدید میکند. ولی اگر صفحه وب برای بار اول به درستی بارگیری نشده باشد یا آنکه به تازگی تغییراتی در صفحه وب ایجاد شده باشد، پاک کردن کش میتواند اینگونه مشکلات را برطرف کند.
حافظه کش در شبکه توزیع محتوا (CDN)

وقتی ترافیک وبسایت شما از سراسر جهان باشد، بدون فراهم کردن زیرساخت مناسب در نقاط مختلف جغرافیایی، سرویسدهی سریع با تأخیر کم امکانپذیر نخواهد بود. از طرفی، توزیع زیرساخت وبسایت توسط خود شما (به عنوان مالک یا مدیر وبسایت) نیز کار عاقلانه و مقرون به صرفهای نیست!
CDN با ارائهی یک شبکه جهانی از سرورهای لبه (Edge Servers) برای توزیع یک کپی کش شده از محتوای وبسایت، مانند ویدیوها، صفحات وب، تصاویر و غیره به کاربران سراسر جهان، امکان این نوع سرویسدهی را با کمترین هزینه برای شما فراهم میکند.

CDN را مانند مغازه خواربار فروشی در نظر بگیرید: خریداران بهجای رفتن به مزرعههایی که صدها مایل دورتر هستند، به خواربارفروشی محله خود میروند؛ درست است که باز هم باید مسیری را تا مغازه طی کنند، اما بسیار نزدیکتر است. بنابراین، زمان خرید مواد غذایی به جای چند روز، چند دقیقه طول میکشد. بهطور مشابه، CDN محتوای وبسایت (مواد غذایی) را در سرورهای خود (مغازههای محلی) ذخیره میکند تا صفحات وب سریعتر بارگیری شوند.
شبکه توزیع محتوا از نزدیکترین سرور لبه به کاربر استفاده میکند تا زمان پاسخ (Response Time) را کاهش دهد. با توجه به اینکه داراییهای وب (Web Assets) از حافظه پنهان/کش به کاربر تحویل داده میشوند، توان عملیاتی بهطور چشمگیری افزایش مییابد. معمولا، سرورهای CDN دادههای استاتیک (دادههایی که نیاز به تغییر مداوم ندارند) را کش میکنند. اما، میتوان تنظیمات CDN را نیز به گونهای پیکربندی کرد تا دادههای داینامیک را بهطور مستقیم از سرورهای اصلی (Origin Servers) بازیابی (Retrieve) کند و با سرعت بیشتری نسبت به سرور اصلی به کاربر تحویل دهد.
اَبر دِراک با ارائهی سرویس CDN ایرانی، امکان توزیع وبسایتها، محتوای ویدئویی و انواع دیگر محتوای صوتی و تصویری را با بیشترین سرعت و کمترین تأخیر در سراسر جهان فراهم میکند.
برای آشنایی بیشتر با محصول CDN اَبر دِراک کلیک کنید: شبکه توزیع محتوا (CDN)
cache hit و cache miss در CDN
cache hit (کش هیت) زمانی اتفاق میافتد که دستگاه کاربر برای دسترسی به یک محتوا، درخواستی را به حافظه پنهان ارسال میکند و حافظه پنهان، آن محتوا را درون خود ذخیره دارد. اما، اگر حافظه پنهان محتوای درخواستی را ذخیره نداشته باشد، گفته میشود که cache miss (کش میس) رخ داده است.


درواقع، cache hit به این معنی است که محتوا میتواند بسیار سریعتر بارگیری شود و CDN میتواند بلافاصله آن را به کاربر نهایی تحویل دهد. در مورد Cache Miss، سرور CDN درخواست موردنظر را به سرور مبدأ ارسال میکند و پس از دریافت پاسخ سرور مبدأ، محتوا را کش میکند تا درخواستهای بعدی منجر به cache hit شوند.
محتوای کش شده تا چه زمانی بر روی سرورهای CDN باقی میمانند؟
وقتی وبسایتها به سرورهای CDN پاسخ میدهند، محتوای درخواستی را همراه با TTL مربوطه ارسال میکنند تا به سرورها بگویند که چه مدت باید آن را ذخیره کنند. TTL در بخشی از پاسخ به نام «هدر HTTP» ذخیره میشود و مشخص میکند که محتوا برای چند ثانیه، دقیقه یا ساعت ذخیره شود. هنگامی که TTL منقضی میشود، حافظه پنهان سرور CDN آن محتوا را حذف میکند.
سرورهای CDN اَبر دِراک در مراکز دادهی بیش از 70 شهر از مناطق مختلف جفرافیایی قرار دارند، که در سراسر جهان توزیع شدهاند. خدمات کش CDN اَبر دِراک در پلنهای مختلفی ارائه میشود، که با توجه به نیاز هر نوع وبسایت، میزان این خدمات میتواند متفاوت باشد. همچنین، مشتریان میتوانند با ثبت درخواست خود مبنی بر سفارشیسازی پلن، دقیقا همان سرویسی را که در نظر دارند، دریافت کنند.
برای دریافت مشاوره خرید سرویس CDN و استفاده از امکانات Caching با ما تماس بگیرید.