我正在将Angular项目模板与ASP.NET Core一起使用。 Reference
默认情况下,应启用缓存,以确保我已将StaticFileOptions对象添加到StaticfileMiddleware:
public class Startup
{
...
app.UseStaticFiles(new StaticFileOptions
{
OnPrepareResponse = ctx =>
{
const int durationInSeconds = 60 * 60 * 24;
ctx.Context.Response.Headers[HeaderNames.CacheControl] =
"public,max-age=" + durationInSeconds;
}
});
...
}
然后我在wwwroot文件夹中创建了一个test.html。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset=utf-8>
<title>Test static files</title>
</head>
<body>
This is a test for static files!
</body>
</html>
当我dotnet run
并导航到https://localhost:5001/test.html时,页面将正确显示。
更改html页面后,单击google chrome的地址栏,然后按Enter,向test.html文件发出另一个HTTP请求。我还没有重新加载页面。
您可以看到更改是由Google chrome反映的,并且我再次收到状态200,而不是304。响应标题中的缓存控制是public,max-age = 86400。为什么静态文件缓存不起作用?我希望得到的结果是,第二个HTTP请求后该更改不会反映出来,因此我可以确定静态文件缓存可以正常工作。
我正在使用:.NET Core SDK 3.1.201和Chrome 80.0.3987.163。
答案 0 :(得分:0)
我找到了解决方案。您必须信任ASP.NET Core HTTPS开发证书。 Click here for details,然后运行该应用程序。导航到您的静态文件。在Chrome中打开一个新标签。按F12打开Chrome DevTools。在地址栏中输入URL,或从上一个标签复制并粘贴。有用!