enemyss
10/03/2023, 8:08 AMcsharp
private void PublishedRequest_Prepared(object sender, EventArgs e)
{
var request = sender as PublishedRequest;
var res = HttpContext.Current.Response;
var maxAge = 604800;
if (request != null && !request.Is404 && request.UmbracoContext.InPreviewMode == false)
{
res.AppendHeader("Surrogate-Control", "max-age=" + maxAge);
res.Cache.SetCacheability(HttpCacheability.NoCache);
res.Cache.SetMaxAge(TimeSpan.Zero);
}
else
{
res.Cache.SetCacheability(HttpCacheability.Private);
res.Cache.SetNoStore();
}
}
enemyss
10/03/2023, 8:20 AMenemyss
10/03/2023, 9:20 AMcsharp
public class PublishedRequestHandler : INotificationHandler<RoutingRequestNotification>
{
private readonly IUmbracoContextAccessor _umbracoContextAccessor;
public PublishedRequestHandler(IUmbracoContextAccessor umbracoContextAccessor)
{
_umbracoContextAccessor = umbracoContextAccessor;
}
public void Handle(RoutingRequestNotification notification)
{
if (_umbracoContextAccessor.TryGetUmbracoContext(out IUmbracoContext? context))
{
var requestBuilder = notification.RequestBuilder;
var maxAge = 604800;
if (requestBuilder.ResponseStatusCode != 404 && !context.InPreviewMode)
{
requestBuilder.SetNoCacheHeader(true);
requestBuilder.SetHeaders(new Dictionary<string, string> {{"Surrogate-Control", "max-age=" + maxAge}});
}
else
{
requestBuilder.SetCacheExtensions(new[] {"private", "no-store"});
}
}
}
}