【问题标题】:Watching file change in node.js - Performance Issues在 node.js 中观察文件更改 - 性能问题
【发布时间】:2015-10-31 10:06:42
【问题描述】:

我目前正在尝试使用 Chokidar 和 socket.io 在 node.js 中创建一个实时日志监控工具。但是,我不太清楚如何在文件更改时有效地重新加载内容。 Chokidar 监视文件更改并触发一个事件,在该事件中,我必须获取更改的内容的唯一选择是再次读取整个文件并再次使用该内容填充视图。这确实会减慢整个过程并增加 CPU 利用率。

var watcher = chokidar.watch('file, dir, or glob', {
  ignored: /[\/\\]\./, persistent: true
});

watcher.on('change', function(path, stats) {
  if (stats) console.log('File', path, 'changed size to', stats.size);
});

在我的情况下,日志太大了,并且有大量更新。我应该如何解决这个问题?有什么方法可以只获取更改的内容,而不是重新加载整个文件来获取更改的内容?

【问题讨论】:

    标签: javascript node.js file logging


    【解决方案1】:

    似乎 chokidar 没有提供任何功能来告诉您文件中的更改(它为您提供文件名和文件统计信息)。

    因此,如果您想知道发生了什么变化,那么您有责任维护该文件的某种以前的影子副本,以便您可以分析新文件与以前的副本,看看发生了什么变化.如果您为整个文件系统执行此操作(需要双倍存储),这显然是一项存储密集型任务,但如果您只是为一小部分文件执行此操作,则肯定是可以管理的。

    【讨论】:

    • 有没有办法做到这一点?观看一个只会发出已更改或修改的数据的文件..不想在这里读取整个文件..
    • @Sathish - 我不知道有任何操作系统服务可以提供您所要求的内容。它需要记录对文件的所有写入,以便以后可以使用它们来确定更改。
    猜你喜欢
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 2020-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多