انواع کش در سیستم های تحت وب

انواع کش در سیستم های تحت وب

مدت مطالعه : 4 دقیقه

05 فروردین 1402

در سرویس های تحت وب، برای افزایش سرعت دریافت اطلاعات توسط کاربر از انواع روش های کش استفاده می‌شود. انواع مختلف این روش ها بر اساس نیاز های متفاوت سیستم، بکار گرفته می‌شود. در این مطلب سطوح مختلف کش و کاربرد آن ها ارائه شده است.

 

کش سمت کلاینت(Client-side caching)

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

 

کش شبکه توزیع محتوا(CDN)

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

کش سمت سرور(Server-side caching)

 کش سمت سرور شامل ذخیره سازی داده هایی است که در سمت سرور قابل دسترسی هستند و تعداد درخواست هایی که به پایگاه های داده ارسال می شود را کاهش می دهد. این نوع کش به ویژه برای داده های پویا که به طور مکرر مورد استفاده قرار می‌گیرند مفید است. هنگامی که درخواست داده می شود، برنامه ابتدا بررسی می کند که آیا داده ها در حافظه کش وجود دارند یا خیر. اگر داده در کش وجود داشته باشد، به کاربر بازگردانده می شود و نیازی به فرخوانی پایگاه داده و خواندن اطلاعات از روی دیسک نیست. این عمل می تواند به طور قابل توجهی زمان پاسخ را برای داده هایی که مکررا فراخوانی می‌شوند کاهش دهد و عملکرد برنامه را بهبود بخشد. 

 

کش پایگاه داده(Database caching)

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

کش توزیع شده (Distributed cache)

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

 

 

خلاصه مطلب

اهمیت هر لایه کش بسته به نیازها و طراحی سرویس متفاوت است.

کش سمت کلاینت برای بهبود عملکرد وب سایت ها و کاهش بار روی سرور کاربردی است، به ویژه برای منابع استاتیک که معمولاً در چندین صفحه استفاده می شوند.

حافظه پنهان CDN می تواند برای ارائه سریع محتوا به کاربران حیاتی باشد، به ویژه برای برنامه های کاربردی در مقیاس بزرگ که محتوا را به کاربران در سراسر جهان ارائه می دهند.

کش سمت سرور و کش پایگاه داده هر دو برای بهبود عملکرد برنامه های کاربردی پویا، به ویژه برای داده هایی که بصورت مکرر فراخوانی می‌شوند، مهم هستند.

حافظه پنهان توزیع شده می تواند برای برنامه های کاربردی در مقیاس بزرگ و توزیع شده با سطوح بالای ترافیک مهم باشد، زیرا می تواند بار روی پایگاه داده را به میزان قابل توجهی کاهش دهد و عملکرد برنامه را بهبود بخشد.

بنابراین، هر لایه کش به نوع خود مهم است و انتخاب سیاست بکارگیری از انواع کش ها بستگی به نیازها و نحوه طراحی سیستم دارد.

 

 

 

  • اشتراک گذاری:
محمدرضا باباخانی
محمدرضا باباخانی

من محمدرضا باباخانی هستم، توسعه دهنده نرم افزار. در اینجا تجربیات، نظرات و پیشنهادات خودم رو درباره تکنولوژی مینویسم. امیدوارم مطالبی که می‌نویسم بدردتون بخوره.

آخرین مطالب

سرویس مش؛ ساده سازی ارتباطات میکروسرویس و افزایش رؤیت پذیری

در چشم انداز همیشه در حال تحول توسعه نرم افزار، معماری میکروسرویس ها به دلیل مقیاس پذیری، انعطاف پذیری و توسعه پذیری محبوبیت قابل توجهی به دست آورده است. با این حال، با افزایش تعداد میکروسرویس ها در یک برنامه، مدیریت ارتباطات آنها و اطمینان از رؤیت صحیح همه آنها به طور فزاینده ای چالش برانگیز می شود. اینجاست که سرویس مش وارد عمل می شود.

اهمیت محاسبات لبه یا Edge Computing

ا توجه به سرعت تحول فناوری، یکی از مفاهیمی که توجه زیادی را به خود جلب کرده و نحوه تعامل ما با سیستم های دیجیتال را تغییر می دهد، محاسبات لبه (Edge Computing) است.

معماری رویداد محور چیست؟

معماری رویداد محور (EDA) یک الگوی طراحی نرم افزار است که در توسعه نرم افزار های مدرن به طور چشمگیری محبوب شده است. در این معماری، جریان داده ها با وقوع رویدادها تعیین می شود. بر خلاف سیستم های متمرکز سنتی که دائماً در حال بررسی وضعیت جدید هستند. معماری رویداد محور به ویژه برای سیستم هایی مفید است که به پردازش حجم زیادی از داده ها بصورت بلادرنگ(real-time) نیاز دارند.

برچسب های مرتبط

ثبت دیدگاه