3
我想就如何訂閱客戶端數據提供建議。提前預訂所有需要的數據是最簡單的,但我會想到在第一次加載時性能可能會很高。 使用Iron-Router,訂閱可以在路由期間完成,然後根據需要填充數據,並且您有waitOn,這很酷。流星數據訂閱策略
雖然(特別是在大型項目中)訂閱路線肯定會成爲管理的噩夢,因爲沒有對已訂閱數據的全局視圖。與此相關 - 如果從不同的頁面多次調用相同的訂閱,會發生什麼?
我想就如何訂閱客戶端數據提供建議。提前預訂所有需要的數據是最簡單的,但我會想到在第一次加載時性能可能會很高。 使用Iron-Router,訂閱可以在路由期間完成,然後根據需要填充數據,並且您有waitOn,這很酷。流星數據訂閱策略
雖然(特別是在大型項目中)訂閱路線肯定會成爲管理的噩夢,因爲沒有對已訂閱數據的全局視圖。與此相關 - 如果從不同的頁面多次調用相同的訂閱,會發生什麼?
假設立即激活所有訂閱並不是一個好主意,這是正確的。每次激活訂閱時,您都會在服務器和客戶端上支付性能損失。如果你想要最大化性能,你的目標應該是:
看一看下面的例子:
Meteor.subscribe('news');
Tracker.autorun(function() {
if (Meteor.user()) {
Meteor.subscribe('friends');
Meteor.subscribe('room', Session.get('roomId'));
}
});
friends
訂閱根據路由器可能設置的會話變量roomId
進行更改。我有一個複雜的生產應用程序有很多的路線,我個人發現有一個單一的訂閱文件更容易維護。這就是說,我認爲這是一個品味的問題,所以你需要嘗試兩種方式,看看你最舒服的。
最後一個問題的答案是已發佈的文檔被合併。如果您爲同一個集合激活了兩個訂閱,並且每個訂閱都發布了相同的N個文檔,那麼客戶端上應該有N個文檔。如果P1發佈了N個文檔,並且P2發佈了M個文檔,則您將在客戶端上擁有M個聯盟N個文檔。這在meteor book中有更詳細的討論。
沒有任何流星訂閱足夠聰明。 http://docs.meteor.com/#meteor_subscribe – Denis