عبارت «حافظه کش» (Cache) را حتما در موقعیتهای مختلفی شنیدهاید. بهعنوان مثال کش مرورگر وب نوعی حافظه محلی در مرورگر است که از آن برای بازیابی منابعی که قبلا به آنها دسترسی داشتهاید، استفاده میشود. حافظه کش در اپلیکیشنها نیز وجود دارد و باعث میشود که حتی در حالت آفلاین، مواردی که توسعهدهنده مشخص کرده است، در دسترس کاربران قرار بگیرد. کش سرور نیز شبیه کش مرورگر است، با این تفاوت که دادهها را بهجای ذخیره محلی در سمت سرور نگه میدارد.
بسیاری از توسعهدهندگان و متخصصان فناوری اطلاعات برای دسترسی سریعتر کاربر به دادههای کلیدی و مهم از حافظه کش (حافظه پنهان / Cache) استفاده میکنند. اگر میخواهید بهطور تخصصیتر بدانید که حافظه cache چیست و چه کاربردی دارد، این مقاله برای شما نوشته شده است. در این مقاله با ما همراه باشید تا بهطور کامل با مفهوم حافظه کش و کاربردهای آن در سناریوهای مختلف، از جمله CDN آشنا شوید.
حافظه کش (Cache) چیست؟ ذخیرهسازی داده برای دسترسی سریعتر
از نظر فنی، Cache به مکان ذخیرهسازی موقتی گفته میشود که امکان استفاده مجدد از دادههای پردازششده قبلی (که به تازگی دستیابی شدهاند) را فراهم میکند. در محاسبات (computing)، حافظه کش یک لایه ذخیرهسازی داده با سرعت بالا است که زیرمجموعهای از دادهها را ذخیره میکند و معمولا ماهیتی گذرا دارد؛ یعنی ذخیرهسازی این دادهها موقتی بوده و بعد از گذشت مدت زمان معینی میتوان بهصورت خودکار یا دستی آنها را از حافظه کش پاک کرد.
بهطور کلی، Caching فرایندی است که در آن یک کپی از فایلهایی که قرار است بهطور مکرر مورد استفاده قرار بگیرند، در یک مکان ذخیرهسازی موقت ذخیره میشوند تا بعدا بتوان با سرعت بیشتری به آنها دسترسی پیدا کرد. اصطلاح کش اغلب در اشاره به تکنولوژیهای اینترنت استفاده میشود. مرورگرهای وب فایلهای HTML، جاوا اسکریپت و تصاویر را برای بارگیری سریعتر وبسایتها کش (Cache) میکنند؛ درحالیکه سرورهای DNS از کش کردن رکوردهای DNS برای جستوجوهای سریع و سرورهای CDN از کش کردن محتوا برای کاهش تاخیر بهره میبرند.
بـــازی کنید و برنـــده شـــــوید!
درک بهتر حافظه Cache با یک مثال ساده
برای درک بهتر حافظههای کش، میتوانیم آنها را مانند انبار تدارکات و مواد غذایی بین راه در نظر بگیریم.
زمانی که کاوشگر «رولد آموندسن» در سال ۱۹۱۲ از سفر قطب جنوب بازگشت، اظهار داشت که او و افرادش به لطف وجود انبارهای غذایی بین راه توانستند شرایط راحتتری را سپری کنند. این کار بسیار بهتر از انتظار برای تحویل تدارکات از طرف کمپ اصلی بود.
حافظه پنهان در اینترنت نیز هدف مشابهی را دنبال میکند. Cache بهطور موقت «تدارکات» یا محتوای مورد نیاز کاربران را برای سفر او در سراسر وب ذخیره میکند تا در صورت نیاز کاربر، بتواند محتوا را خیلی سریع در اختیار او قرار دهد.
عملکرد حافظه نهان (Cache) چگونه است؟
دادههای موجود در کش معمولا در سختافزار دسترسی سریع مانند RAM (حافظه با دسترسی تصادفی) ذخیره میشوند و همچنین ممکن است در ارتباط با یک جزء نرمافزاری استفاده شوند. هدف اصلی کش افزایش عملکرد بازیابی دادهها است که این کار را از طریق کاهش نیاز دسترسی به لایه ذخیرهسازی کندتر زیرین انجام میدهد.
مزایای استفاده از حافظه Cache چیست؟
حالا که دانستیم حافظه کش چیست و چگونه کار میکند، بهتر است به بررسی مزایای استفاده از حافظه نهان بپردازیم. استفاده از حافظه کش مزایای قابل توجهی برای مدیران و توسعهدهندگان برنامههای کاربردی موبایل، وبسایتها، نرمافزارها و… به همراه دارد. برخی از این مزایا به شرح زیر است:
بهبود عملکرد اپلیکیشن
ازآنجاییکه سرعت خواندن و نوشتن در حافظه (Memory) به مراتب سریعتر از دیسک (مغناطیسی یا SSD) است، خواندن دادهها از حافظه کش نیز بسیار سریعتر (زیر میلیثانیه) انجام میشود. بهاینترتیب Caching عملکرد کلی برنامههای کاربردی (شامل وبسایت، نرمافزار، اپلیکیشن موبایل و…) را بهبود میبخشد.
کاهش هزینه دیتابیس
Cache میتواند جایگزین تعداد زیادی از نمونههای دیتابیس شود و بهتنهایی صدها هزار IOPS (عملیات ورودی/خروجی در هر ثانیه) را انجام دهد. بهاینترتیب هزینه کل دیتابیس کاهش پیدا میکند. بهویژه زمانی که به ازای هر بار عملیات دیتابیس باید هزینهای پرداخت شود، استفاده از کش اهمیت چشمگیری خواهد داشت.
علاوهبر این، Caching با هدایت (Redirect) بخش قابلتوجهی از بار خواندن دادهها از دیتابیس به لایه حافظه پنهان، میتواند بار روی دیتابیس را کاهش دهد و از آن در برابر کاهش سرعت عملکرد و خراب شدن نیز محافظت کند.
عملکرد قابل پیشبینی برنامهها
افزایش ناگهانی ترافیک و استفاده از برنامههای کاربردی، یکی از بزرگترین چالشهای رایج است. مثلا در روزهای خاصی از سال، مانند روز انتخابات، جمعه سیاه و شب یلدا، استفاده از برخی اپلیکیشنها و وبسایتهای فروشگاهی چند برابر میشود. این امر افزایش بار دیتابیس را به همراه دارد که درنهایت منجر به تاخیر دریافت دادهها میشود. به همین دلیل، در اینگونه موارد به اصطلاح گفته میشود که عملکرد برنامه «غیرقابل پیشبینی» است. اما با استفاده از Caching میتوان این مشکل را تا حد زیادی برطرف کرد و از عملکرد صحیح برنامهها در وضعیتهای چالش برانگیز مطمئن شد.
حذف هاتاسپاتهای دیتابیس
آیتمهای بسیار محبوبی، مانند صفحه محصول، عکس، مقاله یا هر آیتم دیگری در اپلیکیشنها وجود دارند که کاربران به آنها بیشتر از موارد دیگر مراجعه میکنند. مثلا یک وبسایت فروشگاهی لوازم آرایشی را در نظر بگیرید که یکی از پرفروشترین محصولات آن، کرم ضدآفتاب برند خاصی است. وقتی کاربران به صفحه این محصول بیشتر از سایر صفحات مراجعه میکنند، در دیتابیس وبسایت برای این صفحه خاص، یک هات اسپات ایجاد میشود.
ایجاد هاتاسپات برای یک صفحه خاص منجر به افزایش عملیات دیتابیس میشود و در نتیجه منابع دیتابیس را برای ارائه مداوم یک سرویس تکراری بیش از حد درگیر میکند. اگر این صفحه پربازدید در حافظه کش ذخیره شود، علاوهبر کاهش عملیات اضافه دیتابیس، ارائه دادهها (صفحه محصول) با سرعت بیشتری انجام خواهد شد.
انواع حافظه کش چیست؟
حافظه کش در سناریوها و فناوریهای مختلفی کاربرد دارد که در ادامه به برخی از آنها اشاره میکنیم.
حافظه کش در سرورهای DNS (Domain Name System)
سرورهای DNS رکوردهای DNS را برای جستجوی سریعتر در حافظه کش خود ذخیره میکنند. وقتی یک نام دامنه در اینترنت جستوجو میشود، ابتدا درخواست آن به سرورهای کش DNS فرستاده میشود تا آدرس IP مرتبط با نام دامنه را جستجو کند. کش DNS میتواند در سطوح مختلفی، از جمله در سیستمعامل، از طریق ISPها و سرورهای DNS انجام شود که در هر صورت سرعت عملیات بازیابی آدرس IP نام دامنه را افزایش میدهد.
حافظه کش وب (Web Caching)
هر بار که کاربر یک صفحه وب را باز میکند، مرورگر او باید دادههای بسیار زیادی (شامل فایلهای JavaScript، عکس، ویدئو و…) را برای نمایش آن صفحه دانلود کند. مرورگرها اینگونه دادهها را برای افزایش سرعت بارگذاری صفحه در حافظه پنهان خود کش کرده و یک کپی از محتوای صفحه وب را نیز در هارد دیسک دستگاه کاربر ذخیره میکنند. بدین ترتیب، دفعه بعد که کاربر همان صفحه وب را دوباره بارگذاری میکند، بیشتر محتوا، بدون نیاز به دانلود مجدد، با سرعت بسیار بیشتری بارگیری میشود. تکنیکهای مختلف کش وب را میتوان هم در سمت سرور و هم در سمت کاربر پیادهسازی کرد.
- کش وب در سمت سرور: این نوع ذخیرهسازی با استفاده از پروکسی وب، پاسخهای سرور وب را نگه میدارد تا بعدا از این طریق، بتواند تاخیر در پاسخدهی را کاهش دهد.
- کش وب در سمت کاربر: این نوع ذخیرهسازی مبتنی بر مرورگر است؛ مرورگر وب برای اجرای سریعتر وبسایتها، فایلهای HTML، جاوا اسکریپت و تصاویر وبسایتی که کاربر قبلا یکبار از آن بازدید کرده است را در حافظه کش خود ذخیره میکند.
مرورگرها فایلهای ذخیرهشده را تا وقتی که زمان حیات آنها (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 ابر دراک با پراکندگی بالا در سراسر جهان
با مطالعه این مقاله دانستیم که حافظه کش چیست و کاربردها و مزایایی دارد. یکی از مهمترین انواع حافظه کش که تاثیر چشمگیری در افزایش سرعت توزیع محتوا دارد، کش CDN است. هنگام خرید CDN بهمنظور بهبود عملکرد وبسایت و اپلیکیشن، توصیه میکنیم به پراکندگی گسترده سرورهای آن در موقعیتهای جغرافیایی مختلف توجه کنید.CDN ابر دراک با بیش از 40 پاپسایت در سراسر جهان، از بزرگترین و قدرتمندترین شبکههای توزیع محتوا شناخته محسوب میشوند. خدمات کش CDN ابر دراک در پلنهای مختلفی ارائه میشود که با توجه به نیاز هر نوع وبسایت، میزان این خدمات میتواند متفاوت باشد. همچنین، مشتریان میتوانند با ثبت درخواست خود مبنی بر سفارشیسازی پلن، دقیقا همان سرویسی را که در نظر دارند، دریافت کنند. برای دریافت مشاوره خرید سرویس CDN و استفاده از امکانات Caching با ما تماس بگیرید.
منابع: CloudFlare | AWS