15

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

4

1 回答 1

17

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

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

在其他系统上,它使用 node.jsfs.watchfs.watchFileAPI。在后台,fs.watch使用各种系统 API 来通知更改,这可能是相当有效的。fs.watchFile使用统计轮询,这绝对不适合您描述的目录。

我的建议是您设置 chokidar 选项usePolling: false并试一试,监控您的 CPU 负载。

更新(2015 年 7 月):自最初编写以来,Chokidar 已得到显着改进,并且轮询不再是任何平台上的默认设置。

于 2014-10-30T13:48:28.553 回答