Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 使用Meteor在客户端同步多个进度条而无性能问题_Mongodb_Meteor_Ddp - Fatal编程技术网

Mongodb 使用Meteor在客户端同步多个进度条而无性能问题

Mongodb 使用Meteor在客户端同步多个进度条而无性能问题,mongodb,meteor,ddp,Mongodb,Meteor,Ddp,我想要完成什么? 在客户端,我有许多显示进度条的div。每个进度条都显示不同的状态/级别。它们都在动态更新。我需要它们在没有任何性能问题的情况下继续动态更新 您在谈论哪些性能问题? 我的服务器端正在运行一些逻辑,能够检查客户端上运行的每个进度条的状态。目前,我有一个setInterval设置为十分之一秒,以继续更新进度条状态级别。首先,我将数据直接持久化到mongo集合,然后让客户端通过模板助手返回状态来更新模板。这很好,而且(在大多数情况下)有效。然而,当我添加一个模态框(也是一个反应模态框)

我想要完成什么? 在客户端,我有许多显示进度条的div。每个进度条都显示不同的状态/级别。它们都在动态更新。我需要它们在没有任何性能问题的情况下继续动态更新

您在谈论哪些性能问题? 我的服务器端正在运行一些逻辑,能够检查客户端上运行的每个进度条的状态。目前,我有一个setInterval设置为十分之一秒,以继续更新进度条状态级别。首先,我将数据直接持久化到mongo集合,然后让客户端通过模板助手返回状态来更新模板。这很好,而且(在大多数情况下)有效。然而,当我添加一个模态框(也是一个反应模态框)来打开已经在运行的主体模板的顶部时,它将开始显著地减慢。模式框还将显示用户单击的div的特定进度条

长话短说,表演的影响是巨大的,它会爬行。我认为这是因为服务器需要通过持久化到mongo数据库来执行如此多的进度条更新。太过分了

我是如何解决这个问题的? 我决定尝试完全绕过mongo数据库的持久性来存储每个ProgressBar的状态/级别。这是通过实现包名
rocketchat:streamer

该软件包提供“DDP上的双向通信”。通过这样做,我能够将进度条级别存储到服务器上的本地缓存阵列,然后通过rocketchat:streamer将数据通过DDP直接推送到客户端。这实际上提高了性能

好的,那么您现在的问题是什么?为什么提交此问题?

不管怎样,无论采用哪种策略,我仍然会遇到性能问题,有时从登录到我的开发服务器的不同连接设备进行同步时,无法获得准确的进度条同步状态。我需要所有进度条始终为浏览器中所有连接的用户显示相同的确切状态。例如,我需要能够在模板上显示9个不同的唯一进度条,并且当用户单击包含进度条的唯一div之一时,也需要能够在模式中显示另一个单独的进度条

伙计们,使用Meteor通过从服务器上执行的逻辑中获取数据来实现客户端多个不同进度条的同步,最好的方法是什么

我正在寻找一种简单易行的方法来实现这一点。我知道,对于这种类型的用例,必须有一种简单的方法来实现性能和与Meteor的同步

任何帮助都将不胜感激


感谢社区中所有愿意插话的人。

这一问题通过不包括通过流星保存的所有旧过期数据而得到解决。发布

故事的寓意是,确保你没有向你的客户发布你不需要的额外数据。通过过滤结果,例如使用$nin的查找,而不包括特定类型的数据,您将在Meteor应用程序中看到显著的性能提升。这也可以通过以下其他示例进行更深入的审查:


在引入带有附加进度条的模式之前,您没有遇到问题,这可能是一条重要线索。您最初的方法(用progress更新mongo,让pub-sub完成它的工作)听起来很可靠。“额外”进度条是否有可能在其他订阅中处理?您已经知道这是客户端问题还是服务器端问题了吗?客户端上的网络流量(ws)是什么样子的?您的助手是否在绘制模型后更新的内容超出了您的预期?谢谢您的回复。当我意识到服务器端的Meteor.publish正在运行一个find on collection,但返回了所有文档,包括不再活动和需要的文档后,我终于找到了解决方案。收集的数据继续增长,而且由于不再活跃,因此大部分数据甚至不需要。我修改了find以执行$nin,并且不包括发布到客户端的旧过期数据。主要业绩增长。这里还有一篇很棒的文章: