ASP.NET Core MVC:页面的ResponseCache设置是否会被引用资源继承?
ASP.NET Core MVC中ResponseCache特性对静态资源的影响
- 明确结论:不会继承。你给控制器Action添加的
[ResponseCache(NoStore = true)]特性,仅对该Action返回的HTML页面的响应生效——它会给HTML页面加上禁止缓存的响应头,但页面里引用的JavaScript、CSS、图片这类静态资源,完全不受这个设置的影响。 - 原因很简单:静态资源是由ASP.NET Core的
StaticFiles中间件单独处理的,它们有自己独立的缓存配置逻辑,和控制器Action的缓存规则不挂钩。 - 如果要控制静态资源的缓存,得单独配置。比如在
Program.cs里配置静态文件中间件时,通过OnPrepareResponse回调来设置缓存相关的响应头,示例代码如下:
app.UseStaticFiles(new StaticFileOptions { OnPrepareResponse = ctx => { // 示例:设置静态资源缓存有效期为30天 ctx.Context.Response.Headers.Append("Cache-Control", "public, max-age=2592000"); } });
内容的提问来源于stack exchange,提问作者Herbert
相关产品推荐
相关产品推荐

