Exemple #1
0
      public CachedResponseResult( ICachedResponse cachedResponse )
      {
        if ( cachedResponse == null )
          throw new ArgumentNullException( "cachedResponse" );

        _cachedResponse = cachedResponse;
      }
Exemple #2
0
        /// <summary>
        /// 插入缓存
        /// </summary>
        /// <param name="cachedResponse">可被缓存的响应数据</param>
        /// <returns>缓存项</returns>
        public override CacheItem UpdateCache(ICachedResponse cachedResponse)
        {
            var cacheItem = CreateCacheItem(cachedResponse);

            CacheStorageProvider.InsertCacheItem(cacheItem);

            return(cacheItem);
        }
Exemple #3
0
            public CachedResponseResult(ICachedResponse cachedResponse)
            {
                if (cachedResponse == null)
                {
                    throw new ArgumentNullException("cachedResponse");
                }

                _cachedResponse = cachedResponse;
            }
Exemple #4
0
        /// <summary>
        /// 刷新输出缓存
        /// </summary>
        /// <param name="cachedResponse">响应的缓存</param>
        protected virtual void UpdateCache(ICachedResponse cachedResponse)
        {
            if (CachePolicy == null)
            {
                return;
            }


            CachePolicy.UpdateCache(cachedResponse);
        }
Exemple #5
0
        /// <summary>
        /// 创建一个缓存项
        /// </summary>
        /// <param name="token">缓存项的缓存依据</param>
        /// <param name="cached">缓存的数据</param>
        /// <param name="duration">最大缓存时间</param>
        public CacheItem(CacheToken token, ICachedResponse cached, TimeSpan duration)
        {
            CacheToken     = token;
            CachedResponse = cached;

            var shake  = Math.Min(DurationWhenCreated.TotalMilliseconds / 50, maxShake.TotalMilliseconds);
            var random = new Random(DateTime.Now.Millisecond);
            var offset = TimeSpan.FromMilliseconds(random.NextDouble() * shake);

            Expiration = DateTime.UtcNow + duration + offset;

            DurationWhenCreated = duration;
        }
Exemple #6
0
    /// <summary>
    /// 创建一个缓存项
    /// </summary>
    /// <param name="token">缓存项的缓存依据</param>
    /// <param name="cached">缓存的数据</param>
    /// <param name="duration">最大缓存时间</param>
    public CacheItem( CacheToken token, ICachedResponse cached, TimeSpan duration )
    {
      CacheToken = token;
      CachedResponse = cached;

      var shake = Math.Min( DurationWhenCreated.TotalMilliseconds / 50, maxShake.TotalMilliseconds );
      var random = new Random( DateTime.Now.Millisecond );
      var offset = TimeSpan.FromMilliseconds( random.NextDouble() * shake );

      Expiration = DateTime.UtcNow + duration + offset;

      DurationWhenCreated = duration;
    }
Exemple #7
0
        private async Task Save <T>(ICachedResponse response)
        {
            try
            {
                var result = await(Task <T>) response.Task;
                var file   = await FileSystem.Current.LocalStorage.CreateFileAsync($"{response.Identifier}.cache", CreationCollisionOption.ReplaceExisting);

                var json = JsonConvert.SerializeObject(new FileCachedResponse <T>()
                {
                    Identifier = response.Identifier,
                    Date       = response.Date,
                    Result     = result,
                });
                await file.WriteAllTextAsync(json);
            }
            catch (Exception)
            {
            }
        }
Exemple #8
0
 /// <summary>
 /// 从缓存的输出创建一个 ActionResult
 /// </summary>
 /// <param name="response">已被缓存的输出</param>
 /// <returns>用于输出缓存的 ActionResult</returns>
 public static ActionResult ToCachedResult(this ICachedResponse response)
 {
     return(new CachedResponseResult(response));
 }
Exemple #9
0
 /// <summary>
 /// 刷新缓存
 /// </summary>
 /// <param name="cachedResponse">可被缓存的响应</param>
 /// <returns>缓存项</returns>
 public abstract CacheItem UpdateCache( ICachedResponse cachedResponse );
Exemple #10
0
 protected override void OutputResponse(HttpContextBase context, ICachedResponse responseData)
 {
     response = responseData;
 }
