前回、ページ遷移の高速化を行いましたが、実質、ページ遷移毎にsubscribeが更新されて、まだ不満がありました。イメージとして、最大のsubscribeが済んだら後はページ遷移でsubscribeの更新は起こらないようにしたい。
で、以下のような感じに修正しました。
Router.map -> @route 'home', path: '/' template: 'home' before: -> @subscribe('records', 'pickup').wait() #小さなデータ @route 'live-list', path: '/game-list' template: 'game-list' before: -> @subscribe 'records', 'pickup' # 比較的小さなデータ @route 'game-list', path: '/game-list' template: 'game-list' Meteor.startup -> Meteor.setTimeout (-> Meteor.subscribe 'records'), 0 # 全体データ
ポイントは、
- 全体データはRouterではなくstartupでsubscribeする。この時、Routerのsubscribeを優先して読み込むために、setTimeoutで実行をずらす。
- 各ページで必要なデータのsubscribeを行う。
Router外でsubscribeをしておくことにより、ページ遷移の際、既にデータが存在していればsubscibeの更新が起こらず、ページ遷移が早くなります。