From 0d661239fe1faf809f3771c4aa26ca6df9624e80 Mon Sep 17 00:00:00 2001 From: Tobias Klika Date: Fri, 24 May 2024 13:07:59 +0200 Subject: [PATCH] cache-able static files (max-age) extensions method --- .../MediaApplicationBuilderExtensions.cs | 22 +++++++++++++++++++ zero/Media/ZeroMediaModule.cs | 10 ++++----- 2 files changed, 26 insertions(+), 6 deletions(-) create mode 100644 zero/Media/MediaApplicationBuilderExtensions.cs diff --git a/zero/Media/MediaApplicationBuilderExtensions.cs b/zero/Media/MediaApplicationBuilderExtensions.cs new file mode 100644 index 00000000..8c457e0b --- /dev/null +++ b/zero/Media/MediaApplicationBuilderExtensions.cs @@ -0,0 +1,22 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.Net.Http.Headers; + +namespace zero.Media; + +public static class MediaApplicationBuilderExtensions +{ + public static IApplicationBuilder UseStaticFilesWithCache(this IApplicationBuilder app, TimeSpan cacheDuration) + { + return app.UseStaticFiles(new StaticFileOptions + { + OnPrepareResponse = ctx => + { + ctx.Context.Response.Headers[HeaderNames.CacheControl] = "public, must-revalidate, max-age=" + (int)cacheDuration.TotalSeconds; + }, + OnPrepareResponseAsync = async ctx => + { + await Task.Delay(0); + } + }); + } +} \ No newline at end of file diff --git a/zero/Media/ZeroMediaModule.cs b/zero/Media/ZeroMediaModule.cs index fdb9571e..9eaf369c 100644 --- a/zero/Media/ZeroMediaModule.cs +++ b/zero/Media/ZeroMediaModule.cs @@ -1,15 +1,13 @@ -using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Routing; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; -using SixLabors.ImageSharp.Processing; -using System.IO; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Routing; using SixLabors.ImageSharp.Web.Caching; using SixLabors.ImageSharp.Web.DependencyInjection; +using System.IO; using zero.Media.ImageSharp; -using zero.Numbers; using zero.Media.ImageSharp.Processors; namespace zero.Media;