在ASP.net 4.5中,我们曾经能够通过添加“ClientCache”来启用静态资源上的过期标头(反过来,启用浏览器缓存)。到web.config,如:
<staticcontent>
<clientcache cachecontrolmode="UseMaxAge" cachecontrolmaxage="365.00:00:00" />
</staticcontent>
在http://madskristensen.net/post/cache-busting-in-aspnet
中引用当我们没有web.config和Startup.cs时,我们现在如何在ASP.net 5中执行此操作?
答案 0 :(得分:12)
在Startup.cs&gt;配置(IApplicationBuilder applicationBuilder,.....)
applicationBuilder.UseStaticFiles(new StaticFileOptions
{
OnPrepareResponse = context =>
context.Context.Response.Headers.Add("Cache-Control", "public, max-age=2592000")
});
答案 1 :(得分:1)
如果您使用的是MVC,则可以使用操作中的ResponseCacheAttribute来设置客户端缓存标头。您还可以使用ResponseCacheFilter。
答案 2 :(得分:1)
你使用什么服务器?
如果您使用IIS,您仍然可以在wwwroot文件夹中使用web.config。
如果您使用红隼,则还没有内置解决方案。但是你可以写一个 添加特定缓存控制头的中间件。或者使用nginx作为反向代理。
中间件:
没有经过测试(!),只是在我的脑海中,您可以写下这样的内容:
public sealed class CacheControlMiddleWare
{
readonly RequestDelegate _next;
public CacheControlMiddleWare(RequestDelegate next)
{
_next = next;
}
public async Task Invoke(HttpContext context)
{
if (context.Request.Path.Value.EndsWith(".jpg")
{
context.Response.Headers.Add("Cache-Control", new[]{"max-age=100"});
}
await _next(context);
}
}
nginx作为反向代理:
除此之外,我还为响应缓存写了一些注意事项:
http://mjomaa.com/computer-science/frameworks/asp-net-mvc/153-output-response-caching-in-asp-net-5