public void ClearCacheTest()
 {
     ICacheService target = new CacheService();
     var value = TestEntityFactory.GetEntity();
     target["TestEntity2"] = value;
     target.Clear();
     var result = target["Test"];
     Assert.IsNull(result);
 }
        public void DiskCacheTest()
        {
            Task.Run((Func <Task>)(async() =>
            {
                using (var provider = new DiskCacheProvider(Path.Combine(Path.GetTempPath(), "Cache")))
                {
                    var service = new CacheService((IAsyncCacheProvider)provider, (Caching.CachePolicy)Caching.CachePolicy.Expires((TimeSpan)TimeSpan.FromHours((double)1)));


                    Assert.AreEqual(await service.Fetch(Path.GetRandomFileName().Replace(".", ""), "ABC"), "ABC");


                    for (var i = 0; i < 1000; i++)
                    {
                        var _value = await service.FetchOrAdd <object>((string)"Test", (Func <Task <object> >) this.ValueFactory);
                        Assert.AreEqual((object)_value, value);
                    }


                    {
                        await service.Remove("Test");
                        value = null;

                        var _value = await service.Fetch("Test", "Test");
                        Assert.AreEqual(_value, "Test");
                        Assert.AreNotEqual(_value, value);
                    }


                    {
                        await service.Update <object>((string)"Test", (Func <Task <object> >) this.ValueFactory);
                        var _value = await service.FetchOrAdd <object>((string)"Test", (Func <Task <object> >) this.ValueFactory);
                        Assert.AreEqual((object)_value, value);
                    }

                    {
                        await service.Clear();
                        var _value = await service.Fetch("Test", "Test");
                        Assert.AreEqual(_value, "Test");
                        Assert.AreNotEqual(_value, value);
                    }
                }
            })).Wait();
        }
Example #3
0
 public void ForceRefresh()
 {
     cacheService.Clear();
 }
Example #4
0
        /// <summary>
        /// Updates the changes to a page.
        /// </summary>
        public async Task <Page> UpdateAsync(PageEditorVM vm, ClaimsPrincipal principal, Guid?revertedId = null)
        {
            await ValidateRequestAsync(vm);

            var page = await _db.Pages
                       .Include(x => x.Aliases)
                       .Include(x => x.MainPhoto)
                       .GetAsync(x => x.Id == vm.Id && (x.IsDeleted == false || revertedId != null),
                                 "Страница не найдена");

            await _validator.ValidateAsync(page, vm.Facts);

            var prevVm    = page.IsDeleted ? null : _mapper.Map <PageEditorVM>(page);
            var changeset = await GetChangesetAsync(prevVm, vm, vm.Id, principal, revertedId);

            _db.Changes.Add(changeset);

            _mapper.Map(vm, page);
            page.MainPhotoId = (await FindMainPhotoAsync(vm.MainPhotoKey))?.Id;

            if (revertedId != null)
            {
                page.IsDeleted = false;
            }

            await _db.PageAliases.RemoveWhereAsync(x => x.Page.Id == vm.Id);

            var aliasValues = JsonConvert.DeserializeObject <List <string> >(vm.Aliases ?? "[]");

            if (!aliasValues.Contains(vm.Title))
            {
                aliasValues.Add(vm.Title);
            }

            _db.PageAliases.AddRange(
                aliasValues.Select((x, idx) => new PageAlias
            {
                Id    = Guid.NewGuid(),
                Key   = PageHelper.EncodeTitle(x).ToLowerInvariant(),
                Page  = page,
                Order = idx,
                Title = x
            })
                );

            if (prevVm?.Title != vm.Title || prevVm?.Facts != vm.Facts)
            {
                _cache.Clear();
            }
            else
            {
                _cache.Remove <PageDescriptionVM>(page.Key);
                _cache.Remove <InfoBlockVM>(page.Key);
            }

            if (revertedId == null)
            {
                await DiscardPageDraftAsync(vm.Id, principal);
            }

            return(page);
        }
