我在服務器上有一個緩存引擎,它緩存在根目錄下訪問的所有文件。我正在考慮使用Chokidar來觀察整個目錄樹(遞歸)以進行文件更改並相應地更新緩存。但是我擔心如果子目錄包含數十萬個文件會發生什麼 - Chokidar的效率會如何?Chokidar(Node.js)的效率如何?
回答
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自從最初編寫以來已經大幅改進,並且輪詢不再是任何平臺上的默認選項。
2017年10月的情況如何?在Windows/Linux上,chokidar變得更快了嗎?是否有任何chokidar性能測試? chokidar的嵌套目錄有多深?我打算用它觀看10,000個文件。但不知道如果它的好辦法。 –
@SystemsRebooter我用它來監視窗口上的50k +文件,它工作正常。 100k後,它使用了相當多的內存,並沒有看到添加 –
- 1. Node.js提供無所作爲的效率?
- 2. orderByChild(firebase)的效率如何?
- 3. WebMatrix的效率如何?
- 4. 外鍵的效率如何?
- 5. encodeURIComponent的效率如何?
- 6. ActionMailer的效率如何?
- 7. 如何觸發Chokidar事件programmaticaly
- 8. 如何提高效率?
- 9. 如何提高UICollectionView效率?
- 10. 如何提高Fipy效率
- 11. 如何確定效率?
- 12. 這些效率如何?
- 13. 算法效率vs效率
- 14. Node.js高CPU使用率,如何調試?
- 15. Node.js的API率多速率限制
- 16. 標籤搜索的效率如何?
- 17. current_page的效率如何?幫手方法?
- 18. WPF數據綁定的效率如何?
- 19. 年(日期)功能的效率如何?
- 20. 我的mySQL查詢效率如何?
- 21. 。C#中的AddOrUpdate方法效率如何?
- 22. MongoDB預測的效率如何?
- 23. collection.sort()函數的效率如何?
- 24. 虛擬表連接的效率如何?
- 25. 如何評估Android中ContentProviders的效率?
- 26. 如何提高駱駝的效率?
- 27. 以下switch語句的效率如何?
- 28. 如何最大化FlowLayoutPanel的效率?
- 29. 如何提高C++ STL bitset的效率?
- 30. 如何提高我的代碼效率?
難道你不能依靠你的操作系統的內置緩衝區緩存來處理經常訪問的文件的緩存嗎? – robertklep
實際上,這讓我想起了......儘管如此,我仍然需要一個服務器緩存,因爲在提供服務之前,會對相當多的文件進行預處理(例如,所有的.js文件會自動縮小),然後它們都會被縮放。如果我依賴於緩衝區緩存,那麼我仍然會浪費大量的時間進行縮小和gzipping處理,而不是直接從內存中提供gzip內容。 – Jon
也許您的應用中的預處理步驟可能會將結果存儲在某種形式的緩存中?觀看100K文件可能不會很好。 – robertklep