【发布时间】:2020-07-09 13:13:40
【问题描述】:
我需要在 IIS 中实现以下内容:
- 检查
dir中更改的.txt文件,带有 urlhttp://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 具有某种用于静态文件检查的缓存。如何仅使用静态文件使其按预期工作? (如果可能,不会出现错误 404)
【问题讨论】:
-
有什么消息吗?好像我有类似的问题。
标签: iis caching url-rewriting