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