我想完成什么? 在客户端,我有各种显示进度条的div。每个进度条都显示不同的状态/级别。它们都是动态更新的。我需要他们继续动态更新而不会有任何性能问题。使用没有性能的流星在客户端同步多个进度条问题
你在说什么性能问题? 我的serverside正在运行一些逻辑,它能够检查客户端上运行的每个进度条的状态。目前我有一个setInterval设置为十分之一秒来继续更新进度条状态级别。首先,我通过将数据直接保存到一个mongo集合中,然后让客户端使用模板助手返回状态来更新模板。这很好,很有用(大部分)。然而,当我添加一个模态框(也是一个反应模态框),它将在已经运行的主体模板的ontop上随着动态进程打开,它会开始显着减慢。模式框还会显示用户点击的div的特定进度条。
长话短说,性能影响是戏剧性的,它会爬行。我想这是因为服务器需要执行mongo数据库来执行如此多的进度条更新。这太过分了。
我该如何解决这个问题? 我决定彻底绕过mongo数据库的持久性来存储每个进度条的状态/级别。这是通过实施包名来实现的rocketchat:streamer
该软件包提供了“通过DDP进行双向通信”。通过这样做,我能够将进度条级别存储到服务器上的本地缓存阵列,然后通过rocketchat进行存储:流转器将通过DDP直接将数据推送到客户端。这实际上导致了性能的提高。
好的,现在你的问题是什么,你为什么提交这个问题?
无论如何,在这两种策略中,我仍然在考虑性能问题,有时从登录到我的开发服务器的不同连接设备进行同步并没有得到确切的进度栏同步状态。我需要所有进度条始终为浏览器中的所有连接用户显示相同的确切状态。我需要能够在模板上显示例如9个不同的独特进度条,并且当用户点击其中一个独立的div时,可以在模板内显示另一个进度条。
伙计们,通过从服务器上执行的逻辑获取数据,Meteor在客户端实现同步多个不同进度条的最佳方式是什么?
我正在寻找一种简单易行的方法来实现这一点。我知道在这种用例中必须有一个简单的方法来同时使用Meteor和Meteor。
任何帮助将不胜感激。
谢谢大家在谁提供帮腔社会。
直到你有额外的进度条引进模式,你没有遇到问题的关键可能是一个重要的线索。你原来的做法(用进度更新mongo,让pub-sub做它的工作)听起来很稳固。是否有任何机会在不同的订阅中处理“额外”进度条?你有没有想出这是客户端还是服务器端问题?网络流量在客户端看起来如何(ws)?一旦你绘制模态,你的助手是否更新得超出预期? –
感谢您的回复。我意识到我在服务器端的Meteor.publish正在运行一个关于集合的查找,但是返回了所有文档,包括不再活动和需要的文档,我终于到达了解决方案。收集继续增长,并且由于数据不再活跃,大部分数据甚至不是必需的。我修改了发现做$ nin并且不包括发布到客户端的旧过期数据。主要表现增加。此处还发现了一篇很棒的文章:https://kadira.io/academy/meteor-performance-101/content/reducing-pubsub-data-usage – jremi