منظور از کش (Cache) چیست؟
منظور از کش یا حافظه پنهان، فرآیند ذخیرهسازی کپی فایلها در یک سرور برای دسترسی سریع است. در حالی که کش به هر مکان ذخیرهسازی موقت دادهها یا فایلها اطلاق میشود، اما این اصطلاح معمولاً در مورد این فرآیند مورد استفاده قرار میگیرد. سرورهای DNS برای دسترسی آسانتر، محتوای سرور CDN، فایلهای HTML و تصاویر را کش میکنند تا وبسایتها بتوانند سریعتر بارگذاری شوند.
این فرآیند را کش میگویند و همانطور که گفته شد، در مورد کاربردهای اینترنت بیشتر مورد استفاده قرار میگیرد. هرچند در خود کامپیوترهای PC هم منظور از حافظه کش، فضای ذخیرهسازی موفق برنامهها و فایلهای سیستم عامل، برای دسترسی سریعتر و افزایش سرعت اجرای آنها است.
کش چگونه کار میکند؟
به طور کلی، دادههای کش در سختافزار دسترسی سریع مانند RAM (حافظه دسترسی تصادفی) ذخیره میشود. همچنین میتوان از آن در ارتباط با اجزای نرمافزار استفاده کرد. هدف اصلی کش افزایش سرعت بازیابی دادهها با حذف لایههای ذخیرهسازی زیرین است که میتواند روند اجرای برنامه را کندتر کند. به زبان سادهتر، کش به طور موقت زیرمجموعهای از دادهها را به جای یک پایگاه داده کامل ذخیره میکند.
به دلیل نرخ بالای درخواست عملیات ورودی/خروجی در ثانیه (IOPS) که توسط موتورهای حافظه داخلی و RAM پشتیبانی میشود، حافظه کش با بهبود سرعت بازیابی دادهها، عمر حافظههای ذخیرهسازی را نیز افزایش میدهد. یک کاربر یا سازمان برای دستیابی به سرعت بازیابی بیشتر برنامهها با استفاده از سختافزار و پایگاههای داده سنتی مبتنی بر دیسک، باید روی منابع بیشتری سرمایهگذاری کند که این امر هزینه را افزایش میدهد.
حافظه پنهان کش را میتوان از طریق فناوریهای مختلف، از جمله سیستمهای عامل، لایههای شبکه مانند CDN (شبکههای توزیع محتوا) و DNS، پایگاههای داده و اپلیکیشنهای وب اعمال کرده و از آن استفاده نمود. حافظه کش میتواند برای کاهش تأخیر و بهبود IOPS برای اکثر اپلیکیشنهای خواندنی مانند پورتالهای کوئری، سایتهای اشتراکگذاری رسانه، سایتهای بازی و حتی وبسایتهای شبکههای اجتماعی استفاده شود. اطلاعات ذخیره شده میتواند شامل نتایج جستجوهای پایگاه داده، درخواستها یا پاسخهای API، المانهای وب مانند فایلهای تصویری، HTML، جاوا اسکریپت و همچنین محاسبات فشرده باشد.
برای هر یک از این برنامهها، مجموعه دادههای حجیمی میبایست به صورت لحظهای در ماشینهای مختلف که صدها گره را در برمیگیرند در دسترس بوده تا امکان جستجو فراهم شود. کش این امکان را فراهم میکند تا این کار به شکل بلادرنگ و بدون تأخیر در بستر وب انجام گیرد.
بررسی انواع کش
در این بخش، انواع کش یا حافظه پنهان را مورد بررسی قرار میدهیم:
کش عمومی
برای مواردی که لزومی برای نگهداری دادهها روی دیسک یا پشتیبانی از دادههای تراکنش وجود ندارند، استفاده از کش دادهها به صورت یک پایگاه داده مستقل، روشی مؤثر است. به غیر از سرعت بالاتر، برنامهها با مصرف توان پایینتر در این روش، ثبت و بازیابی میشوند. کش عمومی را میتوان برای دادههای قابل ارجاع مانند فهرست بندی دادهها ، گروهبندی محصول و اطلاعات پروفایل استفاده کرد.
کش پایگاه داده
سرعت و عملکرد پایگاه داده یک عامل تأثیرگذار است که عملکرد کلی اپلیکیشن را تعیین میکند. کش پایگاه داده این امکان را برای شما فراهم میکند که با کاهش تأخیر بازیابی دادهها در هنگام استفاده از پایگاههای داده، توان عملیاتی را افزایش دهید. این امر به بهبود عملکرد اپلیکیشنها و برنامههای مختلف از نظر اجرا، کمک میکند. در این مورد، کش به عنوان یک لایه مجاور برای دسترسی به پایگاه داده عمل میکند و اپلیکیشنها میتوانند از آن برای بهبود عملکرد خود استفاده کنند. همچنین میتوانید کش پایگاه داده را در هر نوع پایگاه داده، از جمله NoSQL و پایگاههای داده رابطهای اعمال کنید.
کش CDN
شبکه تحوزیع محتوا یا CDN شبکهای است که محتوای وب مانند ویدیوها، تصاویر یا صفحات وب را در سرورهای پراکسی واقع در نزدیکی سرور مبدأ که توسط کاربران وب استفاده میشود، ذخیره میکند. به دلیل نزدیکی سرور پراکسی به کاربر درخواستکننده، یک شبکه تحویل محتوا، قادر است محتوای درخواستی را سریعتر تحویل دهد. برای درک آسانتر، میتوانید CDN ها را به عنوان زنجیرهای از فروشگاههای مواد غذایی در نظر بگیرید.
به جای سفر به جایی که مواد غذایی در آن تولید میشود، کافی است از یک فروشگاه مواد غذایی محلی دیدن کرده تا مواد مورد نیاز خود را تهیه کنید. به این ترتیب، CDN اطلاعات صفحه وب را ذخیره میکند تا بارگذاری آسانتر و سریعتر صفحات وب را امکانپذیر سازد. کش CDN را با عنوان کش سرور هم میشناسند.
شاید مطالب زیر برای شما مفید باشد:
آموزش پاک کردن کش DNS در ویندوز
چگونه یک محتوا، کش میشود؟
هنگامی که کاربر محتوایی را در وبسایتی درخواست میکند که از CDN استفاده کرده است، شبکه تحویل محتوا یا همان CDN، محتوا را در سرور مکانیابی میکند. این فرآیند باعث میشود یک کپی از محتوا در کش سرور CDN برای درخواستهای بعدی ذخیره شود. این دادهها در کش CDN باقی میماند و هر زمان که درخواست شود در دسترس قرار میگیرد. کش سرورهای CDN در مراکز داده در نقاط مختلف جهان قرار دارند. این روند تضمین میکند که سرورها در مجاورت کاربرانی باشند که برای دسترسی به یک محتوای خاص، درخواست دادهاند. هر چه سرور به کاربر نزدیکتر باشد، فرآیند بازیابی محتوا سریعتر خواهد بود. در بخش بعدی، با کش سرور به صورت دقیقتر آشنا خواهیم شد.
منظور از کش سرور چیست؟
کش سرور (cache server)که به آن موتور کش نیز گفته میشود، نوعی سرویس شبکه است که محتوای اینترنتی و صفحات وب را به صورت محلی ذخیره میکند. این کار با قرار دادن اطلاعاتی که قبلاً به صورت آنلاین درخواست شده بود در حافظه موقت کش انجام میگیرد. کش سرور، دسترسی به اطلاعات وب را سرعت میبخشد و در عین حال تقاضا برای پهنای باند مورد استفاده یک کاربر را کاهش میدهد. همچنین تضمین میکند که کاربران میتوانند در حالت آفلاین به محتوای وب از جمله فایلهای رسانهای جامع دسترسی داشته باشند.
کش سرور (cache server) معمولاً به صورت سرور پروکسی استفاده میشود. سرور پروکسی در واقع سروری است که درخواستهای اینترنتی را رهگیری کرده و آنها را برای کاربران مدیریت میکند. این کار به این دلیل انجام میشود که یک فایروال از منابع سازمان محافظت میکند. سرور به درخواستهای خروجی پاسخ داده و تمام ترافیک ورودی را نیز هدایت میکند. علاوه بر این، سرور پروکسی امکان تطبیق پیامهای دریافتی با درخواستهای خروجی را فراهم میکند.
با انجام این کار، کش سرور قادر است فایلهای دریافتی را برای فراخوانی بعدی توسط کاربر کش کند. کش و سرورهای پراکسی برای کاربران وب نامرئی هستند. در مقابل، به نظر میرسد که همه درخواستهای اینترنتی از آدرسی که کاربران در اینترنت قرار میدهند دریافت شده است.
موارد استفاده از کش سرور
به طور کلی میتوان مزایا و موارد استفاده از کش سرور را به صورت زیر خلاصه کرد:
کاهش پهنای باند
ارائه محتوا از طریق کش سرور پروکسی یا سرور CDN، نیاز به بازیابی دادهها از سرورهای اصلی را از بین میبرد. این مسئله به طور قابلتوجهی پهنای باند را کاهش خواهد داد، به ویژه در هنگام تحویل دادهها به بازدیدکنندگان وبسایت. با کمک کش سرورهای CDN، یک سازمان میتواند هزینههای پهنای باند را تا 80 درصد کاهش دهد، که البته به فضای کش در دسترس سازمان هم بستگی دارد.
تجربه کاربری بهتر
با توزیع شبکه جهانی سرورهای پروکسی، کش سرور CDN قادر است محتوای وبسایتها را بدون توجه به موقعیت مکانی آنها در سراسر جهان به بازدیدکنندگان وبسایت نزدیک کند. توانایی ارائه سریع محتوای مورد نیاز کاربر، سرعت دسترسی را بهبود میبخشد و در نتیجه تجربه کاربری بهتری را برای کاربران اینترنت به ارمغان میآورد. این مورد به نوبه خود، باعث میشود که کاربران در محیط وبسایت شما مدت بیشتری را جستجو کنند، نرخ تبدیل بهتر شده و روی سئوی سایت نیز اثر مثبت خواهد داشت.
تحویل محتوای قابلاعتماد
نرمافزارهای مدرن کش سرور CDN با ظرفیت ترافیکی بسیار بیشتری در مقایسه با شبکههای عادی سازمانی ساخته شدهاند. کش سرور انعطافپذیر و بسیار امن است، به اندازهای که میتواند در برابر افزایش ناگهانی ترافیک بدون ایجاد اختلال در وبسایت مقاومت کند. این ویژگی در مورد وبسایتهایی که دارای هاست داخلی هستند و به راحتی با افزایش غیرمنتظره ترافیک و حمله سرویس مختل میشوند، امکانپذیر نخواهد بود. کش سرورهای CDN در لحظاتی که وبسایت شما اوج ترافیک را تجربه میکند بسیار پایدار هستند.
کنترل هوشمند
تا همین اواخر، کش کردن CDN یک فرآیند دستی بود که در آن متخصصان وب باید یک کش سرور HTTP یا یک isp را به صورت دستی مدیریت میکردند. با این حال، CDN های مدرن فرآیندهای جدیدی را برای نظارت آسانتر و ذخیرهسازی کش برای محدوده وسیعتری از محتوا ارائه میدهند. این مسئله باعث صرفهجویی در وقت شده و کارایی کلی فرآیندهای کش را بهبود میبخشد.
این ویژگی که با عنوان کنترل هوشمند نیز شناخته می شود، امروزه روی هزینههای کش سرور تأثیر چندانی ندارد، به این خاطر که یک کنترل مبتنی بر یادگیری است که بر توانایی شبکه تحویل محتوا برای ردیابی الگوهای استفاده از محتوا تکیه دارد، بنابراین نیازی به افزایش ظرفیت حافظه کش برای اجرای این کنترلها نیست. مزیت اصلی کنترل هوشمند کش، توانایی شبکه برای شناسایی موقعیت ذخیرهسازی جدید برای محتواهایی است که به صورت پویا تولید میشوند. محتوایی که به تازگی با هر بازدید تولید میشود ممکن است دستخوش تغییر نشوند، اما به دلایل فنی، توسط کش سرور این محتوا به صورت پویا در نظر گرفته شده و میبایست تحت کنترل باشد.
سایر مزایای استفاده از کنترل هوشمند کش عبارتاند از:
- بازیابی مکرر برای محتوای با تقاضای بالا
- تنظیم کش برای ارائه محتوا بر اساس میزان محبوبیت و تعداد تقاضا
- اجرای خودکار روند بازیابی برای محتواهایی که به طور مکرر مورد تقاضای کاربران قرار میگیرند
- مدیریت بایگانی و حذف محتواهای بلااستفاده با گذر زمان
ملزومات مدیریت کش سرور
حتی با وجود قابلیتهای کش هوشمند، اعمال کنترل یک پیشنیاز اساسی برای مدیریت بهینه کش است.
کنترلهای ضروری کش عبارتاند از:
- پاکسازی حافظه کش: پاکسازی کش این امکان را به شما میدهد تا فایلهای کش شده را بهروزرسانی کنید.
برخی از ارائهدهندگان فقط اجازه میدهند کل حافظه کش بهروزرسانی شود در حالی که برخی از ارائهدهندگان CDN، تعداد پاکسازیهای مجاز را در یک دوره از پیش تعیین شده محدود میکنند.
دلیل این مسئله، احتیاطهایی که برای بازیابی محتواهای قدیمیتر وجود دارد. با این وجود، پاکسازی کش سرور میتواند به بهبود سرعت بازیابی اطلاعات جدید و مفید کمک کند.
- کنترل Never/Always: این کنترل به شما اجازه میدهد تا به صورت دستی هدرهای کش و تگهای فایلهایی را که همیشه از حافظه کش فراخوانی میشوند یا فایلهایی که هرگز فراخوانی میشوند، از هم تفکیک کنید.
این کنترل در مدیریت حافظه کش مفید است، به ویژه زمانی که با حجم بالایی از فایلهای دستهبندی نشده سروکار دارید. در این شرایط، کنترل Never/Always امکان دستهبندی و تفکیک فایلها، تصاویر، پوشهها و پروفایلها را بر اساس میزان تقاضا برای فراخوانی آنها، فراهم خواهد کرد.
- کش دورهای: این اصلاحی از کنترل کش است که به شما این امکان را میدهد که یک دوره زمانی مشخص را تعریف کنید که قرار است محتوا یا فایل مورد نظر از حافظه کش فراخوانی شود.
برای مدیریت آسان فایلهای خاص، میتوان از رابط گرافیکی CDN به کش دورهای دسترسی پیدا کرد. این یک گزینه مفید برای مدیریت فایلهای انبوه است، به عنوان مثال کش دورهای را میتوان بهگونهای تعریف کرد که تمام فایلهای JS حداقل به مدت پنج روز در حافظه کش قرار گیرند.
جمعبندی
در این مقاله با مفهوم کش، کاربردهای آن و به صورت خاص کش سرور آشنا شدیم. کش سرور، یک ابزار مفید به منظور کاهش تأخیر در دسترسی به محتواهای فراخوانی شده از سمت کاربر، بهبود سرعت درخواست و پاسخ در شبکه وب، دسترسی آسانتر به محتوا، کاهش هزینههای پهنای باند برای شرکتها و سازمانها و در نهایت بهبود نرخ تبدیل و فاکتورهای سئو برای وبسایتها است. ابزارهای مدیریت مدرن که اخیراً برای کش سرور ارائه شده است، امکان پاکسازی خودکار، مدیریت و دستهبندی محتواها و فایلها، و اولویتبندی محتوا بر اساس میزان تقاضا را به کاربران میدهد.