public override void BeginRequest(object sender, EventArgs e) { var path = _context.Context.Request.Path; var queryString = _context.Request.QueryString.ToString(); if (_paths.Contains(path) && queryString != string.Empty) { DashCacheItem dashCacheItem = InMemoryDashCacheGateway.Find(InMemoryDashCacheGateway.GenerateKey(path, queryString)); InMemoryDashCacheGateway.SetCurrentDashCacheItem(dashCacheItem); } }
protected void Application_Start() { var _config = new DashCacheConfiguration(ConfigurationManager.AppSettings); AreaRegistration.RegisterAllAreas(); GlobalConfiguration.Configure(WebApiConfig.Register); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); InMemoryDashCacheGateway.Start(_config.Convert("DashCacheMonitorInterval").ToAInt(), _config.Convert("DashCacheEnabled").ToABool()); //30 seconds and dash cache enabled, get from config }
// GET: api/Student public object Get() { var dashCacheItem = InMemoryDashCacheGateway.GetCurrentDashCacheItem(); if (dashCacheItem == null) { var students = _unitOfWork.Students.FindAll(s => s.StudentId <= 300); InMemoryDashCacheGateway.SetCurrentDashCacheItem(new DashCacheItem(students.ToList())); return(students); } else { return(dashCacheItem.GetCachedItem <List <Student> >()); } }
// GET api/values public object Get() { var dashCacheItem = InMemoryDashCacheGateway.GetCurrentDashCacheItem(); if (dashCacheItem == null) { var values = new string[] { "value1", "value2", "value3" }; InMemoryDashCacheGateway.SetCurrentDashCacheItem(new DashCacheItem(values)); return(values); } else { return(dashCacheItem.GetCachedItem <string[]>()); } }
// GET: api/Course public object Get() { var dashCacheItem = InMemoryDashCacheGateway.GetCurrentDashCacheItem(); if (dashCacheItem == null) { var courses = _unitOfWork.Courses.FindAll(c => c.CourseId <= 300); InMemoryDashCacheGateway.SetCurrentDashCacheItem(new DashCacheItem(courses.ToList())); return(courses); } else { return(dashCacheItem.GetCachedItem <List <Course> >()); } }
public override void EndRequest(object sender, EventArgs e) { var path = _context.Context.Request.Path; var queryString = _context.Request.QueryString.ToString(); if (_paths.Contains(path) && queryString != string.Empty) { DashCacheItem dashCacheItem = InMemoryDashCacheGateway.GetCurrentDashCacheItem(); if (dashCacheItem != null && dashCacheItem.IsAlreadyCached != true) { dashCacheItem.IsAlreadyCached = true; InMemoryDashCacheGateway.Add(InMemoryDashCacheGateway.GenerateKey(path, queryString), dashCacheItem); } ; } int count = InMemoryDashCacheGateway.GetCacheCount(); //read from threshold in config later, don't have the energy to convert if (count > 5) { InMemoryDashCacheGateway.EvictFirstItemIn(); } }