Chokidar(Node.js)效率如何?

Jon*_*Jon 9 fs node.js npm

我在服务器上有一个缓存引擎,它缓存在根目录下访问的所有文件.我正在考虑使用Chokidar来查看整个目录树(递归)以进行文件更改并相应地更新缓存.但我担心如果子目录包含数十万个文件会发生什么 - Chokidar的效率如何?

es1*_*128 11

Chokidar的效率取决于它运行的操作系统.

在OS X上,它使用一个模块来提供对本机fseventsAPI的访问,这非常有效.

在其他系统上,它使用node.js fs.watchfs.watchFileAPI.在幕后,fs.watch使用各种系统API来通知变化,这可能是合理有效的.fs.watchFile使用stat轮询,这对于你描述的目录来说肯定是不合适的.

我的建议是你设置chokidar选项usePolling: false并尝试一下,监控你的cpu负载.

更新(2015年7月):Chokidar自最初编写以来已经有了很大的改进,并且轮询不再是任何平台上的默认设置.

  • @SystemsRebooter我用它监视Windows上的50k +文件,它运行正常.在100k之后,它使用了相当多的内存并且无法看到添加内容 (3认同)