asp.net-mvc - 响应缓存在 asp.net 核心项目中不起作用
问题描述
我尝试在 asp.net 核心项目中实现响应缓存,但它不起作用。这是startup.cs
:
public void ConfigureServices(IServiceCollection services)
{
services.AddResponseCaching();
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseResponseCaching();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
这是我的控制器。
[ResponseCache(Duration = 30)]
public IActionResult Index()
{
ViewBag.IsMobile = RequestExtensions.IsMobileBrowser(ContextAccessor.HttpContext.Request);
return View();
}
但仍然缓存控制标头id
cache-control →no-cache, no-store
我缺乏的地方请帮忙。此响应缓存不起作用,我从 Microsoft 文档中获取指导。
解决方案
请注意,要使缓存正常工作,必须满足许多要求:
该请求必须导致来自服务器的 200(OK)响应。
请求方法必须是 GET 或 HEAD。
终端中间件,例如静态文件中间件,不得在响应缓存中间件之前处理响应。
授权标头不得存在。
Cache-Control 标头参数必须有效,并且响应必须标记为公共而不标记为私有。
如果 Cache-Control 标头不存在,则 Pragma: no-cache 标头/值不得存在,因为 Cache-Control 标头在存在时会覆盖 Pragma 标头。Set-Cookie 标头不得存在。
Vary 头参数必须有效且不等于 *.
Content-Length 标头值(如果已设置)必须与响应正文的大小匹配。
...
请参阅此网站:aspnet-core-response-cache
还要注意,如果 Postman 发出请求,请禁用“不发送缓存标头”选项。
请参阅此帖子(最终帖子的图像): ASP.Net Core 2.0 - ResponseCaching Middleware - Not Caching on Server
推荐阅读
- maven - Jenkins 中的“DevToolsActivePort 文件不存在”错误
- javascript - 值未传递给父组件
- audio - 低延迟的FFmpeg实时音频流
- python - 子进程 for 循环失败并出现语法错误
- javascript - Angular Webpack 设置:使用 webpack 从 css 迁移到 sass
- java - android中的CursorIndexOutOfBoundException index 0 size 0
- excel - 粘贴 Excel 图表
- java - 如何比较时间戳是否在Java中的给定时间段范围内
- cmd - 通过cmd和时间戳备份删除window中的子文件夹和文件
- python - 实现双链表 - 调用头节点时的最大递归深度