У меня есть приложение angular 6 с маршрутизацией, созданное с помощью angular cli и обслуживаемое на IIS, конфигурация довольно проста, настройка url-rewrite настроена так, что обновление страницы работает и т. Д.
Проблема, с которой я сталкиваюсь, заключается в том, что иногда, когда приложение обновляется, браузеры получают ответ 304 для index.html (даже если он изменился) и загружают старый index.html из памяти / дискового кэша, и затем попытайтесь загрузить пакеты, которые больше не существуют, ответ для этих пакетов равен 200 и содержит новый index.html, который браузер пытается запустить как JS и выдает ошибку.
Отключение кэширования в web.config для устранения неполадок не имеет никакого эффекта, поскольку 304, кажется, имеет приоритет.
Странно то, что при обновлении сайта посещение host.com может вернуть новый index.html, и все в порядке, а посещение host.com/login может вернуть 304 и вызвать проблему. Это зависит от браузера, некоторые делают то же самое, но наоборот.
Запросы проходят через cloudflare, контроль над конфигурацией которого у меня нет (кто-то другой управляет этим для клиента). Может ли проблема с облачным сигналом или это более вероятно в моей конфигурации IIS?
Вот web.config в данный момент:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="api rule" stopProcessing="true">
<match url="api/(.*)" />
<action type="Rewrite" url="http://localhost:8080/{R:0}" />
</rule>
<rule name="Angular Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{QUERY_STRING}" pattern="/api/(.*)" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
<staticContent>
<clientCache cacheControlMode="DisableCache" />
</staticContent>
</system.webServer>
</configuration>