PublishedRequest_Prepared in v10+
# help-with-umbraco
e
Hi, how can I replicate this code from v8 in v10+?
Copy code
csharp
        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();
            }
        }
This seems to be working
Copy code
csharp
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"});
            }
        }
    }
}