/// <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); }
/// <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); }