در پاسخ به سوال کش چیست باید بگویم :
کش یا cache به معنی کپی گرفتن و ذخیر سازی موقت یک نسخه استاتیک و ثابت از اطلاعات وبسایت به منظور دسترسی سریعتر است.
ذخیرهسازی موقت در تکنولوژیها و راهکارهای نرم افزاری مختلفی اجرا میشود اما اغلب واژه کش در دنیای اینترنت و وبسایتها پر استفادهتر است.
برای مثال :
- حافظه کش لبتاپها و کامپیوترهای خانگی
- حافظه کش نرم افزارهایی همچون پریمیر، ادوب ایلاستریتور و …
- حافظهی Cache دستگاههای موبایل و …
اما در این یادداشت فنی بیشتر به cache و caching در دنیای اینترنت و وبسایتها میپردازیم.
یکی از انواع کاربردهای مهم کشینگ در دنیای وب کش مرورگرهاست.
با استفاده از تکنولوژی کش ، مرورگرهای وب یک کپی و نسخه استاتیک از فایلهای HTML ، js ، CSS و تصاویر را به منظور بارگذاری سریعتر وبسایتها در حافظه نهان خود ذخیرهسازی میکنند و در بارگذاریهای دفعات بعد سایت این عملیات با سرعت بیشتری قابل انجام است.
البته این خلاصهای از ساز و کار caching مرورگرهاست و انواع دیگر کشها از قبیل کش CDN و کش dns و کش سمت سرور، ساز و کار و کاربردهای خاص خود را دارند.
بیایید به یادگیری دربارهی کش و انواع cache ادامه دهیم.
کش مرورگر (browser cache)
هربار که کاربری صفحهای از وبسایت را بارگذاری میکند اطلاعات زیادی را باید از سرور دریافت کرده ، پردازش کند و نمایش دهد.
این را هم در گوشهای ذهن خود داشته باشید که حجم زیادی از کدها، و اطلاعات در تمام صفحات وبسایت یکسان است.
برای مثال فوتر و هدر که در تمام سایت در حال نمایش هستند.
مروگر با استفاده از کشی که دربارهی آن صحبت میکنیم اطلاعات هر صفحه (اعم از کدها، تصاویر و …) را به طور موقت در هارد دیسک دستگاه ذخیره سازی میکند.
بنابراین مرورگر با تهیه نسخه کش از وبسایت برای بارگذاری دوباره صفحه و یا صفحات دیگر سایت ، در مدت زمان بسیار کوتاهتری وبسایت را لود کرده و بارگذاری کرده و صرفا کدها و اطلاعاتی جدید را که تا بحال دریافت نکرده را دریافت میکند.
و نیازی به این ندارد که اطلاعاتی را که قبلا ذخیرهسازی کرده را بار دیگر ذخیره کند.
چرا بهصورت موقت ؟
چون مرورگر اطلاعات را تا زمانی که دوره استفادهی آنها تنظیم شده ذخیرهسازی میکند.
علاوه بر این کاربر ممکن است خودش به دلخواه حافظه کش مرورگر را خالی و پاکسازی کند.
اگر در حوزه طراحی سایت مشغول باشید حتما به این موضوع بر خوردهاید که میشود گاها تغییراتی را در سایت ایجاد کنید اما در مرورگرها تغییرات شما نمایش داده نشود.
فکر میکنم اکنون بخوبی میدانید چرا این اتفاق رخ میدهد.
کش شبکه توزیع محتوا (CDN caching)
نوعی دیگر از حافظه کش در زیر ساخت شبکه توزیع محتوا تعبیه میشود که آن را به اصطلاح cdn cache مینامند.
در کش CDN نسخهای ثابت از اطلاعات وبسایت تهیه شده و در چندین سرور در دیتاسنترهای مختلف در موقعیتهای جغرافیایی گوناگونی ذخیره میشود.
از این رو کاربر نهایی وقتی قصد دسترسی به وبسایت را داشته باشد دیگر نیازی به دریافت اطلاعات از سرور اصلی نبوده و اطلاعات کش شده از نزدیکترین سرور برای وی ارسال میشود.
همین ساز و کار cdn با استفاده از کش باعث افزایش سرعت سایت ها میشود.
وبسایت Cloudflare یک تشبیه بسیار ساده و عالی برای توضیح cdn ارائه کرده که مرور این مثال خالی از لطف نیست
CDN را به مانند یک فروشگاه زنجیرهای مواد غذایی در نظر بگیرید که دیگر خریداران لازم نیست مواد غذایی خود را از کیلومترها دورتر و از زمین زراعی تهیه کنند.
مسئولیت لجستیک و تحویل مواد غذایی بر عهدهی فروشگاه بوده و از مزرعه برای هر شعبهی خود مواد غذایی را ارسال میکنند.
و خریداران برای تهیهی مواد غذایی خود به راحتی از نزدیکترین شعبه اقدام میکنند.
دقیقا CDN چیزی مشابه این است.
و در سیستم کش نسخههایی از وبسایت را به شعبات خود در سرتاسر دنیا ارسال میکند.
هنگامی که کاربری میخواهد به وبسایت دسترسی پیدا کند در حقیقت به وبسایت دسترسی پیدا نمیکند بلکه به نزدیکترین نسخه کش شده وبسایت دسترسی دارد.
کش نیم سرور (DNS Caching)
برای درک بهتر کش DNS بهتر است اول بدانید که دقیقا DNS چیست و چگونه کار میکند.
در کش dns اطلاعات مربوط به دسترسی dns در با اجازه سرویس میزبانی dns در دیوایس ذخیره و برای دسترسی به سرور از طریق دامنه نیازی به بازخوانی مجدد اطلاعات نیست.
از همین رو کش dns با کاهش زمان TTFB و کمتر کردن مدت زمان دسترسی به سرور از طریق دامنه باعث افزایش سرعت دسترسی به وبسایت میشود.