当多个用户进行同一订阅时,Meteor 是否会多次从 MongoDB 读取该订阅?为了说明这一点,这里有一个例子:
如果您有以下发布功能:
服务器:
Meteor.publish('articles',function(keyword){
return Articles.find({keyword:keyword});
});
并在客户端上按如下方式订阅:
客户端:
Meteor.subscribe('articles', keyword);
当第一个用户订阅时(使用关键字:“meteor”),需要从 MongoDB 读取数据。然后,第二个用户使用相同的关键字订阅相同的发布功能。 Meteor 是否会再次访问 MongoDB 为第二个用户获取相同的数据,还是将其缓存在某处并从缓存中提供服务?是否可以从缓存中提供服务,并在检测到更改时让 Meteor 更新缓存?
最佳答案
Does Meteor read from MongoDB multiple times for the same subscription when it's made by multiple users?
不,它使用查询重复数据删除。如果多个客户端订阅同一数据集,则仅使用一个观察者,并且它们共享结果集的缓存。对于 poll-and-diff 观察者和 oplog-tailing 观察者来说都是如此。我建议观看全部this video David Glasser 在其中解释了这些算法如何在高层次上工作。您的具体问题将在大约 14 分钟内得到解决。
关于mongodb - Meteor 如何处理多个用户的同一订阅?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22591769/