Мне нужно добиться в IIS следующее:
- проверить наличие измененных
.txt
файлов в dir
с URL http://server/dir/test.txt
без кеша - переписать URL-адрес на
empty.txt
если файл не существует
Моя конфигурация:
<rewrite>
<rules>
<rule name="test-txt" patternSyntax="Wildcard" stopProcessing="true">
<match url="*.txt" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Rewrite" url="empty.txt" />
</rule>
</rules>
</rewrite>
<caching>
<profiles>
<add extension=".txt" policy="DisableCache" kernelCachePolicy="DisableCache" />
</profiles>
</caching>
Если файл изменяется, я получаю код 200 и фактическое содержимое. Работает как положено.
Если файл не изменился - 304. Работает как положено.
Если файл удален, после первой проверки я получаю ошибку 404.0. Почему?
После второго запроса я получаю код 200 и содержание empty.txt
. Работает как положено.
Если я создаю файл в этот момент, он работает как положено. Но если делать запросы в короткие промежутки времени (каждые 3-4 секунды), больше не имеет значения, существует файл test.txt
или нет, я получаю код 304 или содержимое empty.txt
, если я его изменю. Но если я перестану запрашивать файл на несколько минут, он снова будет работать, как и ожидалось.
Похоже, в IIS есть какой-то кэш для проверки состояния файла * stati c. Как заставить его работать как положено только с файлами stati c? (и без получения ошибки 404, если возможно)