استفاده از Cache data در MVC API

9/19/2017 MVC
3299

یکی از بهترین راه های بهینه سازی در وب و وب سرویس ها 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  از انها استفاده میکنیم .