响应缓存在 asp.net 核心项目中不起作用

Dev*_*per 7 asp.net-mvc caching asp.net-core

我尝试在 asp.net core 项目中实现响应缓存,但它不起作用。这是 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();
            }
Run Code Online (Sandbox Code Playgroud)

这是我的控制器。

    [ResponseCache(Duration = 30)]
public IActionResult Index()
    {
        ViewBag.IsMobile = RequestExtensions.IsMobileBrowser(ContextAccessor.HttpContext.Request);

        return View();
    }
Run Code Online (Sandbox Code Playgroud)

但仍然缓存控制标头 id

              cache-control ?no-cache, no-store
Run Code Online (Sandbox Code Playgroud)

我缺少的地方请帮助。此响应缓存不起作用,我从 Microsoft 文档中获取指导

san*_*hec 8

请注意,缓存工作必须满足许多要求:

该请求必须导致来自服务器的 200 (OK) 响应。

请求方法必须是 GET 或 HEAD。

终端中间件,例如静态文件中间件,不得在响应缓存中间件之前处理响应。

不得存在 Authorization 标头。

Cache-Control 标头参数必须有效,并且响应必须标记为 public 而不是标记为 private。

如果 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