From 6ef011e2440f4aa87d1c347152029d00147d736f Mon Sep 17 00:00:00 2001 From: yasmoradi Date: Wed, 22 Jul 2026 16:33:04 +0200 Subject: [PATCH] Fix static file caching for Development hot reload and CDN no-transform #11 --- .../wwwroot/_framework/.gitkeep | 0 .../Program.Middlewares.cs | 23 ++++++++++++++----- 2 files changed, 17 insertions(+), 6 deletions(-) create mode 100644 src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Windows/wwwroot/_framework/.gitkeep diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Windows/wwwroot/_framework/.gitkeep b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Windows/wwwroot/_framework/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Web/Program.Middlewares.cs b/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Web/Program.Middlewares.cs index c7742356d9..35d03a3eb3 100644 --- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Web/Program.Middlewares.cs +++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Web/Program.Middlewares.cs @@ -55,16 +55,23 @@ public void ConfigureMiddlewares() app.UseDirectoryBrowser(); } - app.UseStaticFiles(options: new() + app.Use(async (context, next) => { - OnPrepareResponse = staticFileResponseContext => + context.Response.OnStarting(async () => { - if (env.IsDevelopment() is false) + if (env.IsDevelopment()) + { + context.Response.GetTypedHeaders().CacheControl = new() + { + NoCache = true + }; + } + else { // Caching static files on the Browser and CDN's edge servers. - if (staticFileResponseContext.Context.Request.Query.Any(q => string.Equals(q.Key, "v", StringComparison.InvariantCultureIgnoreCase))) + if (context.Request.Query.Any(q => string.Equals(q.Key, "v", StringComparison.InvariantCultureIgnoreCase))) { - staticFileResponseContext.Context.Response.GetTypedHeaders().CacheControl = new() + context.Response.GetTypedHeaders().CacheControl = new() { Public = true, NoTransform = true, @@ -72,9 +79,13 @@ public void ConfigureMiddlewares() }; } } - } + }); + + await next.Invoke(); }); + app.UseStaticFiles(); + // https://yurl.chayev.com/ app.UseWhen(context => context.Request.Path.StartsWithSegments("/.well-known"), wellKnownApp => {