【发布时间】:2018-06-22 07:24:14
【问题描述】:
我想在 asp.net core 2.0 中使用服务器端响应缓存(输出缓存),发现了 Response Caching Middleware 并想尝试一个全新的 asp.core mvc 项目。
这是上面链接中的描述,这让我觉得这可以像输出缓存一样使用。
中间件确定响应何时可缓存、存储响应并从缓存中提供响应。
这是我的 startup.cs 的样子。
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddResponseCaching();
services.AddMvc();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseResponseCaching();
if (env.IsDevelopment())
{
app.UseBrowserLink();
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
}
这里是 HomeController.cs
[ResponseCache(Duration = 60)]
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
public IActionResult About()
{
ViewData["Message"] = "Your application description page.";
return View();
}
public IActionResult Contact()
{
ViewData["Message"] = "Your contact page.";
return View();
}
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
}
_Layout.cshtml 文件的底部还有一个时间戳,因此我可以知道页面何时呈现,如下所示。
<p>© 2018 - ResponseCachingMiddleware - @DateTime.UtcNow</p>
Cache-Control 标头似乎很好,这是我在加载页面时在标头中得到的,但时间戳会在每秒每次刷新时不断更新。
Cache-Control:public,max-age=60
我从 MS 文档中了解到的是响应缓存中间件是负责缓存响应的服务器端缓存机制,而 Response Caching 似乎只是一个过滤器来操纵响应标头以进行缓存。
无法判断我的理解或代码是否有问题,我想抱怨自从我开始使用 ASP.Net Core 进行原型设计以来,我经常有这种感觉。也许您还可以建议更好的资源作为副主题。
我之前看过这篇文章 ASP.NET Core 2.0 - Http Response Caching Middleware - Nothing cached
也检查了这一点,但似乎唯一的区别是我使用的是 mvc。 https://github.com/aspnet/ResponseCaching/blob/dev/samples/ResponseCachingSample/Startup.cs
谢谢
编辑:我在输出窗口中看到下面的消息,除了我已经检查过响应缓存中间件的几个地方之外,在谷歌上找不到任何关于它的信息。
Microsoft.AspNetCore.ResponseCaching.ResponseCachingMiddleware:信息: 无法缓存此请求的响应。
注意:我希望我可以创建#response-caching-middleware 标签。不确定#responsecache 是否相关。
【问题讨论】:
标签: asp.net caching asp.net-core-2.0 outputcache responsecache