meteor 如何处理大量对较大文档的订阅?

How does meteor perform with many subscriptions over larger documents?

我目前正在为一个相当大的 meteor 应用程序设计一个数据库,我们正在讨论 Meteor 是否会使用更多的订阅来更好地执行 collections 小文档,或者更少的订阅 collections 较大的文件。

其中一些文档最终可能会变得非常大,例如用户收藏夹或偏好的列表,这些文档只能在特定视图中对单个用户可见。

就数量而言,我们谈论的是 10 个订阅,其中至少有四个不会持续订阅,在特定视图中仅返回一个较大的文档。

与 4 个订阅 collections 的可能非常大的文档相比,(我意识到如果数据已经在客户端上,这些单独的视图可能会呈现得更快)。

任何见解或经验数据都将非常有用。

谢谢。

这可能不是一个完整的答案。我目前正在自己​​解决这个问题。

我对更大的数据集有一些经验。我订阅了一个collection没有任何限制:

Meteor.publish('collectionName', function () {
    return collectionName.find();
});

我的 collection 包含 400 个文档,总大小约为 600KB(转储 collection使用 mongodump)。系统中有大约 100 个用户(每天来自不同大陆的用户),我们确实遇到了一些性能问题:

  • 当我加载显示 400 个项目的页面时,您可以看到正在填充的列表。
  • 您对 400 份文件的处理方式也很重要。我的每个条目都是一个相当复杂的 DOM 节点,每个条目都执行了多个助手。

生成 DOM 需要一些时间并导致客户端 CPU 达到峰值。还有很多数据被传输到客户端。

解决问题的几点思路:

  • 使用分页(例如包 alethes:pages防止大量客户端计算
  • 对列表视图使用单独的 publication/subscription,仅包括显示列表项所需的字段,以减少每个文档的大小
  • 仅publish/subscribe当前用户可见的文档(例如检查登录状态、访问权限等)以减少文档数量
  • 缓存订阅:https://github.com/meteorhacks/subs-manager(还没试过)