Performance Meteor登录和注销速度较慢

Performance Meteor登录和注销速度较慢,performance,login,meteor,logout,subscription,Performance,Login,Meteor,Logout,Subscription,我的订阅为当前用户下载了大量数据。如果这些订阅按他们喜欢的顺序和时间加载,我就可以了。当用户已经登录时,订阅以非阻塞方式加载;也就是说,我可以检测到Meteor.user()存在,显示一个由传入数据逐步填充的模板。但当用户未登录并启动登录时,Meteor.user()仅在所有订阅完成加载后才会出现 所需的行为是在真正登录时立即获取Meteor.user(),而不是在所有数据都已存在时 我已经挖掘了来源并找到了以下评论: // This callback is called once the

我的订阅为当前用户下载了大量数据。如果这些订阅按他们喜欢的顺序和时间加载,我就可以了。当用户已经登录时,订阅以非阻塞方式加载;也就是说,我可以检测到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(函数(){
if(Meteor.user()){
Meteor.订阅(“费用订阅”);
}
});

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

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

Tracker.autorun(函数(){
if(Meteor.user()){
Meteor.订阅(“费用订阅”);
}
});

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

不,这解决了错误的问题。我需要在登录之后,在加载订阅之前立即获取Meteor.user()。但我不需要阻止订阅加载。是的,我怀疑你的订阅阻止了用户文档的发送。如果这两个文件可以严格按顺序加载,那么也许可以解决您的问题。但这只是一个猜测——从问题的措辞中很难找出确切的要求。例如,如果在登录之前激活所有订阅非常重要,那么这没有帮助。不,这解决了错误的问题。我需要在登录之后,在加载订阅之前立即获取Meteor.user()。但我不需要阻止订阅加载。是的,我怀疑你的订阅阻止了用户文档的发送。如果这两个文件可以严格按顺序加载,那么也许可以解决您的问题。但这只是一个猜测——从问题的措辞中很难找出确切的要求。例如,如果在登录之前激活所有订阅非常重要,那么这并没有帮助。