【发布时间】:2023-11-06 00:29:01
【问题描述】:
我正在尝试启用静态文件缓存,但似乎没有效果,至少在浏览器中我找不到名称为 cache-control 的响应标头
这是我的代码
app.UseSpaStaticFiles(new StaticFileOptions
{
RequestPath = _settings.SpaRoute,
});
app.UseStaticFiles(new StaticFileOptions
{
OnPrepareResponse = ctx =>
{
// Cache static files for 30 days
ctx.Context.Response.Headers.Append("Cache-Control", "public,max-age=2592000");
ctx.Context.Response.Headers.Append("Expires", DateTime.UtcNow.AddDays(30).ToString("R", CultureInfo.InvariantCulture));
}
});
在本地环境中构建并运行我的应用程序后,我得到了以下响应标头
你可以看到这里没有缓存控制头,我做错了什么?
【问题讨论】:
-
在此处显示的内容之前是否还有另一个
app.UseStaticFiles? -
另外,
Cache-Control本身就足够了,不需要Expires:developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control,或者它不必要的日期算法。 -
还有另外一个app.UseSpaStaticFiles();之前的中间件
-
更新后的代码部分
-
它在您的代码有机会之前将请求短路并发送响应。将
OnPrepareResponse放在您传递给UseSpaStaticFiles的选项中。
标签: c# asp.net-core caching static-files