Кеширование статических файлов в IIS не отражает дату изменения файлов на диске - PullRequest
0 голосов
/ 10 мая 2018

Наше веб-приложение использует ASP.NET MVC 4, работающий в Windows Server 2008R2 Datacenter и IIS 7.5.

У нас есть собственный HttpModule для перезаписи URL.Некоторые из перезаписываемых URL-адресов служат для передачи статических файлов на диск, например, для входящего URL-адреса (пути поддельные, но вы его получаете): /media/virtual/mystatic.html переназначается в: / iis / virtual / directory / mystatic.html

Эти статические файлы также могут быть созданы приложением.Например, выполняется запрос, создается файл журнала, и URL-адрес журнала возвращается в ответе с 202 .Предполагается, что клиент сможет открыть файл журнала в браузере и обновить его, чтобы увидеть прогресс, достигнутый по мере выполнения запрошенной задачи, и обновления файла журнала на сервере.

Но мы видим, что файл журнала открывается на клиенте, и , хотя он обновляется на сервере , браузер продолжает показывать файл так, как он был создан, без каких-либообновления!

Мы боролись с этим уже несколько месяцев, и уже реализовали следующее, чтобы попытаться решить его :

  • В IIS,мы отредактировали заголовок элемента управления кэшем, отметили «Срок действия веб-содержимого» и выбрали «Немедленно».Заголовки запросов и ответов для этих запросов показывают Cache-Control: no-cache
  • В IIS мы обновили кэширование вывода и не отметили флажки «Включить кэш» и «Включить кэш ядра»
  • Мы полностью удалили заголовки ETag, используя HttpModule

Когда проблема возникает, мы отмечаем следующее :

  • RDPing всервер, если мы открываем файл в браузере на сервере, используя файл: // URL, будет отображаться обновленная версия.Открытие его в другой вкладке того же браузера на сервере с URL-адресом http: // покажет (неправильно кэшированную) НЕ обновленную версию!
  • При повторном использовании пула приложений «обновится» файл и отобразитсяобновленная версия для всех клиентов

Со всеми этими обновлениями / примечаниями, мне кажется довольно уверенным, что кэширование все еще происходит на уровне IIS.Что еще мы можем сделать здесь ???Когда мы пишем в файл, есть ли способ (в ASP.NET/C#) заставить IIS видеть обновления?Не хватает ли параметра кэширования IIS?

Справка.Очень ценю ваше время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...