2014-01-14 4 views
2

내 구독 정보가 현재 사용자의 많은 데이터를 다운로드합니다. 이 구독 정보가 순서와 시간에 관계없이로드 된 것이면 괜찮습니다. 사용자가 이미 로그인 한 상태에서 구독은 비공개 적으로로드됩니다. 즉, 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) { 

그 모든 구독 기다리는 하드 코드로드 할 수 있다는 뜻 :

나는 이러한 의견을 소스를 팠 발견했습니다? 해결 방법이 있습니까?

답변

3

구독이 실제로 필요할 때까지 지연하십시오. 예를 들면 다음과 같습니다. 사용자가 이미 로그인 할 때까지

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

이것은 당신은 당신의 모든 구독이 작업을 수행 할 수 없습니다 수 expensiveSubscription 활성화되지 않습니다, 그러나 일반적으로 이것은 좋은 성능 기술입니다 월 당신의 문제를 해결하십시오.

+1

아니요, 이것은 잘못된 문제를 해결합니다. Meteor.user()는 로그인이 발생하고 구독이로드되기 직전에 얻어야합니다. 하지만 구독로드를 차단할 필요는 없습니다. 이들은 정말로 다른 것들입니다. –

+1

예, 내 구독으로 인해 사용자 문서가 전송되지 않는 것으로 의심되었습니다. 두 사람이 엄격하게 순차적으로 적재 될 수 있다면 아마도 당신의 문제를 해결할 수있을 것입니다. 그러나 이것은 단지 추측이었습니다. 질문이 표현 된 방식에서 정확한 요구 사항을 파악하는 것은 약간 어려웠습니다. 예를 들어, 로그인하기 전에 모든 구독을 활성화해야하는 경우에는 도움이되지 않습니다. –