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

Chokidar(Node.js)的效率如何?,node.js,npm,fs,Node.js,Npm,Fs,我在服务器上有一个缓存引擎,它缓存根目录下访问的所有文件。我正在考虑使用Chokidar(递归地)监视整个目录树中的文件更改,并相应地更新缓存。但我担心的是,如果一个子目录包含数十万个文件,会发生什么?Chokidar的效率有多高?Chokidar的效率取决于它运行在哪个操作系统上 在OSX上,它使用一个模块,提供对本机fseventsAPI的访问,这是非常高效的 在其他系统上,它使用node.js或API。在引擎盖下,fs.watch使用各种系统API来通知更改,这可能相当有效fs.watch

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

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

在OSX上,它使用一个模块,提供对本机
fsevents
API的访问,这是非常高效的

在其他系统上,它使用node.js或API。在引擎盖下,
fs.watch
使用各种系统API来通知更改,这可能相当有效
fs.watchFile
使用stat轮询,这显然不适合您描述的这么大的目录

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


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

你不能依靠操作系统内置的缓冲缓存来处理频繁访问的文件的缓存吗?实际上我没想到这一点。。。尽管如此,我仍然需要一个服务器缓存,因为很多文件在提供服务之前都经过了预处理(例如,所有的.js文件都会自动缩小),然后它们都被gzip处理。如果我依赖缓冲区缓存,那么我仍然会浪费大量的处理时间,每次都进行缩小和压缩,而不是直接从内存中提供压缩后的内容。也许应用程序中的预处理步骤可以将结果存储在某种形式的缓存中?观看10万份文件可能不会很好。2017年10月情况如何?chokidar在Windows/Linux上是否变得更快了?有关于chokidar性能的测试吗?chokidar的嵌套深度有多深?我打算用它看10000个文件。但不确定这是否是一个好方法。@SystemsRebooter我正在使用它监视windows上的50k+文件,它工作正常。100k之后,它会占用大量内存,并且看不到添加的内容