asp.net核心静态文件缓存不起作用

时间:2020-04-13 17:42:26

标签: google-chrome asp.net-core caching .net-core

我正在将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时,页面将正确显示。

test.html

更改html页面后,单击google chrome的地址栏,然后按Enter,向test.html文件发出另一个HTTP请求。我还没有重新加载页面。

test.html after change

您可以看到更改是由Google chrome反映的,并且我再次收到状态200,而不是304。响应标题中的缓存控制是public,max-age = 86400。为什么静态文件缓存不起作用?我希望得到的结果是,第二个HTTP请求后该更改不会反映出来,因此我可以确定静态文件缓存可以正常工作。

我正在使用:.NET Core SDK 3.1.201和Chrome 80.0.3987.163。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。您必须信任ASP.NET Core HTTPS开发证书。 Click here for details,然后运行该应用程序。导航到您的静态文件。在Chrome中打开一个新标签。按F12打开Chrome DevTools。在地址栏中输入URL,或从上一个标签复制并粘贴。有用!