2013-10-13 8 views
6

Ich habe eine Cache-Engine auf dem Server, die alle Dateien zwischenspeichert, auf die in einem Stammverzeichnis zugegriffen wird. Ich denke, Chokidar zu verwenden, um den gesamten Verzeichnisbaum (rekursiv) für Dateiänderungen zu beobachten und den Cache entsprechend zu aktualisieren. Aber ich bin besorgt darüber, was passieren würde, wenn ein Unterverzeichnis Hunderttausende von Dateien enthalten würde - Wie effizient wäre Chokidar?Wie effizient ist Chokidar (Node.js)?

+0

Können Sie sich nicht auf den integrierten Puffer-Cache Ihres Betriebssystems verlassen, um das Zwischenspeichern häufig aufgerufener Dateien zu verarbeiten? – robertklep

+0

Eigentlich entging dies meiner Meinung ... Trotzdem brauche ich immer noch einen Server-Cache, weil einige der Dateien vor der Auslieferung vorverarbeitet werden (zum Beispiel werden alle .js-Dateien automatisch minimiert) und dann werden sie alle geziped. Wenn ich mich auf den Puffer-Cache stütze, würde ich immer noch viel Zeit damit verbringen, Minification und Gipping zu machen, anstatt den gezippten Inhalt direkt aus dem Speicher zu liefern. – Jon

+0

Vielleicht könnte der Vorverarbeitungsschritt in Ihrer App das Ergebnis in irgendeiner Form von Cache speichern? 100K-Dateien zu sehen, wird wahrscheinlich nicht gut funktionieren. – robertklep

Antwort

9

Die Effizienz von Chokidar hängt davon ab, auf welchem ​​Betriebssystem es läuft.

Unter OS X wird ein Modul verwendet, das Zugriff auf die native API fsevents bietet, die äußerst effizient ist.

Auf anderen Systemen werden die APIs fs.watch oder fs.watchFile von node.js verwendet. Unter der Haube verwendet fs.watch verschiedene System-APIs, um über Änderungen informiert zu werden, die einigermaßen effizient sein können. fs.watchFile verwendet die Statistikabfrage, die für Verzeichnisse, die so groß sind, wie Sie es beschreiben, nicht geeignet wäre.

Mein Vorschlag ist, dass Sie die Chokidar-Option usePolling: false einstellen und versuchen Sie es, Ihre CPU-Last zu überwachen.

Update (Juli 2015): Chokidar wurde wesentlich verbessert, seit es ursprünglich geschrieben wurde, und die Abfrage ist nicht mehr der Standard auf irgendeiner Plattform.

+1

Wie läuft es im Oktober 2017? Wurde Chokidar unter Windows/Linux schneller? Gibt es Tests mit Chokidar-Leistung? Wie tief verschachtelte Verzeichnisse chokidar ist gut für? Ich plane, 10.000 Dateien damit zu sehen. Aber nicht sicher, ob es ein guter Weg ist. –

+3

@SystemsRebooter Ich verwende es, um 50k + Dateien unter Windows zu überwachen, und es funktioniert gut. Nach 100k verwendet es ziemlich viel Speicher und sieht keine Zusätze –