Example #5
0
        public ActionResult Index(int province   = 1, int city = 0,
                                  int mediacode  = 0,
                                  int formatcode = 0,
                                  int ownercode  = 0,
                                  int periodcode = 0,
                                  int authstatus = 0,
                                  int deadline   = 0,
                                  int price      = 0,
                                  int order      = 0,
                                  int descending = 0,
                                  int page       = 1,
                                  string query   = null,
                                  string dq      = null)
        {
            if (city == 1)
            {
                city = 0;
            }

            //搜索条件
            QueryTerm queryTerm = new QueryTerm()
            {
                Province   = province,
                City       = city,
                MediaCode  = mediacode,
                FormatCode = formatcode,
                OwnerCode  = ownercode,
                PeriodCode = periodcode,
                Page       = page,
                AuthStatus = authstatus,
                DeadLine   = deadline,
                Price      = price,
                Order      = order,
                Descending = descending,
                Query      = query,
                Dq         = dq
            };

            if (!string.IsNullOrEmpty(queryTerm.Dq))
            {
                if (queryTerm.Dq.Equals(DateTime.Now.ToString("yyyy-MM-dd")))
                {
                    queryTerm.Dq = null;
                }
            }

            CacheService.Clear();

            if (queryTerm.City != 0)
            {
                var cityCate = CityCateService.Find(queryTerm.City);
                queryTerm.CityCateCode = cityCate.Code;
                queryTerm.CityMaxCode  = Utilities.GetMaxCode(cityCate.Code, cityCate.Level);
            }

            if (queryTerm.MediaCode != 0)
            {
                var mediaCate = MediaCateService.Find(queryTerm.MediaCode);
                queryTerm.MediaCateCode = mediaCate.Code;
                queryTerm.MediaMaxCode  = Utilities.GetMaxCode(mediaCate.Code, mediaCate.Level);
            }


            ViewBag.Search = GetSearch(queryTerm);

            ViewBag.PriceListFilter = GetPriceListFilter(queryTerm);

            ViewBag.DeadLineMonthFilter = GetDeadLineMonthFilter(queryTerm);

            ViewBag.DefaultOrderUrl = Url.Action("index", new
            {
                province   = queryTerm.Province,
                city       = queryTerm.City,
                mediacode  = queryTerm.MediaCode,
                formatcode = queryTerm.FormatCode,
                ownercode  = queryTerm.OwnerCode,
                periodcode = queryTerm.PeriodCode,
                authstatus = queryTerm.AuthStatus,
                deadline   = queryTerm.DeadLine,
                price      = queryTerm.Price,
                order      = 0,
                descending = 0,
                page       = 1,
            });

            ViewBag.PriceOrderAscUrl = Url.Action("index", new
            {
                province   = queryTerm.Province,
                city       = queryTerm.City,
                mediacode  = queryTerm.MediaCode,
                formatcode = queryTerm.FormatCode,
                ownercode  = queryTerm.OwnerCode,
                periodcode = queryTerm.PeriodCode,
                authstatus = queryTerm.AuthStatus,
                deadline   = queryTerm.DeadLine,
                price      = queryTerm.Price,
                order      = (int)SortProperty.Price,
                descending = (int)SortDirection.Ascending,
                page       = 1
            });

            ViewBag.PriceOrderDescUrl = Url.Action("index", new
            {
                province   = queryTerm.Province,
                city       = queryTerm.City,
                mediacode  = queryTerm.MediaCode,
                formatcode = queryTerm.FormatCode,
                ownercode  = queryTerm.OwnerCode,
                periodcode = queryTerm.PeriodCode,
                authstatus = queryTerm.AuthStatus,
                deadline   = queryTerm.DeadLine,
                price      = queryTerm.Price,
                order      = (int)SortProperty.Price,
                descending = (int)SortDirection.Descending,
                page       = 1
            });

            ViewBag.NoAuthedUrl = Url.Action("index", new
            {
                province   = queryTerm.Province,
                city       = queryTerm.City,
                mediacode  = queryTerm.MediaCode,
                formatcode = queryTerm.FormatCode,
                ownercode  = queryTerm.OwnerCode,
                periodcode = queryTerm.PeriodCode,
                authstatus = 0,
                deadline   = queryTerm.DeadLine,
                price      = queryTerm.Price,
                order      = queryTerm.Order,
                descending = queryTerm.Descending,
                page       = 1
            });

            ViewBag.AuthedUrl = Url.Action("index", new
            {
                province   = queryTerm.Province,
                city       = queryTerm.City,
                mediacode  = queryTerm.MediaCode,
                formatcode = queryTerm.FormatCode,
                ownercode  = queryTerm.OwnerCode,
                periodcode = queryTerm.PeriodCode,
                authstatus = 1,
                deadline   = queryTerm.DeadLine,
                price      = queryTerm.Price,
                order      = queryTerm.Order,
                descending = queryTerm.Descending,
                page       = 1
            });

            ViewBag.Authed = queryTerm.AuthStatus == 1;


            ViewBag.Result = GetResult(queryTerm);

            ViewBag.Sort = GetSort(queryTerm);

            ViewBag.Query = queryTerm;

            return(View());
        }
Example #6
0
        public ActionResult Clear()
        {
            CacheService.Clear();

            return(RedirectToAction("Index"));
        }
Example #7
0
 public void Clear() => CacheService.Clear();
