حافظه کش (Cache) به چه معناست؟چه کاربردی دارد؟

انتشار توسط خرید هارد از فروشگاه اینترنتی امارات رایان
31 / 03 / 1402
در دنیای فناوری اطلاعات، حافظه کش (Cache) به منظور دسترسی سریعتر به دادههای کلیدی و مهم استفاده میشود. توسعهدهندگان و متخصصان فناوری اطلاعات از حافظه کش برای به دست آوردن تجربه کاربری بهتر و افزایش سرعت عملیاتها استفاده میکنند.
حافظه کش در سناریوهای مختلف، از جمله CDN و وب، کاربردهای بسیاری دارد. علاوه بر این، حافظه کش در سرورهای DNS نیز استفاده میشود تا زمان پاسخدهی به درخواستهای کاربران را کاهش دهد.
در این مقاله، با مفهوم حافظه کش و کاربردهای آن در سناریوهای مختلف، از جمله CDN، آشنا خواهید شد. همچنین، با cache hit و cache miss در CDN نیز آشنا خواهید شد. در نهایت، در این مقاله به بررسی مدت زمانی که محتوای کش شده بر روی سرورهای CDN باقی میماند نیز پرداخته خواهد شد.
هر آنچه که در این مقاله خواهید آموخت :
حافظه کش (Cache) به چه معناست؟
مزیت های استفاده از Caching
حافظه کش در سرورهای DNS (Domain Name Server)
حافظه کش در شبکه توزیع محتوا (CDN)
cache hit و cache miss در CDN
حافظه کش وب (Web Caching)
محتوای کش تا چه مدت روی سرورهای CDN باقی خواهد ماند؟
حافظه کش (Cache) به چه معناست؟
حافظه کش (Cache) در دنیای فناوری اطلاعات به یک مکان ذخیرهسازی موقتی اطلاق میشود که به کاربران امکان استفاده مجدد از دادههای پردازش شده قبلی را با سرعت بالا میدهد. در اصطلاح محاسباتی، حافظه کش به یک لایه ذخیرهسازی داده با سرعت بالا گفته میشود. این لایه، زیرمجموعهای از دادهها را ذخیره میکند و معمولاً بهصورت موقتی استفاده میشود. با گذشت زمان، دادهها از حافظه کش پاک میشوند.
فرایند Caching، بهصورت کلی به معنای ذخیرهسازی کپی فایلهایی است که قرار است به طور مکرر مورد استفاده قرار بگیرند. این کپی، در یک مکان ذخیرهسازی موقتی قرار میگیرد تا بعداً با سرعت بیشتری به آنها دسترسی پیدا کرد. استفاده از حافظه کش در سناریوهای مختلفی، از جمله CDN، بهبود سرعت و کارایی عملیاتها را فراهم میکند.
حافظه کش (Cache) میتواند مانند انبار تدارکات و مواد غذایی بین راه در نظر گرفته شود. برای درک بهتر عملکرد حافظههای کش، میتوانیم به مثال زیر مراجعه کنیم:
در سال 1912، کاوشگر "رولد آموندسن" از سفر قطب جنوب بازگشت و برای تأمین تدارکات، از انبارهای غذایی بین راه استفاده کرد. این انبارها به او این امکان را دادند که شرایط راحتتری را برای خود فراهم کند، که این کار بسیار بهتر از انتظار برای تحویل تدارکات از طرف کمپ اصلی بود.
حافظه پنهان در اینترنت نیز هدف مشابهی را دنبال میکند. Cache بهطور موقت محتوای مورد نیاز کاربران را برای سفر آینده آنها در سراسر وب ذخیره میکند، تا هر زمان که کاربر به آنها نیاز داشت، بتواند به سرعت آنها را در اختیار داشته باشد. بهعبارت دیگر، حافظه کش به کاربران این امکان را میدهد که به سرعت به محتوای مورد نیاز خود دسترسی پیدا کنند.
مزیت های استفاده از Caching
استفاده از حافظه کش، مزایای قابل توجهی را برای مدیران و توسعهدهندگان برنامههای کاربردی موبایل، وبسایتها، نرمافزارها و غیره به همراه دارد. برخی از این مزایا عبارتند از:
1. بهبود عملکرد برنامههای کاربردی:
سرعت خواندن و نوشتن در حافظه، به مراتب سریعتر از دیسک (مغناطیسی یا SSD) است. بنابراین، سرعت خواندن دادهها از حافظه کش نیز بسیار سریعتر (زیر میلی ثانیه) انجام میشود، که در نتیجه، عملکرد کلی برنامههای کاربردی (شامل وبسایت، نرمافزار، اپلیکیشن موبایل و غیره) را بهبود میبخشد.
2. کاهش هزینه پایگاه داده:
حافظه کش، میتواند جایگزین تعداد زیادی از نمونههای پایگاه داده شود و به تنهایی صدها هزار IOPS (عملیات ورودی/خروجی در هر ثانیه) را انجام دهد. این مزیت، به ویژه در زمانی که باید به ازای هر بار عملیات پایگاه داده هزینهای پرداخت شود، بسیار مهم است. همچنین، Caching با هدایت (Redirect) بخش قابل توجهی از بار خواندن دادهها از پایگاه داده به لایه حافظه پنهان، میتواند بار روی پایگاه داده را کاهش دهد و از پایگاه داده دربرابر کاهش سرعت عملکرد و خراب شدن نیز محافظت کند.
3. عملکرد قابل پیشبینی برنامهها:
افزایش ناگهانی ترافیک و استفاده از برنامههای کاربردی، یکی از بزرگترین چالشهای رایج است. Caching میتواند این مشکل را تا حد زیادی برطرف کرده و از عملکرد صحیح برنامهها در وضعیتهای چالشبرانگیز اطمینان حاصل کند. بهعنوان مثال، در روزهای خاصی از سال، مانند روز انتخابات، جمعه سیاه و شب یلدا، استفاده از برخی اپلیکیشنها و وبسایتهای فروشگاهی چند برابر میشود، که این امر موجب افزایش بار پایگاه داده شده و درنهایت منجبه خرابی و کاهش سرعت عملکرد برنامهها میشود. با استفاده از Caching، بخشی از اطلاعات در حافظه کش ذخیره شده و در هنگام درخواست بعدی بازیابی میشود، که باعث کاهش تعداد درخواستهای از پایگاه داده و افزایش عملکرد سریعتر برنامهها میشود.
4. بهبود تجربه کاربری:
با استفاده از Caching، زمان لود صفحات و محتوا در برنامههای کاربردی، وبسایتها و نرمافزارها کاهش مییابد. این امر باعث بهبود تجربه کاربری میشود و کاربران به سرعت به اطلاعات مورد نیاز خود دسترسی پیدا میکنند.
5. افزایش مقیاسپذیری:
استفاده از Caching، در سیستمهایی با ترافیک بالا و تعداد کاربران زیاد، میتواند به افزایش مقیاسپذیری کمک کند. با استفاده از Caching، بخشی از بار کاری از پایگاه داده کاهش مییابد و این امر موجب افزایش توانایی سیستم در پاسخگویی به تعداد بیشتری از درخواستهای کاربران میشود.
در کل، استفاده از Caching در برنامههای کاربردی، وبسایتها و نرمافزارها، باعث بهبود عملکرد و کاهش هزینهها میشود و در نتیجه، تجربه کاربری را بهبود میبخشد.
حافظه کش در سرورهای DNS (Domain Name Server)
حافظه کش در سرورهای DNS (Domain Name System)، یکی از مهمترین مفاهیم در حوزه شبکههای کامپیوتری است. سرورهای DNS، به منظور جستجوی سریعتر رکوردهای DNS، از حافظه کش خود استفاده میکنند.
در واقع، DNS یک پروتکل شبکه است که به کاربران اینترنت اجازه میدهد تا با استفاده از نام دامنه، به سایتها و خدمات مختلف دسترسی پیدا کنند. به عنوان مثال، اگر کاربری میخواهد به وبسایت Google.com دسترسی پیدا کند، ابتدا درخواست آن به سرورهای DNS فرستاده میشود تا آدرس IP مرتبط با نام دامنه را جستجو کند. سپس با استفاده از آدرس IP، کاربر میتواند به وبسایت دسترسی پیدا کند.
اما در این فرآیند، زمان بازیابی آدرس IP نام دامنه میتواند مدتی طولانی باشد که موجب افزایش زمان لود صفحه و کاهش تجربه کاربری میشود. به همین دلیل، سرورهای DNS از حافظه کش خود استفاده میکنند تا آدرسهای IP پراستفاده را در حافظه خود ذخیره کنند و در صورت نیاز به سرعت بیشتری بازیابی کنند.
حافظه کش DNS میتواند در سطوح مختلفی، از جمله در سیستمعامل، از طریق ISPها و سرورهای DNS انجام شود. در هر صورت، استفاده از حافظه کش، سرعت عملیات بازیابی آدرس IP نام دامنه را افزایش میدهد و بهبود تجربه کاربری را به ارمغان میآورد. همچنین، این عملیات میتواند به کاهش بار سرورهای DNS و بهبود مقیاسپذیری سیستم کمک کند.
حافظه کش وب (Web Caching)
حافظه کش وب (Web Caching)، یکی از مهمترین تکنیکهای بهینهسازی در حوزه وب سایتهاست. این تکنیکها به منظور کاهش تأخیر در پاسخدهی وبسایتها و افزایش سرعت بارگذاری صفحات وب، در سمت سرور و یا سمت کاربر، پیادهسازی میشوند.
در سمت سرور، کش وب با استفاده از پروکسی وب، پاسخهای سرور وب را نگه میدارد تا بعدا از این طریق، بتواند تأخیر در پاسخدهی را کاهش دهد. در واقع، پروکسی وب یک سرور میانی بین کاربر و سرور وب است که درخواست کاربر را به سرور وب ارسال میکند و پاسخ سرور را دریافت کرده و به کاربر ارسال میکند. اگر پاسخ درخواست قبلی در کش وب پروکسی ذخیره شده باشد، پروکسی به جای ارسال درخواست به سرور وب، پاسخ را از کش وب دریافت کرده و به کاربر ارسال میکند. این عملیات سرعت بارگذاری صفحه را بهبود میبخشد و بار سرور وب را کاهش میدهد.
در سمت کاربر، کش وب مبتنی بر مرورگر است. هر بار که کاربر یک صفحه وب را باز میکند، مرورگر او باید دادههای بسیار زیادی (شامل فایلهای JavaScript، عکس، ویدئو و…) را برای نمایش آن صفحه دانلود کند. برای افزایش سرعت بارگذاری صفحه، مرورگرها اینگونه دادهها را در حافظه پنهان خود کش کرده و یک کپی از محتوای صفحه وب را نیز در هارد دیسک دستگاه کاربر ذخیره میکنند. بدین ترتیب، دفعه بعد که کاربر همان صفحه وب را دوباره بارگذاری میکند، بیشتر محتوا، بدون نیاز به دانلود مجدد، با سرعت بسیار بیشتری بارگیری میشود. مرورگرها این فایلها را تا زمانی که زمان حیات آنها (Time To Live – TTL) منقضی شود یا کش هارد دیسک پر شود، نگه میدارند.
البته، کاربران میتوانند در صورت تمایل، کش مرورگر خود را پاک کنند. این کار باعث میشود که دفعه بعد که کاربر همان صفحه وب را باز میکند، مرورگر به جای استفاده از کشقبلی، باید دادههای آن را دوباره دانلود کند. این عملیات ممکن است زمان بارگذاری صفحه را افزایش دهد. با این حال، پاک کردن کش مرورگر میتواند در مواردی که صفحه وب برای بار اول به درستی بارگذاری نشده باشد یا تغییراتی در صفحه وب ایجاد شده باشد، بهبود بخشد و مشکلاتی که ممکن است به دلیل استفاده از کش قدیمی به وجود آیند، را برطرف کند.
حافظه کش در شبکه توزیع محتوا (CDN)
شبکه توزیع محتوا (CDN)، یکی از مهمترین تکنیکهای بهینهسازی در حوزه وب سایتهاست. این تکنیکها به منظور کاهش تأخیر در پاسخدهی وبسایتها و افزایش سرعت بارگذاری صفحات وب در نقاط مختلف جهان، در سمت سرویسدهی، پیادهسازی میشوند.
شبکه توزیع محتوا با ارائهی یک شبکه جهانی از سرورهای لبه (Edge Servers) برای توزیع یک کپی کش شده از محتوای وبسایت، مانند ویدیوها، صفحات وب، تصاویر و غیره به کاربران سراسر جهان، امکان این نوع سرویسدهی را با کمترین هزینه و تأخیر کمتر برای مدیران وبسایت فراهم میکند.
با استفاده از شبکه توزیع محتوا، کاربران به نزدیکترین سرور لبه به خود متصل شده و دادههای وب از حافظه پنهان/کش سرورهای لبه به کاربر تحویل داده میشود، که باعث کاهش زمان پاسخ و افزایش سرعت بارگذاری صفحات وب میشود. همچنین، میتوان تنظیمات CDN را به گونهای پیکربندی کرد تا دادههای داینامیک را بهطور مستقیم از سرورهای اصلی (Origin Servers) بازیابی کند و با سرعت بیشتری نسبت به سرور اصلی به کاربر تحویل دهد.
cache hit و cache miss در CDN
در CDN، Cache Hit و Cache Miss دو مفهوم مهم هستند. Cache Hit به معنای این است که درخواست کاربر به یکی از سرورهای لبه CDN ارسال شده و سرور CDN موفق به پیدا کردن محتوای درخواستی در حافظه پنهان خود شده است. در این صورت، محتوا به سرعت از حافظه پنهان سرور CDN به کاربر تحویل داده میشود.
اما در مورد Cache Miss، درخواست کاربر به سرور CDN ارسال شده و سرور CDN نتوانسته است محتوای درخواستی را در حافظه پنهان خود پیدا کند. در این صورت، سرور CDN درخواست را به سرور مبدأ ارسال میکند تا محتوا را از آنجا دریافت کند و در حافظه پنهان خود ذخیره کند. درخواستهای بعدی که به همین محتوا اشاره میکنند، موفق به Cache Hit خواهند بود و محتوا به سرعت از حافظه پنهان سرور CDN به کاربر تحویل داده میشود.
بنابراین، Cache Hit باعث افزایش سرعت بارگیری محتوا و کاهش تأخیر در سرویسدهی میشود، در حالی که Cache Miss باعث ایجاد تأخیر در ارائه محتوا به کاربر میشود. به همین دلیل، بهینهسازی حافظه پنهان سرور CDN و افزایش تعداد Cache Hit ها، به عنوان یکی از راهکارهای افزایش سرعت بارگیری محتوای وب از CDN، مورد توجه قرار میگیرد.
محتوای کش تا چه مدت روی سرورهای CDN باقی خواهد ماند؟
زمانی که وبسایتها به سرورهای CDN پاسخ میدهند، محتوای درخواستی همراه با مقدار TTL (Time To Live) مربوطه ارسال میشود. TTL در بخشی از پاسخ به نام "هدر HTTP" ذخیره میشود و مشخص میکند که محتوای درخواستی برای چه مدت زمانی در حافظه پنهان سرور CDN باقی میماند. هنگامی که زمان TTL به اتمام میرسد، سرور CDN محتوای درخواستی را از حافظه پنهان خود حذف میکند.
در واقع، زمانی که محتوای کش شده در حافظه پنهان سرور CDN باقی میماند، به مقدار TTL بستگی دارد. برای مثال، اگر مقدار TTL در هدر HTTP برابر یک ساعت باشد، محتوای کش شده در حافظه پنهان سرور CDN تا یک ساعت پس از دریافت، باقی خواهد ماند و سپس پس از اتمام این مدت، سرور CDN آن را حذف خواهد کرد.
بنابراین، زمانی که محتوای کش شده در حافظه پنهان سرور CDN باقی میماند، به مقدار TTL تعیین شده در هدر HTTP پاسخ وبسایت منبع بستگی دارد. علاوه بر این، تعیین مقدار مناسب برای TTL در هدر HTTP، به عنوان یکی از راهکارهای بهینهسازی عملکرد سرورهای CDN محسوب میشود.
امارات رایان واردکننده انواع های کالای دیجیتال ، تجهیزات شبکه (سوییچ،مودم،رک،رادیو آنتن میکروتیک) ، تجهیزات ذخیره سازی (هارد اینترنال و اکسترنال)در برند های مختلف، دوربین مداربسته ، دزدگیر در ایران.