Meteor如何处理来自多个用户的相同订阅?

时间:2014-03-23 13:51:12

标签: mongodb caching meteor

当Meteor由多个用户制作时,Meteor是否会多次从MongoDB读取同​​一订阅?为了说明,这是一个例子:

如果您有以下发布功能:

服务器:

Meteor.publish('articles',function(keyword){
   return Articles.find({keyword:keyword});
});

在客户端,您订阅如下:

客户:

Meteor.subscribe('articles', keyword);

当第一个用户订阅时(使用关键字:“meteor”),需要从MongoDB读取数据。然后,第二个用户使用相同的关键字订阅相同的发布功能。 Meteor是否再次访问MongoDB以获取第二个用户的相同数据,或者它是否缓存在某处并从缓存中提供?是否可以从缓存中提供服务并在检测到更改时让me​​teor更新缓存?

1 个答案:

答案 0 :(得分:2)

  

当Meteor由多个用户制作时,Meteor是否会多次从MongoDB读取相同的订阅?

不,它使用查询重复数据删除。如果多个客户端订阅相同的数据集,则只使用一个观察者,并且它们共享结果集的缓存。对于poll-and-diff观察者和oplog-tailing观察者来说都是如此。我建议观看所有this video大卫格拉瑟解释这些算法如何在高级别工作的地方。您的具体问题将在14分钟后解决。