مقدمهای بر Caching
در توسعه برنامههای وب، عملکرد (Performance) یکی از فاکتورهای کلیدی محسوب میشود. اگر برنامه شما کند باشد، کاربران آن را ترک خواهند کرد. یکی از روشهای مؤثر جهت بهینهسازی عملکرد، استفاده از Caching است.
Caching چیست؟
Caching به معنای ذخیره موقت اطلاعاتی است که در بازههای زمانی کوتاه نیازی به تغییر ندارند. هدف از کش کردن، کاهش درخواستهای تکراری به منابع سرور یا پایگاه داده و ارائه پاسخ سریعتر به کاربر است.
انواع مختلف Caching در برنامههای وب
۱. کش سمت کاربر (Client-Side Caching)
در این نوع کش، اطلاعات در مرورگر کاربر ذخیره میشود. انواع کش سمت کاربر شامل موارد زیر است:
- HTTP Cache
- Service Workers
- LocalStorage / SessionStorage
<meta http-equiv="Cache-Control" content="max-age=86400" />
۲. کش سمت سرور (Server-Side Caching)
در این روش، اپلیکیشن سرور قبل از تولید مجدد محتوا، نسخهای کش شده را به کاربر ارائه میکند. انواع آن عبارتند از:
- Page Output Caching
- Data Caching
- Fragment Caching
// نمونهای از کش داده در ASP.NET Core
private static readonly MemoryCache _cache = new MemoryCache(new MemoryCacheOptions());
public string GetData()
{
if (!_cache.TryGetValue(❝myKey❝, out string result))
{
result = ❝داده از بانک اطلاعاتی❝;
_cache.Set(❝myKey❝, result, TimeSpan.FromMinutes(10));
}
return result;
}
۳. کش CDN (شبکه توزیع محتوا)
CDNها درخواستها را در نزدیکترین سرور ممکن کش میکنند. این کار باعث کاهش تأخیر و افزایش سرعت لود میشود. برای مثال Cloudflare و Fastly نمونههایی از CDNهای محبوب هستند.
# نمونه تنظیمات کش در Nginx
location /images/ {
proxy_cache my_cache;
proxy_pass http://backend;
}
مزایای استفاده از Caching
- کاهش بار سرور
- افزایش سرعت پاسخدهی به کاربر
- صرفهجویی در منابع
- مقیاسپذیری بالاتر
استراتژیهای کش کردن
راهکارهای کش کردن بسته به نوع دادهها و نیاز پروژه متفاوت هستند. چند استراتژی رایج عبارتند از:
- Write-Through Cache: نوشتن همزمان در کش و دیتابیس
- Write-Back Cache: نوشتن فقط در کش و همگامسازی دورهای با دیتابیس
- Cache Aside: بررسی وجود داده در کش قبل از دیتابیس
Best Practices برای Caching
- استفاده از کش برای دادههایی که زیاد تغییر نمیکنند
- تنظیم TTL (زمان اعتبار) مناسب
- invalidate کردن کش هنگام تغییر داده
- استفاده از ابزارهایی مانند Redis برای کش توزیعشده
نمونهای از استفاده Redis در ASP.NET Core
services.AddStackExchangeRedisCache(options =>
{
options.Configuration = ❝localhost:6379❝;
});
جمعبندی
Caching ابزاری قدرتمند برای بهبود عملکرد و تجربه کاربری وبسایتهاست. با انتخاب صحیح نوع کش و تنظیمات مناسب میتوانید به طور قابل توجهی زمان پاسخ و مقیاسپذیری سیستم خود را بهبود دهید. در دوره آموزش بهینهسازی عملکرد در ASP.NET Core در سایت Devtube.ir میتوانید پیادهسازی عملی این مفاهیم را مشاهده نمایید.