gpt4 book ai didi

c# - asp.net core 3 响应缓存未按预期工作

转载 作者:行者123 更新时间:2023-12-03 20:51:19 25 4
gpt4 key购买 nike

我对 ASP.NET Core 3 比较陌生,正在围绕 CMS 构建一个简单的概念证明。我试图证明我们能够缓存静态内容(.jpg、.png 等)但防止缓存动态(从数据库传递到模型的内容)。静态内容似乎工作正常。然而,即使响应 header 似乎设置正确,动态内容也会被缓存。
从 Microsoft Edge 开发人员工具中看到的我的响应 header 是:
enter image description here
缓存控制:无缓存、无存储、必须重新验证
内容类型:文本/html;字符集=utf-8
日期:2020 年 6 月 29 日星期一 18:25:58 GMT
过期:0
pragma: 无缓存
服务器:红隼
状态:200
在这一点上,我没有使用

app.UseResponseCaching();
我只将它用于 Startup.cs 中的静态文件
app.UseStaticFiles(new StaticFileOptions // for wwwroot files
{
OnPrepareResponse = (context) =>
{
var headers = context.Context.Response.GetTypedHeaders();

headers.CacheControl = new CacheControlHeaderValue
{
Public = true,
MaxAge = TimeSpan.FromDays(30)
};
}
});
和这个
services.AddMvc(options =>
{

options.Conventions.Add(new RouteTokenTransformerConvention(
new SlugifyParameterTransformer()));
options.CacheProfiles.Add("Default0", new CacheProfile()
{
NoStore = true,
Location = ResponseCacheLocation.None,
Duration = 0
});
})
...将此添加到我的 Controller 类
[ResponseCache(CacheProfileName = "Default0")]
public class CmsController : CmsControllerBase<CmsPageModel>
...为了更好的衡量,我还直接将其放置在我的 View 中:
@using Microsoft.Net.Http.Headers;
@using Microsoft.AspNetCore.Http;
@model CMS.Web.Models.CmsPageModel
@{
this.Context.Response.Headers[HeaderNames.CacheControl] = "no-cache, no-store, must-revalidate";
this.Context.Response.Headers[HeaderNames.Expires] = "0";
this.Context.Response.Headers[HeaderNames.Pragma] = "no-cache";
}
我在浏览器上按了 F5 几次,无论我做什么,相同的缓存内容都会返回,直到我重建应用程序并重新启动它。程序员 friend 有什么想法吗?

最佳答案

我一直无法明确地弄清楚这一点,但解决方案的形式是从运行代码的目录中删除所有文件,然后重建整个解决方案。看起来解决方案可能放弃了一些与缓存相关的旧文件,但显然仍然可以影响应用程序。

关于c# - asp.net core 3 响应缓存未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62644687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com