Exemple #11
0
 /// <summary>
 /// 创建缓存项
 /// </summary>
 /// <param name="cachedResponse"></param>
 /// <returns></returns>
 public CacheItem CreateCacheItem(ICachedResponse cachedResponse)
 {
     return(new CacheItem(CacheToken, cachedResponse, Duration));
 }
Exemple #12
0
  protected override void OutputResponse( HttpContextBase context, ICachedResponse responseData )
  {
    response = responseData;

  }
Exemple #13
0
 /// <summary>
 /// 派生类重写此方法自定义输出响应的逻辑
 /// </summary>
 /// <param name="responseData">响应信息</param>
 protected virtual void OutputResponse( ICachedResponse responseData )
 {
     responseData.Apply( Response );
 }
Exemple #14
0
        /// <summary>
        /// 刷新输出缓存
        /// </summary>
        /// <param name="cachedResponse">响应的缓存</param>
        protected virtual void UpdateCache( ICachedResponse cachedResponse )
        {
            if ( CachePolicy == null )
            return;

              CachePolicy.UpdateCache( cachedResponse );
        }
Exemple #15
0
 /// <summary>
 /// 派生类重写此方法自定义输出响应的逻辑
 /// </summary>
 /// <param name="context">HTTP 上下文</param>
 /// <param name="responseData">响应信息</param>
 protected virtual void OutputResponse(HttpContextBase context, ICachedResponse responseData)
 {
     responseData.Apply(context.Response);
 }
Exemple #16
0
 /// <summary>
 /// 派生类重写此方法自定义输出响应的逻辑
 /// </summary>
 /// <param name="responseData">响应信息</param>
 protected virtual void OutputResponse(ICachedResponse responseData)
 {
     responseData.Apply(Response);
 }
Exemple #17
0
 /// <summary>
 /// 派生类重写此方法自定义输出响应的逻辑
 /// </summary>
 /// <param name="context">HTTP 上下文</param>
 /// <param name="responseData">响应信息</param>
 protected virtual void OutputResponse( HttpContextBase context, ICachedResponse responseData )
 {
   responseData.Apply( context.Response );
 }
Exemple #18
0
 /// <summary>
 /// 刷新缓存
 /// </summary>
 /// <param name="cachedResponse">可被缓存的响应</param>
 /// <returns>缓存项</returns>
 public abstract CacheItem UpdateCache(ICachedResponse cachedResponse);
Exemple #19
0
 private async Task Delete(ICachedResponse response)
 {
 }
Exemple #20
0
        /// <summary>
        /// 插入缓存
        /// </summary>
        /// <param name="cachedResponse">可被缓存的响应数据</param>
        /// <returns>缓存项</returns>
        public override CacheItem UpdateCache( ICachedResponse cachedResponse )
        {
            var cacheItem = CreateCacheItem( cachedResponse );

              CacheStorageProvider.InsertCacheItem( cacheItem );

              return cacheItem;
        }
Exemple #21
0
 /// <summary>
 /// 创建缓存项
 /// </summary>
 /// <param name="cachedResponse"></param>
 /// <returns></returns>
 public CacheItem CreateCacheItem( ICachedResponse cachedResponse )
 {
     return new CacheItem( CacheToken, cachedResponse, Duration );
 }
Exemple #22
0
 /// <summary>
 /// 更新缓存数据
 /// </summary>
 /// <param name="cachedResponse">可被缓存的响应数据</param>
 /// <param name="context">MVC 请求上下文</param>
 /// <param name="policy">缓存策略</param>
 protected virtual void UpdateCache(ICachedResponse cachedResponse, ControllerContext context, CachePolicy policy)
 {
     policy.UpdateCache(cachedResponse);
 }
Exemple #23
0
    /// <summary>
    /// 更新缓存数据
    /// </summary>
    /// <param name="cachedResponse">可被缓存的响应数据</param>
    /// <param name="context">MVC 请求上下文</param>
    /// <param name="policy">缓存策略</param>
    protected virtual void UpdateCache( ICachedResponse cachedResponse, ControllerContext context, CachePolicy policy )
    {

      policy.UpdateCache( cachedResponse );
    }