Я исправил эту проблему, добавив к моим файлам фрагментов contenthash.
path: path.resolve(bundleOutputDir),
publicPath: "dist/",
filename: "[name].js",
chunkFilename: "[name].[contenthash].js",
},
Наша сборка веб-пакетов выводит пару файлов. Большинство из них требуются при запуске и включены в index.cshtml домашнего контроллера нашего приложения MVC.
например. <script type="text/javascript" src="~/dist/app.js" asp-append-version="true"></script>
asp-append-version="true"
добавляет версию к этим файлам, чтобы браузер знал, должен ли он загружать их из кэша или нет.
Проблема в том, что другие файлы чанков, которые выводятся из веб-пакета, не имеют такой ссылки. На них ссылаются файлы, на которые ссылается index.cshtml.
Это то, что, как я считаю, происходило.
- Веб-приложение будет открыто в браузере.
- Мы выпустим новый код на сервер.
- Браузер бездействует.
- Пользователь возвращается в браузер.
- Браузер выходит из режима ожидания и снова запрашивает файлы.
- Обновляются те, которые имеют
asp-append-version="true"
, а те, которые имеют статическое имя, выбираются из кэша.
- Любое незначительное изменение в этом кэшированном файле приведет к удалению приложения из-за способа, которым веб-пакет объединяет файлы.