Chokidar(Node.js)的效率如何?

我在服务器上有一个caching引擎,它caching在根目录下访问的所有文件。 我正在考虑使用Chokidar来观察整个目录树(recursion)的文件更改,并相应地更新caching。 但是我担心如果一个子目录包含数十万个文件会发生什么 – Chokidar会有多高效?

Chokidar的效率取决于在哪个操作系统上运行。

在OS X上,它使用一个模块来提供对本地fsevents API的访问,这非常有效。

在其他系统上,它使用node.js的fs.watchfs.watchFile API。 在引擎盖下, fs.watch使用各种系统API来通知变化,这可能是合理有效的。 fs.watchFile使用stat轮询,这对你所描述的目录来说绝对是不合适的。

我的build议是,你设置chokidar选项usePolling: false并试一试,监视你的CPU负载。

更新(2015年7月):Chokidar已经大幅改善,因为这是最初编写的,投票不再是任何平台上的默认选项。