0

我们正在使用 ImageResizer 模块,diskCache 插件和配置

<diskCache autoClean="true" hashModifiedDate="true" subfolders="256" cacheAccessTimeout="15000"/>
<cleanupStrategy startupDelay="00:05"
               minDelay="00:00:20"
               maxDelay="00:05"
               optimalWorkSegmentLength="00:00:04"
               avoidRemovalIfCreatedWithin="12:00"
               avoidRemovalIfUsedWithin="1.00:00"
               prohibitRemovalIfUsedWithin="00:05"
               prohibitRemovalIfCreatedWithin="00:10" 
       maximumItemsPerFolder="4096"/>

使用此清理配置,我们有 253 个子文件夹,每个子文件夹包含 8000-10000 个文件,3 个子文件夹包含 200 000-300 000 个文件(位于图像缓存中)。清理工作似乎部分起作用。这种行为的原因是什么?如何监控清理过程?

4

1 回答 1

2

听起来您有超过 300 万个活动文件;使用该数字,您需要将“子文件夹”设置更改为 16384。如果要限制缓存大小,请减小“maximumItemsPerFolder”值。

NTFS 在单个目录中有大量文件时会变得非常慢。这 3 个目录可能已经变得如此之大,以至于直接列出会导致超时或错误,并且无法自动清理它们。

请记住,删除缓存目录并更改子文件夹设置后,在重新填充缓存之前,您可能会遇到高 CPU 使用率。如果您有多个内核并且使用默认的 GDI+ 管道(WIC 和 FreeImage 不受影响),那么您可能还需要打开网络花园以匹配您的内核数量。

通常,限制缓存以在几分钟内写入并随后删除文件是一个坏主意(似乎是这种情况)。如果您没有足够的本地磁盘空间,最好使用其中一个内存缓存插件或 Varnish 之类的插件。

于 2014-08-04T21:23:30.473 回答