应用程序请求路由不清理缓存文件

应用程序请求路由不清理缓存文件

我已将 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,是的,很多文件很快就被删除了。

相关内容