我已将 ARR 配置为执行输出缓存的反向代理。缓存条目的 TTL 为 20 分钟,但似乎缓存文件永远保留在磁盘上。
TTL 在应用程序的 Web.config 文件中的重写规则下配置:
<rule name="Default ARR cache control" enabled="true">
<match url=".*" />
<serverVariables>
<!-- First arg of value is: 1 to be always active, 0 only if there are no cache headers set. -->
<set name="ARR_CACHE_CONTROL_OVERRIDE" value="0,max-age=1200" />
</serverVariables>
</rule>
在 HTTP 响应中,我也能正确看到这个 max-age,并且缓存确实过期了,我得到了新的结果。如果我打开缓存文件,它也会包含Cache-Control: public, max-age=1200
在其标头中。
但是缓存文件即使未使用也会保留下来。磁盘缓存的“缓存清理间隔”设置为 5 分钟,因此我推测文件最多只能保留 25 分钟,但也有几个月前的文件。
我遗漏了什么?如何让 ARR 删除过时的缓存文件?
这里它解释了如何使用 scavenge.exe 来清理次要的驱动器,但没有关于主驱动器的任何信息。或者,如果我不希望缓存驱动器慢慢填满,我应该手动运行此实用程序吗?
答案1
似乎我误解了这些配置应该如何工作以及“缓存清理间隔”如何与“磁盘使用率高阈值”一起工作。
那么也许每 5 分钟就会清除一次文件,但前提是达到“磁盘使用率高阈值”?似乎确实如此,正如在这篇博文:我刚刚将“磁盘使用率低阈值”配置为 4(百分比),将“磁盘使用率高阈值”配置为 5,是的,很多文件很快就被删除了。