2013-12-20 2 views
3

클라이언트의 데이터를 언제 구독 할 지에 대해 조언을 드리고 싶습니다. 모든 필요한 데이터를 선행 구독하는 것이 가장 쉽지만 첫 번째로드에서 성능이 크게 떨어질 수 있습니다. Iron-Router를 사용하면 라우팅 중에 구독을 할 수 있습니다. 그런 다음 필요에 따라 데이터가 채워지고 waitOn이 발생합니다.유성 데이터 구독 전략

큰 프로젝트에서 경로를 구독하는 것은 이미 가입 된 데이터에 대한 전체적인보기가 없으므로 반드시 관리해야 할 악몽이 될 것입니다. 이와 관련된 - 동일한 구독이 여러 페이지에서 여러 번 호출되는 경우 어떻게됩니까?

+0

아무 유성우 기부금도 충분히 똑똑하지 않습니다. http://docs.meteor.com/#meteor_subscribe – Denis

답변

2

모든 구독을 즉시 활성화하는 것이 좋지 않다고 가정하면 정확합니다. 구독을 활성화 할 때마다 서버와 클라이언트 모두에서 성능 저하가 발생합니다. 실적을 극대화하려면 목표는 다음과 같아야합니다.

  1. 가능한 한 오랫동안 구독을 만듭니다.
  2. 필요한 데이터 만 게시하십시오.

    Meteor.subscribe('news'); 
    
    Tracker.autorun(function() { 
        if (Meteor.user()) { 
        Meteor.subscribe('friends'); 
        Meteor.subscribe('room', Session.get('roomId')); 
        } 
    }); 
    
    • 뉴스 구독이 모든 클라이언트에 대해 활성화됩니다

는 다음의 예를 보라. 일반적으로 이것을 피하기를 원하지만, 모든 사람 (로그인 한 사람)이 뉴스를보아야한다는 요구 사항 일 수 있습니다. 이것은 목표 (2)를 기억할 수있는 좋은 기회입니다. 가장 최근의 뉴스 항목을 모두 대신 게시하는 것을 고려하십시오.

  • 다른 구독은 사용자가 로그인 할 때만 활성화됩니다 (리소스를 저장하고 구독을 지연시킵니다).
  • friends 구독은 라우터에서 설정할 수있는 roomId 세션 변수를 기반으로 변경됩니다.
  • 많은 경로가있는 복잡한 제작 앱이 있으며 개인적으로 단일 구독 파일을 유지 관리하기가 쉽습니다. 즉, 나는 이것이 맛의 문제라고 생각합니다. 그래서 당신은 두 가지 방법을 시도하고 당신이 가장 편한 것을 볼 필요가 있습니다.

    마지막 질문에 대한 답변은 게시 된 문서가 병합된다는 것입니다. 동일한 콜렉션에 대해 두 개의 서브 스크립 션을 활성화하고 각각이 동일한 N 개의 문서를 게시 한 경우, 클라이언트에 N 개의 문서가 있습니다. P1이 N 개의 문서를 게시하고 P2가 M 개의 문서를 게시하면 클라이언트에 M 개의 N 개의 문서가 생성됩니다. 이에 대해서는 meteor book에서 자세히 설명합니다.