مقدمه
در دنیای توسعه وب مدرن، سرعت بارگذاری صفحات و پاسخدهی سرور نقش عمدهای در موفقیت یک برنامه وب دارد. یکی از کلیدیترین تکنیکهایی که میتواند تاثیر چشمگیری بر عملکرد سیستم داشته باشد، استفاده از Caching (ذخیرهسازی موقت دادهها) است.
Caching چیست؟
Caching یا کش کردن به فرآیند ذخیرهسازی دادههای موقتی در یک محل با سرعت بالا (مانند حافظه یا دیسک) گفته میشود تا در درخواستهای بعدی سریعتر به آنها دسترسی پیدا کنیم. این کار با کاهش دسترسیهای مکرر به منابع سنگین مانند پایگاهداده یا Api، باعث افزایش سرعت اجرای برنامه میشود.
انواع Caching در برنامههای وب
1. Cache سمت کلاینت
- Browser Cache: مرورگرها میتوانند فایلهای استاتیک مانند CSS، JS و تصاویر را روی حافظه مرورگر نگه دارند.
- Local Storage و Session Storage: برای ذخیره دادههای کلاینت محور که نیاز به ماندگاری بیشتر دارند.
- Service Workers: در برنامههای PWA برای caching آفلاین صفحات و درخواستها.
2. Cache سمت سرور
- Output Caching: ذخیره کامل خروجی صفحات یا عملیات پردازشی در سرور.
- Object Caching: ذخیره اشیاء یا نتایج محاسباتی از قبل.
- Database Query Caching: نگهداری نتایج queryهای پرتکرار.
ابزارهای رایج برای Cache کردن
- Redis: پایگاهداده In-memory بسیار سریع برای Object Caching.
- Memcached: مشابه Redis، سبک وزن و مناسب برای query caching.
- HTTP Caching: استفاده از Headerهایی مانند
Cache-Control
،ETag
وExpires
.
نحوه پیادهسازی Caching در ASP.NET Core
در ASP.NET Core میتوان از Caching به شکلهای مختلف استفاده کرد:
In-Memory Caching
در حافظه سمت سرور ذخیره میشود و بسیار سریع است:
public class ProductService
{
private readonly IMemoryCache _cache;
public ProductService(IMemoryCache cache)
{
_cache = cache;
}
public Product GetProduct(int id)
{
return _cache.GetOrCreate($"product_{id}", entry =>
{
entry.AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(10);
return GetProductFromDatabase(id);
});
}
}
Response Caching Middleware
این قابلیت با استفاده از Middleware و Header مناسب فعال میشود.
public void ConfigureServices(IServiceCollection services)
{
services.AddResponseCaching();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseResponseCaching();
}
و سپس در کنترلر:
[HttpGet]
[ResponseCache(Duration = 60)]
public IActionResult GetHomePage()
{
return View();
}
Best Practices در Caching
- همیشه دادههای کش شده را expire یا invalidate کنید.
- برای دادههایی که تغییر نمیکنند یا تغییرات کمی دارند استفاده شود.
- در نظر گرفتن Consistency (همخوانی دادهها) لازم است.
- سطح Cache را با توجه به نیاز انتخاب کنید (کلاینت، سرور، شبکه).
مزایای استفاده از Caching
- کاهش بار روی دیتابیس و سرور
- افزایش سرعت پاسخدهی به کاربر
- صرفهجویی در مصرف پهنای باند
- افزایش مقیاسپذیری سیستم
جمعبندی
Caching یکی از ضروریترین ابزارهای بهینهسازی در هر برنامه وب است. با پیادهسازی درست آن، نهتنها سرعت برنامه شما افزایش مییابد، بلکه تجربه کاربری نیز به شکل چشمگیری بهبود مییابد.
اگر میخواهید با اصول معماری برنامههای سریعتر آشنا شوید، پیشنهاد میکنیم دوره پیشرفته کارایی برنامههای ASP.NET Core را در DevTube.ir مشاهده کنید.