Edw*_*rey 8 cache-control browser-cache asp.net-core
我想告诉ASP.NET Core为Cache-Control
MVC控制器提供的所有响应添加公共和相关标头,包括HTML页面和Web API响应.我不希望策略应用于缓存静态文件; 那些我想要缓存的人.
在特殊情况下,我想禁用缓存,相当于将此属性应用于所有控制器:
[ResponseCache(NoStore = true, Location = ResponseCacheLocation.None)]
Run Code Online (Sandbox Code Playgroud)
我可以创建一个具有此属性的基本控制器,并从中派生所有其他控制器.我想知道是否存在基于配置的方法,以避免需要这样的基本控制器.
Tse*_*eng 14
只需添加即可完成中间件
services.AddMvc(options => {
options.Filters.Add(new ResponseCacheAttribute() { NoStore = true, Location = ResponseCacheLocation.None });
})
Run Code Online (Sandbox Code Playgroud)
在你的ConfigureServices
方法.适用于任何属性(即AuthorizeAttribute
),可以实例化,并将应用于所有控制器和操作.也不需要基类.
正如@DOMZE 所说,您可以考虑使用自定义中间件。实际上,响应缓存已经作为中间件实现了。
但由于您只想为所有 MVC 操作添加缓存,所以更好的方法是使用 MVC操作过滤器。好处之一是您可以仅将过滤器应用于特定的控制器/操作+您将有权访问ActionExecutingContext
(控制器实例/操作参数)
public class ResponseCacheActionFilter : IActionFilter
{
public void OnActionExecuting(ActionExecutingContext context)
{
// before the action executes
}
public void OnActionExecuted(ActionExecutedContext context)
{
// after the action executes
// add here a common Cache-Control and related headers to all responses
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3862 次 |
最近记录: |