Example #8
0
        public void DiskCache()
        {
            using (var provider = new DiskCacheProvider(@"C:\Temp\Cache"))
            {
                var cacheService = new CacheService(provider);


                var tasks = new List <Task>();


                //测试并发创建值
                for (int i = 0; i < 1000; i++)
                {
                    Func <int, Task> task = async(j) =>
                    {
                        await Task.Yield();

                        var value = await cacheService.FetchOrAdd("Test", ValueFactory, CachePolicy.Expires(TimeSpan.FromHours(1)));

                        Assert.AreEqual(value, _value);
                    };

                    tasks.Add(task(i));
                }

                Task.WaitAll(tasks.ToArray());



                //测试从缓存读取
                for (int i = 0; i < 1000; i++)
                {
                    Func <int, Task> task = async(j) =>
                    {
                        await Task.Yield();

                        var value = await cacheService.FetchOrAdd("Test", ValueFactory, CachePolicy.Expires(TimeSpan.FromHours(1)));

                        Assert.AreEqual(value, _value);
                    };

                    tasks.Add(task(i));
                }
                Task.WaitAll(tasks.ToArray());



                //清除缓存
                cacheService.Clear();
                _value = null;



                //测试创建新值
                for (int i = 0; i < 1000; i++)
                {
                    Func <int, Task> task = async(j) =>
                    {
                        await Task.Yield();

                        var value = await cacheService.FetchOrAdd("Test", ValueFactory, CachePolicy.Expires(TimeSpan.FromHours(1)));

                        Assert.AreEqual(value, _value);
                    };

                    tasks.Add(task(i));
                }
                Task.WaitAll(tasks.ToArray());



                cacheService.Clear();
                {
                    _value = null;
                    var value = cacheService.FetchOrAdd("Test", ValueFactory, CachePolicy.Expires(TimeSpan.FromHours(1))).Result;

                    Assert.IsNotNull(_value);
                    Assert.AreEqual(_value, value);
                }
            }
        }
    public void DiskCache()
    {
      using ( var provider = new DiskCacheProvider( @"C:\Temp\Cache" ) )
      {
        var cacheService = new CacheService( provider );


        var tasks = new List<Task>();


        //测试并发创建值
        for ( int i = 0; i < 1000; i++ )
        {
          Func<int, Task> task = async ( j ) =>
          {
            await Task.Yield();

            var value = await cacheService.FetchOrAdd( "Test", ValueFactory, CachePolicy.Expires( TimeSpan.FromHours( 1 ) ) );
            Assert.AreEqual( value, _value );
          };

          tasks.Add( task( i ) );
        }

        Task.WaitAll( tasks.ToArray() );



        //测试从缓存读取
        for ( int i = 0; i < 1000; i++ )
        {
          Func<int, Task> task = async ( j ) =>
          {
            await Task.Yield();

            var value = await cacheService.FetchOrAdd( "Test", ValueFactory, CachePolicy.Expires( TimeSpan.FromHours( 1 ) ) );
            Assert.AreEqual( value, _value );
          };

          tasks.Add( task( i ) );
        }
        Task.WaitAll( tasks.ToArray() );




        //清除缓存
        cacheService.Clear();
        _value = null;




        //测试创建新值
        for ( int i = 0; i < 1000; i++ )
        {
          Func<int, Task> task = async ( j ) =>
          {
            await Task.Yield();

            var value = await cacheService.FetchOrAdd( "Test", ValueFactory, CachePolicy.Expires( TimeSpan.FromHours( 1 ) ) );
            Assert.AreEqual( value, _value );
          };

          tasks.Add( task( i ) );
        }
        Task.WaitAll( tasks.ToArray() );



        cacheService.Clear();
        {
          _value = null;
          var value = cacheService.FetchOrAdd( "Test", ValueFactory, CachePolicy.Expires( TimeSpan.FromHours( 1 ) ) ).Result;

          Assert.IsNotNull( _value );
          Assert.AreEqual( _value, value );
        }
      }
    }
Example #10
0
 /// <summary>
 /// Clears all cached data.
 /// </summary>
 /// <returns>Number of purged cached elements.</returns>
 public int ClearCache()
 {
     return(Cache.Clear());
 }
Example #11
0
    public void DiskCacheTest()
    {


      Task.Run( (Func<Task>) (async () =>
      {

        using ( var provider = new DiskCacheProvider( Path.Combine( Path.GetTempPath(), "Cache" ) ) )
        {
          var service = new CacheService( (IAsyncCacheProvider) provider, (Caching.CachePolicy) Caching.CachePolicy.Expires( (TimeSpan) TimeSpan.FromHours( (double) 1 ) ) );


          Assert.AreEqual( await service.Fetch( Path.GetRandomFileName().Replace( ".", "" ), "ABC" ), "ABC" );


          for ( var i = 0; i < 1000; i++ )
          {
            var _value = await service.FetchOrAdd<object>( (string) "Test", (Func<Task<object>>) this.ValueFactory );
            Assert.AreEqual( (object) _value, value );
          }


          {
            await service.Remove( "Test" );
            value = null;

            var _value = await service.Fetch( "Test", "Test" );
            Assert.AreEqual( _value, "Test" );
            Assert.AreNotEqual( _value, value );
          }


          {
            await service.Update<object>( (string) "Test", (Func<Task<object>>) this.ValueFactory );
            var _value = await service.FetchOrAdd<object>( (string) "Test", (Func<Task<object>>) this.ValueFactory );
            Assert.AreEqual( (object) _value, value );
          }

          {
            await service.Clear();
            var _value = await service.Fetch( "Test", "Test" );
            Assert.AreEqual( _value, "Test" );
            Assert.AreNotEqual( _value, value );
          }



        }
      }) ).Wait();
    }
Example #12
0
 public void Clear_should_clear_the_cache()
 {
     _service.Clear();
     Assert.Null(_service.Database);
 }
Example #13
0
        private void LimpiarCache()
        {
            var cache = new CacheService();

            cache.Clear();
        }