کش کردن (caching)فرآیند ذخیره چند کپی از فایلها در یک مکان ذخیرهسازی موقت است، به طوری که بتوان سریعتر به آنها دسترسی داشت. از نظر فنی، کش (cache) هر مکان ذخیرهسازی موقتی است که برای کپی فایلها یا دادهها استفاده میگردد. اما این اصطلاح اغلب در اشاره به فناوریهای اینترنتی به کار برده میشود. مرورگرهای وب فایلهای HTML، جاوااسکریپت و تصاویر را به منظور بارگیری سریعتر وبسایتها در حافظه پنهان نگه میدارند. در حالی که سرورهای DNS سوابق DNS را برای جستجوی سریعتر و سرورهای CDN محتوا را برای کاهش تاخیر در حافظه پنهان ذخیره میکنند.
آنچه در این مقاله میخوانید:
کش مرورگر چه کاری انجام میدهد؟
پاک کردن کش مرورگر چه کاری انجام میدهد؟
CDN cache hit چیست؟ CDN cache miss چیست؟
دادههای کش در سرور CDN چه مدتی باقی میمانند؟
انواع دیگر حافظه پنهان چگونه کار میکنند؟
قوانین کش چیست و چگونه باید آنها را تنظیم کرد؟
کش مرورگر چه کاری انجام میدهد؟
هر بار که کاربر یک صفحه وب را بارگیری میکند، مرورگر او باید دادههای بسیار زیادی را برای نمایش آن صفحه دانلود کند. برای کوتاه کردن زمان بارگذاری صفحه، مرورگرها بیشتر محتوایی را که در صفحه وبسایت ظاهر میشود، در حافظه پنهان ذخیره میکنند. به این ترتیب بار بعدی که کاربر صفحه را بارگذاری میکند، بیشتر محتوا از قبل به صورت محلی ذخیره شده است و صفحه با سرعت بیشتری بارگیری میشود.
مرورگرها این فایلها را تا هنگامی که زمان حیات آنها (time to live- TTL) تمام شود یا تا زمانی که حافظه پنهان هارددیسک پر شود، ذخیره میکنند. ( TTL نشاندهنده مدت زمان ذخیرهسازی محتواست.) کاربران همچنین میتوانند کش مرورگر خود را در صورت تمایل به صورت دستی پاک کنند.
پاک کردن کش مرورگر چه کاری انجام میدهد؟
هنگامی که حافظه پنهان مرورگر را پاک میکنید، هر صفحه وب به گونهای بارگذاری میشود که گویی اولین بار است که کاربر از صفحه بازدید میکند. اگر وبسایتی بار اول به صورت نادرست بارگیری و در حافظه پنهان ذخیره شد، پاک کردن حافظه پنهان میتواند به آن اجازه بارگیری صحیح را بدهد. با این حال، پاک کردن کش مرورگر میتواند به طور موقت زمان بارگذاری صفحه را کاهش دهد.
کش CDN چیست؟
یک CDN یا شبکه تحویل محتوا، محتوا (مانند تصاویر، ویدیوها یا صفحات وب) را در سرورهای پروکسی که نسبت به سرورهای اصلی به کاربران نهایی نزدیکتر هستند ذخیره میکند. از آنجایی که در CDN درخواستها توسط نزدیکترین سرور به کاربر پاسخ داده میشود، CDN میتواند محتوا را سریعتر ارائه دهد.
CDN محتوایی را که در اینترنت ظاهر میشود ذخیره میکند تا صفحاب وب سریعتر بارگیری شوند. هنگامی که یک کاربر با استفاده از CDN از یک وبسایت محتوایی را درخواست میکند، یک کپی از محتوا را برای درخواستهای بعدی ذخیره میکند. تا زمانی که کاربران به درخواست خود ادامه دهند، محتوای ذخیره شده در حافظه پنهان CDN باقی میماند.
CDN cache hit چیست؟ CDN cache miss چیست؟
CDN cache hit زمانی است که یک دستگاه سرویس گیرنده از حافظه پنهان درخواستی برای محتوا میکند و آن محتوا قبلا کش شده، محتوای کش شده برای کاربر ارسال میشود و سپس محتوای ارسال شده برای درخواستهای بعدی کش میشود. CDN cache miss زمانی رخ میدهد که محتوای درخواستی در حافظه پنهان ذخیره نشده باشد.
cache hit به این معناست که محتوا میتواند بسیار سریعتر بارگیری شود، زیرا CDN میتواند بلافاصله آن را به کاربر نهایی تحویل دهد. در مورد CDN cache miss ، یک سرور CDN درخواست را به سرور مبدا ارسال میکند، سپس پس از پاسخ سرور مبدا، محتوا را کش میکند تا درخواستهای بعدی منجر به cache hit شود.
سرورهای کش CDN کجا قرار دارد؟
مکانی که سرورهای CDN در آن حضور دارند مرکز داده نامیده میشود. سرورهای کش CDN در مراکز داده در سراسر جهان قرار دارند. یک ارائهدهنده CDN خوب سرورهای مختلفی در شهرهای سراسر جهان دارد که بتواند تا حد امکان به کاربران نهایی دسترسی نزدیکتری داشته باشد. شبکه تحویل محتوای اَبر دِراک با داشتن مراکز داده در شهرهای مختلف ایران از جمله شیراز، تهران و تبریز و همچنین مناطق خارج از کشور مانند اروپا، آمریکا، آسیای شرقی و … یکی از برترین ارائهدهندگان CDN در ایران است.
دادههای کش در سرور CDN چه مدتی باقی میمانند؟
وقتی وبسایتها با ارسال محتوای درخواستی به سرورهای CDN پاسخ میدهند، زمان حیات محتوا (time to live- TTL) را هم ضمیمه میکنند و به سرورها اجازه میدهند بدانند چه مدت باید آن را ذخیره کنند. TTL در بخشی از پاسخ با نام هدر HTTP ذخیره میشود و مشخص میکند که محتوا برای چند ثانیه، دقیقه یا ساعت ذخیره شود. هنگامی که TTL منقضی میشود، حافظه پنهان محتوا را حذف میکند. اگر محتوا برای مدتی درخواست نشود یا مشتری CDN به صورت دستی محتوای خاصی را حذف کند، برخی CDNها فایلها را زودتر از حافظه پنهان پاک میکنند.
انواع دیگر حافظه پنهان چگونه کار میکنند؟
علاوه بر کش CDN انواع دیگری از کش نیز وجود دارد که شما با توجه به مزایا و معایب هر کدام میتوانید از آنها استفاده کنید:
کش DNS
کش DNS در سرورهای DNS انجام میشود. سرورها جستجوهای DNS اخیر را در حافظه پنهان خود ذخیره میکنند تا مجبور نباشند سرورهای نام را پرس و جو کنند و بتوانند فورا با آدرس IP یک دامنه پاسخ دهند.
کش موتورهای جستجو
موتورهای جستجو ممکن است وبسایتی را که اغلب در نتایج جستجو ظاهر میشوند ذخیره کنند تا به سوالات کاربر پاسخ دهند. حتی اگر وبسایتی که میخواهند به آن دسترسی پیدا کنند موقتا از کار افتاده یا قادر به پاسخگویی نباشد.
کش پایگاه داده
سرعت و عملکرد پایگاه داده شما یک عامل تاثیرگذار است که عملکرد کلی برنامه را تعیین میکند. حافظه پنهان پایگاه داده این امکان را برای شما فراهم میکند که با کاهش تاخیر در بازیابی دادهها در هنگام استفاده از پایگاههای داده بک اند، توان عملیاتی را افزایش دهید.
این امر منجر به بهبود عملکرد برنامهها میشود. در این مورد، کش به عنوان یک لایه مجاور برای دسترسی به دادهها عمل میکند که برنامههای کاربردی شما میتوانند از آن برای بهبود عملکرد خود استفاده کنند. شما میتوانید کش پایگاه داده را در هر نوع پایگاه دادهای، از جمله NoSQL و پایگاههای داده رابطهای اعمال کنید. روشهای رایجی که میتوان برای بارگذاری دادهها در حافظه پنهان استفاده کرد، شامل روشهای Write through و بارگذاری تنبل (lazy loading) است. write through یک روش ذخیرهسازی است که در آن دادهها به طور همزمان در حافظه پنهان و محل حافظه اصلی مربوطه نوشته میشوند. دادههای کش امکان بازیابی سریع در صورت تقاضا را فراهم میکنند، در حالی که همان دادهها در حافظه اصلی تضمین میکنند که در صورت خرابی، قطع برق یا سایر اختلالات سیستم چیزی از بین نخواهد رفت.
قوانین کش چیست و چگونه باید آنها را تنظیم کرد؟
قوانین کش به انتشاردهندگان محتوا این امکان را میدهد که پارامترهایی را برای تعداد دفعات و مدت زمان ذخیره عناصر وبسایت در حافظه پنهان تنظیم کنند. اگر کاربری قبلا از صفحه اصلی وبسایت شما بازدید کرده باشد، منطقی نیست که برای بازدید دوباره از همان صفحه درخواستی را به سمت سرور ارسال کند. اگر محتوای وبسایت تغییر نکرده است، ارائه یک نسخه کش از وبسایت به کاربران امکان بارگذاری سریعتر وبسایت را فراهم میکند. بیشتر ناشران به دلیل توصیههایی در ممیزی عملکرد Google Lighthouse با قوانین کش آشنا هستند. Google lighthouse ابزاریست که هر صفحه وبسایت را با معیارهای مختلفی میسنجد و توصیههایی را در جهت بهبود وبسایت به کاربران ارائه میدهد.
توصیههای Lighthouse برای ارائه داراییهای استاتیک با سیاست کش کارآمد میتواند به بهبود سرعت سایت و تجربه کاربری کمک کند. برخی از ناشران این کار را با افزونههای کش انجام میدهند. در وبسایتهای دیگر نیز میتوان دستورالعمل حداکثر عمر کش را به صورت دستی کدگذاری کرد تا به مرورگر بگویند که چه مدت زمانی باید محتوا را در حافظه پنهان نگه دارد.
Cache-Control: max-age=31557600
این زمان بر حسب ثانیه در نظر گرفته می شود و معادل یک سال با 365 روز است. شما میتوانید مدت زمان دلخواه خود را به عنوان سن انقضای کش قرار دهید.
رفتارهای پیشفرض کش
به طور معمول CDN به هدرهای کش سرور اصلی وب به ترتیب زیر احترام میگذارد؛ مگر اینکه یک قانون صفحه Edge Cache TTL این هدرها را لغو کند.
- به طور معمول CDNها منابع را در موارد زیر کش نمیکنند:
- هدر Cache-Control بر روی private، no-store، no-cache یا max-age=0 تنظیم شده است.
- هدر Set-Cookie وجود دارد.
CDN زمانی منبع را کش میکند که:
- هدر Cache-Control بر روی public و max-age بر روی عددی بزرگتر از 0 تنظیم شده باشد. اگر هیچ هدر Cache-Control بر اساس کدهای وضعیت وجود نداشته باشد، CDN منبع را کش میکند.
- هدر Expires بر روی تاریخی در آینده تنظیم شده باشد.
توجه: اگر max-age و سرصفحه Expires تنظیم شده باشند، CDN از max-age استفاده میکند.
سوالات متداول:
کش CDN چیست؟
در هنگام درخواست یک محتوای وبسایت از طریق CDN که میتواند شامل تصاویر، ویدیوها یا صفحات وب باشد، CDN این محتوا را در سرورهای مختلف ذخیره میکند. در هنگام درخواست دوباره کاربران آنها را از کش نزدیکترین سرور به کاربر ارائه میدهد.
چرا باید از کش CDN استفاده کنیم؟
کش CDN میتواند باعث افزایش سرعت بارگذاری وبسایت، کاهش بار کاری سرور، بهبود عملکرد وبسایت و … شود.
منابع:
https://www.cloudflare.com/learning/cdn/what-is-caching
https://developers.cloudflare.com/cache/about/default-cache-behavior/