如何在 ASP.NET Core 中启用 ClientCache
How to enable ClientCache in ASP.NET Core
在 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 中执行此操作?
如果你使用的是 MVC 你可以使用 ResponseCacheAttribute on your actions to set client cache headers. There is also a ResponseCacheFilter 你可以使用。
你用什么服务器?
如果您使用 IIS,您仍然可以在 wwwroot 文件夹中使用 web.config。
如果您使用 kestrel,则还没有 in-built 解决方案。但是你可以写一个
添加特定 cache-control header 的中间件。或者使用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
在Startup.cs > Configure(IApplicationBuilder applicationBuilder, .....)
applicationBuilder.UseStaticFiles(new StaticFileOptions
{
OnPrepareResponse = context =>
context.Context.Response.Headers.Add("Cache-Control", "public, max-age=2592000")
});
在 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 中执行此操作?
如果你使用的是 MVC 你可以使用 ResponseCacheAttribute on your actions to set client cache headers. There is also a ResponseCacheFilter 你可以使用。
你用什么服务器?
如果您使用 IIS,您仍然可以在 wwwroot 文件夹中使用 web.config。
如果您使用 kestrel,则还没有 in-built 解决方案。但是你可以写一个 添加特定 cache-control header 的中间件。或者使用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
在Startup.cs > Configure(IApplicationBuilder applicationBuilder, .....)
applicationBuilder.UseStaticFiles(new StaticFileOptions
{
OnPrepareResponse = context =>
context.Context.Response.Headers.Add("Cache-Control", "public, max-age=2592000")
});