首页 > 解决方案 > 响应缓存在 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 文档中获取指导​​。

标签: asp.net-mvccachingasp.net-core

解决方案


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

该请求必须导致来自服务器的 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


推荐阅读