Modificirajući ovaj blog engine (maštovitog imena blogengine.net), primijetio sam da nema ugrađen nikakav caching layer. Da slučajno 10-tak posjetioca bloga dnevno ne bi morali čekati učitavanje, morao sam pod hitno složiti jednostavnu klasu koju mogu upotrijebiti po potrebi bilo gdje u projektu.
Tako je nastalo ovo:
.net framework 2.0 verzija (blogengine.net je u .net 2):
public class CacheService<T> where T:class
{
public delegate T CallbackHandler();
public T Get(string key, CallbackHandler callback,DateTime? expiration)
{
T item = HttpContext.Current.Cache[key] as T;
if (item == null)
{
item = callback() as T;
if(expiration==null)
HttpContext.Current.Cache.Insert(key,item, null, DateTime.Now.AddMinutes(30), Cache.NoSlidingExpiration);
else
HttpContext.Current.Cache.Insert(key, item, null, expiration.Value, Cache.NoSlidingExpiration);
}
return item;
}
}
ili .net 3/3.5 verzija Više...