我们正在使用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个文件(在图像缓存中)。清理似乎部分工作。这种行为可能是什么原因?如何监控清理过程?
答案 0 :(得分:2)
听起来你有超过300万个活动文件;使用该数字,您需要将“子文件夹”设置更改为16384.如果要约束缓存大小,请减少“maximumItemsPerFolder”值。
NTFS在单个目录中的大量文件变得非常慢。这3个目录可能已经变得如此之大,直接列表会导致超时或错误,并且无法自动清除它们。
请记住,删除缓存目录并更改子文件夹设置后,您可能会遇到高CPU使用率,直到重新填充缓存。如果您有多个核心且使用默认的GDI +管道(WIC和FreeImage不受影响),那么您可能还需要打开Web园以匹配您的核心数。
一般来说,限制缓存是一个坏主意,以便在几分钟内编写文件并随后删除(这似乎就是这种情况)。如果您没有足够的本地磁盘空间,最好使用其中一个内存缓存插件或类似Varnish。