Наше веб-приложение использует 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?
Справка.Очень ценю ваше время.