我在服务器上有一个缓存引擎,用于缓存在根目录下访问的所有文件。我正在考虑使用Chokidar来查看整个目录树(递归)以进行文件更改并相应地更新缓存。但我担心如果一个子目录包含数十万个文件会发生什么 - Chokidar会有多高效?
答案 0 :(得分:10)
Chokidar的效率取决于它运行的操作系统。
在OS X上,它使用一个模块来提供对本机fsevents
API的访问,这非常有效。
在其他系统上,它使用node.js的fs.watch
或fs.watchFile
API。在幕后,fs.watch
使用各种系统API来通知变更,这可能是合理有效的。 fs.watchFile
使用统计轮询,这对于您描述的目录来说肯定是不合适的。
我的建议是你设置chokidar选项usePolling: false
并尝试一下,监控你的cpu负载。
更新(2015年7月):Chokidar自最初编写以来已经有了很大改进,并且轮询不再是任何平台上的默认设置。