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);
            }
        }
Exemple #2
0
        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
        }
Exemple #3
0
        // 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();
            }
        }