我已将 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 来清理辅助驱动器上的缓存文件,但与主驱动器无关。或者如果我没有一个缓存驱动器慢慢填满,我应该手动运行这个实用程序吗?
似乎我误解了这些配置应该如何工作,并且“缓存清理间隔”与“磁盘使用率高阈值”一起使用。
因此,也许文件每 5 分钟清除一次,但前提是达到“磁盘使用率高阈值”?似乎确实是这种情况,正如这篇博文中所阐述的那样:我刚刚将“磁盘使用率低阈值”配置为 4(百分比),“磁盘使用率高阈值”配置为 5,是的,很多文件很快就被删除了.