Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Add HTTP Headers to Static Files in ASP.NET Core

DZone's Guide to

Add HTTP Headers to Static Files in ASP.NET Core

In this article we have a look at how to modify the headers in static files in ASP.NET Core. Sometimes you just have to disable a cache!

· Web Dev Zone ·
Free Resource

Learn how error monitoring with Sentry closes the gap between the product team and your customers. With Sentry, you can focus on what you do best: building and scaling software that makes your users’ lives better.

Usually, static files like JavaScript, CSS, images, and so on, are cached on the client after the first request. But sometimes, you need to disable the cache or to add a special cache handling.

To provide static files in an ASP.NET Core application, you use the StaticFileMiddleware:

app.UseStaticFiles();


This extension method has two overloads. One of them needs a StaticFileOptions instance, which is our friend in this case. This option has a property called OnPrepareResponse of type Action<StaticFileResponseContext>. Inside this action, you have access to the HttpContext and many more. Let's see how it looks like to set the cache lifetime to 12 hours:

app.UseStaticFiles(new StaticFileOptions()
{
    OnPrepareResponse = context =>
    {
        context.Context.Response.Headers["Cache-Control"] = 
                "private, max-age=43200";

        context.Context.Response.Headers["Expires"] = 
                DateTime.UtcNow.AddHours(12).ToString("R");
    }
});


With the StaticFileResponseContext, you also have access to the file of the currently handled file. With this info, it is possible to manipulate the HTTP headers just for a specific file or file type.

This approach ensures that the client doesn't use pretty much outdated files, but uses cached versions while working with it. We use this in an ASP.NET Core single page application, which uses many JavaScript and HTML template files. In combination with continuous deployment, we need to ensure the application uses the latest files.

What’s the best way to boost the efficiency of your product team and ship with confidence? Check out this ebook to learn how Sentry's real-time error monitoring helps developers stay in their workflow to fix bugs before the user even knows there’s a problem.

Topics:
headers ,static ,http ,core ,files ,asp.net

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}