C# ResponseCache不在net core 3.1中工作
我试图学习.NETCore3.1中的响应缓存。但它没有像我希望的那样起作用。我在ChromeDevTool中查看了网络,它显示了带有C# ResponseCache不在net core 3.1中工作,c#,.net,caching,.net-core,browser,C#,.net,Caching,.net Core,Browser,我试图学习.NETCore3.1中的响应缓存。但它没有像我希望的那样起作用。我在ChromeDevTool中查看了网络,它显示了带有缓存控制的响应头:无缓存,无存储 我还发现响应头在Actionfilter中带有HeaderCacheControl{public,max age=100}。这是我期望的值,但浏览器中的实际响应标题是无缓存 启动类: public void配置服务(IServiceCollection服务) { services.addResponseCache(选项=> { op
缓存控制的响应头:无缓存,无存储
我还发现响应头在Actionfilter中带有HeaderCacheControl{public,max age=100}
。这是我期望的值,但浏览器中的实际响应标题是无缓存
启动
类:
public void配置服务(IServiceCollection服务)
{
services.addResponseCache(选项=>
{
options.SizeLimit=1024;
options.MaximumBodySize=1024*1024*100;
options.useCaseSensitivePath=false;
});
}
public void配置(IApplicationBuilder应用程序、IWebHostEnvironment环境)
{
if(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseCookiePolicy();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseResponseCaching();
app.UseEndpoints(端点=>
{
endpoints.MapControllerRoute(
名称:“默认”,
模式:“{controller=Home}/{action=Index}/{id?}”);
});
}
控制器:
[ResponseCache(持续时间=100,NoStore=false)]
公共IActionResult索引()
{
返回视图();
}
这是正常行为,如果页面是否从磁盘缓存中检索,则会有多个因素影响
我将尝试列出用户请求页面的常见场景,以及页面是否被缓存
AddResponseCaching
和UseResponseCaching
控制服务器端缓存,而responsecaching属性
通过设置适当的头控制客户端缓存services.addcontrollerswithview(选项=>
{
options.CacheProfile.Add(“缓存”,新的CacheProfile()
{
持续时间=120,
位置=响应确认位置。任何,
VaryByHeader=“cookie”
});
options.CacheProfile.Add(“NoCaching”,新的CacheProfile()
{
NoStore=正确,
位置=响应确认位置。无
});
})
你是这样使用它的:
[ResponseCache(CacheProfileName=“Caching”)]
缓存控件:no Cache
缓存控制:max age=0
头和您的请求,该请求得到服务器的尊重
禁用缓存
复选框(如果选中)
缓存控制
和Pragma
标题一起发送到无缓存
。您可以看到在上缓存的所有条件
无缓存头
管道的顺序不正确,您在
UseEndpoints
之前使用ResponseCaching
中间件,而不是在开始时。提供静态文件和路由必须在身份验证和授权之前进行。谢谢。我听从了你的建议,确定了中间件的顺序。也在docs()中找到了该信息。但是,修复后我仍然得到“没有缓存,没有存储”。非常感谢。我的问题的解决方案是您方案列表中的第六点。当我注释掉“表单”和反伪造标记时,效果很好。@YuHsu如果这个答案解决了您的问题,请将其标记为已接受的答案。