2013-10-13 18 views
6

私はサーバにキャッシュエンジンを持っていて、ルートディレクトリの下にあるすべてのファイルをキャッシュしています。私はChokidarを使ってディレクトリツリー全体を(再帰的に)ファイルの変更を見て、それに応じてキャッシュを更新することを考えています。しかし、私は、サブディレクトリに数十万のファイルが含まれているとどうなるかについて心配しています.Chokidarはどのくらい効率的でしょうか?Chokidar(Node.js)の効率はどれくらいですか?

+0

頻繁にアクセスされるファイルのキャッシュを処理するために、OSの組み込みバッファキャッシュに頼ることはできませんか? – robertklep

+0

実際には、これは私の心を逃げました...しかし、私はまだサーバーキャッシュが必要ですが、かなりのファイルの一部が前処理されています(たとえば、すべての.jsファイルが自動的に圧縮されてしまいます)ので、すべてgzipされます。私がバッファキャッシュに頼っているのであれば、メモリから直接gzippedのコンテンツを提供するのではなく、毎回minificationとgzippingを行う処理を無駄にするでしょう。 – Jon

+0

おそらく、アプリの前処理ステップで結果がキャッシュに保存される可能性がありますか?おそらく、100Kファイルを見てもうまくいくわけではありません。 – robertklep

答えて

9

Chokidarの効率は、実行しているオペレーティングシステムによって異なります。

OS Xでは、これはネイティブのfsevents APIへのアクセスを提供するモジュールを使用します。これは非常に効率的です。

他のシステムでは、node.jsのfs.watchまたはfs.watchFile APIを使用します。このフードの下では、fs.watchはさまざまなシステムAPIを使用して変更を通知されますが、これは合理的に効率的です。 fs.watchFileは統計ポーリングを使用していますが、これはあなたが記述しているような大きさのディレクトリには不適切です。

私はchokidarオプションusePolling: falseを設定して、CPU負荷を監視してみることをお勧めします。

更新(2015年7月):Chokidarは本来書かれて以来、大幅に改善されており、ポーリングはどのプラットフォームでもデフォルトではなくなりました。

+1

2017年10月の出来事は? Windows/Linuxでchokidarが高速化しましたか?チョキダールのパフォーマンスに関するテストはありますか?どのように深く入れ子ディレクトリchokidarは良いですか?私はそれで1万のファイルを見るつもりです。しかし、その良い方法があるかどうかは分かりません。 –

+3

@SystemsRebooter私はそれをWindows上の50k +ファイルを監視するために使用しています。 100k後はかなりのメモリが使用され、追加が見られません –

関連する問題