asp. net core stati c кеширование файлов не работает - PullRequest
0 голосов
/ 13 апреля 2020

Я использую шаблон проекта Angular с ASP. NET Core. Ссылка

Кэширование должно быть включено по умолчанию, чтобы быть уверенным, что я добавил объект 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;
         }
 });
 ...
}

Затем я создал тест. html в папке wwwroot.

<!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>

При I dotnet run и переходе к https://localhost: 5001 / test. html страница отображается корректно.

test. html

После изменения страницы html я нажимаю в адресной строке google chrome и нажимаю enter, чтобы выдать другую HTTP-запрос к тестовому файлу. html. Я не перезагружаю страницу.

тест. html после изменения

Вы видите, что изменение отражено в Google chrome, и я получил статус Снова 200 вместо 304. Контроль кэширования в заголовке ответа: publi c, max-age = 86400. Почему кеширование файла stati c не работает? Мой желаемый результат заключается в том, что изменение не отражается после второго HTTP-запроса, поэтому я могу быть уверен, что кэширование файла stati c работает правильно.

Я использую:. NET Core SDK 3.1. 201 и Chrome 80.0.3987.163.

1 Ответ

0 голосов
/ 14 апреля 2020

Я нашел решение. Вы должны доверять сертификату ASP. NET Core HTTPS. Нажмите здесь для подробностей и запустите приложение. Перейдите к вашему стати c файлу. Откройте новую вкладку в Chrome. Откройте Chrome DevTools, нажав F12. Введите URL-адрес в адресную строку или скопируйте и вставьте его с предыдущей вкладки. Оно работает!

...