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)?
Antwort
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.
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. –
@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 –
- 1. Wie effizient ist WebMatrix?
- 2. Wie effizient ist PHP's substr?
- 3. Ist getElementById() effizient?
- 4. Multiprozess ist weniger effizient
- 5. Wie effizient ist das Kategoriebaum-DB-Design?
- 6. Wie effizient ist eine PHP-Bildressource?
- 7. Wie effizient ist in PHP definiert?
- 8. Wie effizient ist Spring AOP bei Speicherverbrauch
- 9. Chokidar nimmt keine Dateiänderungen im Docker Container auf
- 10. Wie sind Datenbanken effizient?
- 11. Ist mysql_num_rows effizient und/oder Standard-Praxis?
- 12. Node.js req.body ist leer
- 13. Ist Node.js Array.map() asynchron?
- 14. Ist node.js produktionsbereit?
- 15. Warum ist Node.js skalierbar?
- 16. Wie Node.js ist anders als Tomcat
- 17. Wie breit ist die node.js-Konsole?
- 18. Laravel Conditional Statement: Ist wann() effizient?
- 19. Python - Listenverständnis in diesem Fall ist effizient?
- 20. Ist die binäre Suche so effizient wie normalerweise?
- 21. Wie effizient ist Apache Tomcat für Long Polling?
- 22. Wie viel WCF ist effizient, um Echtzeitdaten zu erhalten?
- 23. Wie effizient ist Scalas Compiler bei der Wiederverwendung bekannter Funktionsergebnisse?
- 24. Wie effizient ist die Suche in der SQL-Datenbank?
- 25. Umgang mit Karten, equals() und hashCodes(). Wie effizient ist das?
- 26. Wie effizient ist MATLABs integrierte Parallelverarbeitung und Zuordnung zu Cores?
- 27. Wie effizient Variablen mit sas
- 28. Wie wird Modulo effizient eingesetzt?
- 29. Wie effizient mit MySQLDB SScursor?
- 30. golang: wie Union-Typen effizient
Können Sie sich nicht auf den integrierten Puffer-Cache Ihres Betriebssystems verlassen, um das Zwischenspeichern häufig aufgerufener Dateien zu verarbeiten? – robertklep
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
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