From 25d3fc90ac398252bd478dbaa109e6225fb28b01 Mon Sep 17 00:00:00 2001 From: Ronald Barendse Date: Tue, 12 Oct 2021 11:13:54 +0200 Subject: [PATCH] Change Cache-Control header when cache buster value is present --- .../UmbracoBuilder.ImageSharp.cs | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/Umbraco.Web.Common/DependencyInjection/UmbracoBuilder.ImageSharp.cs b/src/Umbraco.Web.Common/DependencyInjection/UmbracoBuilder.ImageSharp.cs index 6755159fc1..5ab353f2e9 100644 --- a/src/Umbraco.Web.Common/DependencyInjection/UmbracoBuilder.ImageSharp.cs +++ b/src/Umbraco.Web.Common/DependencyInjection/UmbracoBuilder.ImageSharp.cs @@ -1,8 +1,10 @@ using System.Collections.Generic; using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; +using Microsoft.Net.Http.Headers; using SixLabors.ImageSharp.Web.Caching; using SixLabors.ImageSharp.Web.Commands; using SixLabors.ImageSharp.Web.DependencyInjection; @@ -48,6 +50,24 @@ namespace Umbraco.Extensions context.Commands.Remove(ResizeWebProcessor.Height); } + return Task.CompletedTask; + }; + options.OnBeforeSaveAsync = _ => Task.CompletedTask; + options.OnProcessedAsync = _ => Task.CompletedTask; + options.OnPrepareResponseAsync = context => + { + // Change Cache-Control header when cache buster value is present + if (context.Request.Query.ContainsKey("rnd")) + { + var headers = context.Response.GetTypedHeaders(); + + var cacheControl = headers.CacheControl; + cacheControl.MustRevalidate = false; + cacheControl.Extensions.Add(new NameValueHeaderValue("immutable")); + + headers.CacheControl = cacheControl; + } + return Task.CompletedTask; }; })