流星登录和注销很慢



我的订阅为当前用户下载了大量数据。如果这些订阅以他们喜欢的任何顺序和时间加载,我没关系。当用户已登录时,订阅将无阻塞加载;也就是说,我可以检测到 Meteor.user() 存在,显示一个由传入数据逐渐填充的模板。但是,当用户未登录并启动登录时,Meteor.user() 仅在所有订阅完成加载后才会出现。

期望的行为是在登录真正发生时立即获取 Meteor.user(),而不是在所有数据都已经存在时。

我已经挖掘了来源并找到了这些评论:

  // This callback is called once the local cache of the current-user
  // subscription (and all subscriptions, in fact) are guaranteed to be up to
  // date.
  var loggedInAndDataReadyCallback = function (error, result) {

这是否意味着等待所有订阅加载是硬编码的?有什么解决方法吗?

尝试延迟订阅,直到实际需要订阅。例如:

Tracker.autorun(function() {
  if (Meteor.user()) {
    Meteor.subscribe('expensiveSubscription');
  }
});

在用户登录之前,这不会激活expensiveSubscription。你可能无法对所有订阅执行此操作,但总的来说,这是一种很好的性能技术,可以解决你的问题。

最新更新