3721
یکی از بهترین راه های بهینه سازی در وب و وب سرویس ها Cach کردن اطلاعات است.
ما برای Cach کردن اطلاعات در MVC core از مزاحل زیر استفاه خواهیم کرد.
برای Cach کردن لازم است در ابتدا دو extention را به پروژه اضافه کنیم
Microsoft.Extensions.Caching.memory
Microsoft.Extensions.Caching.Abstractions
و سپس در فایل start.cs این خط کد را در ConfigureServicesMetod اضافه میکنیم
services.AddMemoryCache();
البته دو Extension که قبلا ذکر شد در MVC Core 2 اضافه شده است فقط لازم است تا خط کد بالا را در start.cs اضافه کنید.
در کلاس repository این کلاس را اضافه میکنیم و
using Microsoft.Extensions.Caching.Memory;
private readonly DatesContext _db;
private IMemoryCache _cache;
public CustomerRepository(DatesContext context,IMemoryCache memoryCache)
{
_db = context;
_cache = memoryCache;
}
public void Add(Customer item)
{
_db.Customer.Add(item);
_cache.Set(item.Id, item, new MemoryCacheEntryOptions
{
AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(60)
});
_db.SaveChanges();
}
public Customer Find(int key)
{
Customer cacheCustomer = null;
if (_cache.TryGetValue(key, out cacheCustomer))
{
return cacheCustomer;
}
else
{
return _db.Customer.SingleOrDefault(a => a.Id == key);
}
}
د رکد بالا ابتدا cache را به repository اضافه کرده ایم و سپس ان را به Constractor اضافه میکنیم
و در متد Add آن را به مدت 60 تنظیم میکنیم و سپس در متد Find در صورت هنوز بودن اطلاعاتدر Cache از انها استفاده میکنیم .