public AController() { ViewBag["Class"] = GetClass(0); } private List<BlogsClass> GetClass(int parentId) { List<BlogsClass> list; //查詢出分類 尼瑪每次都得查,很煩! 有木有? 考慮緩存 if (HttpContext.Cache["Class"] == null) { IClass _Class = new CalssData(); list = _Class.GetParentClass(parentId); HttpContext.Cache.Add("Class", list, new CacheDependency(HttpContext.Server.MapPath("~/web.config")), DateTime.Now.AddDays(1), TimeSpan.Zero, CacheItemPriority.High, null); HttpContext.Cache["Class"] = list; } else { list = HttpContext.Cache["Class"] as List<BlogsClass>; } return list; }
結果。。。web
protected override void OnActionExecuted(ActionExecutedContext filterContext) { //Add the ActionResult to cache List<BlogsClass> list; if (filterContext.HttpContext.Cache["filterContext"] == null) { IClass _Class = new CalssData(); list = _Class.GetParentClass(0); filterContext.HttpContext.Cache.Add("Class", list, null, DateTime.Now.AddDays(1), System.Web.Caching.Cache.NoSlidingExpiration, CacheItemPriority.High, null); } else { list = filterContext.HttpContext.Cache["filterContext"] as List<BlogsClass>; } //Add a value in order to know the last time it was cached. //filterContext.Controller.ViewData["CachedStamp"] = DateTime.Now; ViewBag["Class"] = list; base.OnActionExecuted(filterContext); }
參考:http://www.codeproject.com/Articles/33431/ASP-NET-MVC-Result-Cache緩存