در سرویس های تحت وب، برای افزایش سرعت دریافت اطلاعات توسط کاربر از انواع روش های کش استفاده میشود. انواع مختلف این روش ها بر اساس نیاز های متفاوت سیستم، بکار گرفته میشود. در این مطلب سطوح مختلف کش و کاربرد آن ها ارائه شده است.
کش سمت کلاینت تکنیکی است برای ذخیره سازی داده ها در دستگاه کاربر(مانند کش مرورگر)، که به کاهش تعداد درخواست های ارسال شده به سرور کمک می کند. این تکنیک برای منابع استاتیک مانند تصاویر، CSS و فایلهای جاوا اسکریپت که در چندین صفحه مختلف استفاده میشوند، مفید است. هنگامی که کاربر از وب سایتی بازدید می کند که از کش سمت سرویس گیرنده استفاده می کند، مرورگر منابع مورد نیاز برای بارگذاری صفحه را کش می کند. دفعه بعد که کاربر از وب سایت بازدید می کند، مرورگر ابتدا کش های موجود را برای منابع مورد نیاز، قبل از درخواست آنها از سرور بررسی می کند. این عمل به کاهش بار روی سرور و بهبود عملکرد برنامه کمک می کند.
کش CDN نوعی از کش است که محتوای مورد نیاز کاربر را در سرور هایی که از نظر جغرافیایی به کاربر نزدیک هستند نگهداری میکند. همین امر باعث میشود زمان تحویل محتوا به کاربر به میزان قابل توجهی کاهش یابد، زیرا درخواست از سرور نزدیک به جای سرور اصلی ارائه می شود. کش CDN برای ارائه منابع استاتیک مانند تصاویر، فیلم ها و سایر محتوای چندرسانه ای بسیار مفید است. هنگامی که یک درخواست برای محتوا انجام می شود، CDN ابتدا حافظه کش خود را برای محتوا بررسی می کند. اگر محتوا در حافظه کش وجود داشته باشد، از سرور کش ارائه می شود، که باعث کاهش بار بر روی سرور مبدا و بهبود عملکرد برنامه می شود. محبوب ترین و بزرگترین ارائه دهنده این سرویس، شرکت Cloudflare است که این سرویس را با پلن های متنوع ازجمله پلن رایگان در دسترس قرار داده است.

کش سمت سرور شامل ذخیره سازی داده هایی است که در سمت سرور قابل دسترسی هستند و تعداد درخواست هایی که به پایگاه های داده ارسال می شود را کاهش می دهد. این نوع کش به ویژه برای داده های پویا که به طور مکرر مورد استفاده قرار میگیرند مفید است. هنگامی که درخواست داده می شود، برنامه ابتدا بررسی می کند که آیا داده ها در حافظه کش وجود دارند یا خیر. اگر داده در کش وجود داشته باشد، به کاربر بازگردانده می شود و نیازی به فرخوانی پایگاه داده و خواندن اطلاعات از روی دیسک نیست. این عمل می تواند به طور قابل توجهی زمان پاسخ را برای داده هایی که مکررا فراخوانی میشوند کاهش دهد و عملکرد برنامه را بهبود بخشد.
کش پایگاه داده تکنیکی است برای ذخیره دادههای پر مصرف در حافظه رم به منظور کاهش تعداد دفعاتی که پایگاه داده نیاز به فراخوانی آن ها از حافظه دیسک دارد. این تکنیک می تواند عملکرد برنامه را با کاهش زمان بازیابی داده ها از پایگاه داده بهبود بخشد. هنگامی که یک برنامه، اطلاعاتی را از پایگاه داده درخواست می کند، ابتدا در حافظه کش بررسی می شود. اگر داده ها در حافظه کش وجود داشته باشد، به برنامه بازگردانده می شود و نیازی به پرس و جو از پایگاه داده نیست. ابزار های رایج برای بکارگیری از کش پایگاه داده عبارتند از Redis، Memcached، Oracle Coherence، Hazelcast، Couchbase.

ذخیره سازی توزیع شده شامل ذخیره سازی داده ها در چندین سرور برای بهبود عملکرد و در دسترس بودن داده ها است. این عمل اغلب در برنامه های کاربردی در مقیاس بزرگ با سطوح بالای ترافیک استفاده می شود. هنگامی که یک درخواست برای داده دریافت می شود، لایه کش ابتدا بررسی می کند که آیا داده ها در حافظه کش محلی موجود هستند یا خیر. اگر داده ها در حافظه کش محلی وجود نداشته باشند، از یک گره کش راه دور بازیابی می شوند. این نوع کش می تواند به میزان قابل توجهی بار روی پایگاه داده را کاهش دهد و عملکرد برنامه را به خصوص در محیط های توزیع شده بهبود بخشد. ابزار های رایج پیاده سازی این نوع کش عبارتند از Hazelcast، Apache Ignite، .Redis Cluster
اهمیت هر لایه کش بسته به نیازها و طراحی سرویس متفاوت است.
کش سمت کلاینت برای بهبود عملکرد وب سایت ها و کاهش بار روی سرور کاربردی است، به ویژه برای منابع استاتیک که معمولاً در چندین صفحه استفاده می شوند.
حافظه پنهان CDN می تواند برای ارائه سریع محتوا به کاربران حیاتی باشد، به ویژه برای برنامه های کاربردی در مقیاس بزرگ که محتوا را به کاربران در سراسر جهان ارائه می دهند.
کش سمت سرور و کش پایگاه داده هر دو برای بهبود عملکرد برنامه های کاربردی پویا، به ویژه برای داده هایی که بصورت مکرر فراخوانی میشوند، مهم هستند.
حافظه پنهان توزیع شده می تواند برای برنامه های کاربردی در مقیاس بزرگ و توزیع شده با سطوح بالای ترافیک مهم باشد، زیرا می تواند بار روی پایگاه داده را به میزان قابل توجهی کاهش دهد و عملکرد برنامه را بهبود بخشد.
بنابراین، هر لایه کش به نوع خود مهم است و انتخاب سیاست بکارگیری از انواع کش ها بستگی به نیازها و نحوه طراحی سیستم دارد.
من محمدرضا باباخانی هستم، توسعه دهنده نرم افزار. در اینجا تجربیات، نظرات و پیشنهادات خودم رو درباره تکنولوژی مینویسم. امیدوارم مطالبی که مینویسم بدردتون بخوره.
ثبت دیدگاه