/// <summary>
 /// Revalidate caches after call method
 /// </summary>
 /// <param name="actionExecutedContext"></param>
 /// <returns></returns>
 public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
 {
     if (actionExecutedContext.ActionContext.Response != null && actionExecutedContext.ActionContext.Response.IsSuccessStatusCode)
     {
         var invocation      = GetInvocation(actionExecutedContext.ActionContext);
         var revalidatedKeys = KeyFormats.Select(k => CacheKeyProvider.GetRevalidateKey(invocation, k)).ToList();
         Global.RevalidateCaches(revalidatedKeys);
     }
 }
        /// <summary>
        /// Revalidate caches after call method
        /// </summary>
        /// <param name="actionExecutedContext"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public override Task OnActionExecutedAsync(HttpActionExecutedContext actionExecutedContext, CancellationToken cancellationToken)
        {
            if (actionExecutedContext.ActionContext.Response != null && actionExecutedContext.ActionContext.Response.IsSuccessStatusCode)
            {
                var invocation      = GetInvocation(actionExecutedContext.ActionContext);
                var revalidatedKeys = KeyFormats.Select(k => CacheKeyProvider.GetRevalidateKey(invocation, k)).ToList();

                return(Global.RevalidateCachesAsync(revalidatedKeys));
            }
            return(TaskHelpers.DefaultCompleted);
        }
Beispiel #3
0
        /// <summary>
        /// Get empty list change monitor
        /// </summary>
        /// <param name="invocation"></param>
        /// <param name="invocationContext"></param>
        /// <returns></returns>
        public virtual IEnumerable <IChangeMonitor> GetChangeMonitors(_IInvocation invocation, IDictionary <string, object> invocationContext)
        {
            var att = invocationContext.TryGetByKey <ICacheSettings>(Global.__flatwhite_outputcache_attribute, OutputCacheAttribute.Default);

            if (string.IsNullOrWhiteSpace(att?.RevalidateKeyFormat))
            {
                yield break;
            }

            var revalidationKey = CacheKeyProvider.GetRevalidateKey(invocation, att.RevalidateKeyFormat);

            yield return(new FlatwhiteCacheEntryChangeMonitor(revalidationKey));
        }
        /// <summary>
        /// Revalidate cache async
        /// </summary>
        /// <param name="methodExecutedContext"></param>
        /// <returns></returns>
        public override Task OnMethodExecutedAsync(MethodExecutedContext methodExecutedContext)
        {
            var revalidateKeys = KeyFormats.Select(k => CacheKeyProvider.GetRevalidateKey(methodExecutedContext.Invocation, k)).ToList();

            return(Global.RevalidateCachesAsync(revalidateKeys));
        }
        /// <summary>
        /// Clear the cache with the provided revalidation keys
        /// </summary>
        /// <param name="methodExecutedContext"></param>
        /// <returns></returns>
        public override void OnMethodExecuted(MethodExecutedContext methodExecutedContext)
        {
            var revalidatedKeys = KeyFormats.Select(k => CacheKeyProvider.GetRevalidateKey(methodExecutedContext.Invocation, k)).ToList();

            Global.RevalidateCaches(revalidatedKeys);
        }