2016-03-24 25 views
3

假設您有template1和template2,它們都在.onCreated()和this.autorun()中使用this.subscribe('samePublication',sameArg)進行訂閱。訂閱相同發佈的多個模板的模板級訂閱是否爲每個模板運行一次或一次?

<template name="template3"> 
    {{>template1}} 
    {{>template2}} 
</template> 

將this.subscribe(「samePublication」,sameArg)爲每個模板運行一次,打我的服務器和數據庫兩次:

,當我們有這樣的事情會發生什麼?

我應該將this.subscribe()放在template3的.onCreated()裏面嗎?

我自己的理解是「不」和「不」,看了以後這樣的:http://docs.meteor.com/#/full/meteor_subscribe

希望有人更瞭解可以發表評論。 在此先感謝。

+0

好問題,我想知道會發生什麼。 – Juliomac

回答

1

根據我的經驗,訂閱會在每次路由到視圖並呈現模板時加載並擊中您的數據庫。

儘管一般的最佳實踐(可能是爲了提升模塊性)是使用模板級訂閱,但我發現如果一個路由被大量使用並經常改變並且涉及大量文檔,那麼它會提高性能在客戶端啓動時加載這些訂閱並在視圖之間共享。

您是否知道您可以通過訂閱傳遞一個參數並在出版物中使用參數來過濾結果?使用它通常會使性能發生重大變化,而不會退回到全局訂閱。

PS:我正在研究並行訂閱,直到加載「快速」着陸頁之後才啓動,以便當用戶切換到大量訂閱的頁面時,並行加載已經完成,但不會影響用戶的「第一印象」。