From 11cfa52897ddede8f3f3c1344a1b708228332ad6 Mon Sep 17 00:00:00 2001 From: Sebastian Stehle Date: Thu, 8 Nov 2018 21:00:44 +0100 Subject: [PATCH] More performance tracking. --- src/Squidex/Config/Web/WebServices.cs | 1 + src/Squidex/Pipeline/ETagExtensions.cs | 6 +++- src/Squidex/Pipeline/MeasureResultFilter.cs | 32 +++++++++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 src/Squidex/Pipeline/MeasureResultFilter.cs diff --git a/src/Squidex/Config/Web/WebServices.cs b/src/Squidex/Config/Web/WebServices.cs index fdb965701..af04bceed 100644 --- a/src/Squidex/Config/Web/WebServices.cs +++ b/src/Squidex/Config/Web/WebServices.cs @@ -45,6 +45,7 @@ namespace Squidex.Config.Web { options.Filters.Add(); options.Filters.Add(); + options.Filters.Add(); }).AddMySerializers(); services.AddCors(); diff --git a/src/Squidex/Pipeline/ETagExtensions.cs b/src/Squidex/Pipeline/ETagExtensions.cs index 3c6593ca7..4c30e2411 100644 --- a/src/Squidex/Pipeline/ETagExtensions.cs +++ b/src/Squidex/Pipeline/ETagExtensions.cs @@ -8,6 +8,7 @@ using System.Collections.Generic; using System.Linq; using Squidex.Infrastructure; +using Squidex.Infrastructure.Log; namespace Squidex.Pipeline { @@ -15,7 +16,10 @@ namespace Squidex.Pipeline { public static string ToManyEtag(this IEnumerable items, long total = 0) where T : IGenerateEtag { - return $"{total}_{string.Join(";", items.Select(x => $"{x.Id}{x.Version}"))}".Sha256Base64(); + using (Profiler.Trace("CalculateEtag")) + { + return $"{total}_{string.Join(";", items.Select(x => $"{x.Id}{x.Version}"))}".Sha256Base64(); + } } public static string ToSurrogateKeys(this IEnumerable items) where T : IGenerateEtag diff --git a/src/Squidex/Pipeline/MeasureResultFilter.cs b/src/Squidex/Pipeline/MeasureResultFilter.cs new file mode 100644 index 000000000..2d22afd65 --- /dev/null +++ b/src/Squidex/Pipeline/MeasureResultFilter.cs @@ -0,0 +1,32 @@ +// ========================================================================== +// Squidex Headless CMS +// ========================================================================== +// Copyright (c) Squidex UG (haftungsbeschraenkt) +// All rights reserved. Licensed under the MIT license. +// ========================================================================== + +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc.Filters; +using Squidex.Infrastructure.Log; + +namespace Squidex.Pipeline +{ + public sealed class MeasureResultFilter : IAsyncResultFilter, IAsyncActionFilter + { + public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) + { + using (Profiler.Trace("ExecuteAction")) + { + await next(); + } + } + + public async Task OnResultExecutionAsync(ResultExecutingContext context, ResultExecutionDelegate next) + { + using (Profiler.Trace("ExecuteResult")) + { + await next(); + } + } + } +}