Nasıl bir MVC uygulamada önbellek veri için
Sayfa önbelleğe alma ve kısmi sayfa MVC uygulaması önbelleğe alma hakkında bir sürü bilgi okudum. Ancak, veri önbelleği nasıl bilmek istiyorum.
Benim senaryoda Varlıklar bu SERİ (varlık çerçevesi) kullanarak olacaktır. GetNames (ya da yöntemi ne olursa olsun) ilk çağrı üzerine veritabanından veri kapmak istiyorum. Eğer varsa, önbelleğe alınmış sürümünü kullanmak için ikinci çağrı önbellek ve sonuçları kaydetmek istiyorum.
Herkes bu (model?) hayata geçirilmesi gereken bir iş, nasıl bir örnek gösterebilir ve eğer işe yarayıp yaramadığını.
Bu işi genellikle çok statik veri için geleneksel ASP.NET uygulamalar gördüm.
CEVAP
Burada kullandığımız güzel ve basit önbellek yardımcı sınıfı/hizmet:
using System.Runtime.Caching;
public class InMemoryCache: ICacheService
{
public T GetOrSet<T>(string cacheKey, Func<T> getItemCallback) where T : class
{
T item = MemoryCache.Default.Get(cacheKey) as T;
if (item == null)
{
item = getItemCallback();
MemoryCache.Default.Add(cacheKey, item, DateTime.Now.AddMinutes(10));
}
return item;
}
}
interface ICacheService
{
T GetOrSet<T>(string cacheKey, Func<T> getItemCallback) where T : class;
}
Kullanımı:
cacheProvider.GetOrSet("cache key", (delegate method if cache is empty));
Önbellek sağlayıcı kontrol edecek birşey varsa, adı "cache ıd" önbellek ve eğer yoksa, o Ara bir temsilci yöntemi için veri getirme ve mağaza içinde önbellek.
Örnek:
var products=cacheService.GetOrSet("catalog.products", ()=>productRepository.GetAll())
Nasıl tarih sadece SQL Server datetime...
Nasıl terminalden Curl ile JSON veri g...
bir öğe veri-öznitelik değeri için bir...
Nasıl (birleştirme) veri çerçevesi (iç...
Nasıl android niyeti ek veri almak içi...