【问题标题】:How many times does Iron Router call subscriptions?Iron Router 调用订阅多少次?
【发布时间】:2015-07-12 04:59:19
【问题描述】:

我有一个包含多个路由的多页应用程序。每条路由的订阅都是使用“waitOn”实现的,效果很好。

我注意到当我导航到不同的页面时,前一个路由的订阅被删除了。到目前为止,没有问题。

我在 Router.configure 级别上实现了“waitOn”调用,以便所有页面都可以使用特定的订阅。

我的问题是:每次我切换页面时,Iron Router 是否都会为该订阅重新调用?我担心这会浪费服务器资源。

谢谢。

【问题讨论】:

    标签: meteor iron-router


    【解决方案1】:

    是的,当您切换页面时,之前的订阅会被删除,稍后当您浏览回该页面时,Meteor 会重新订阅。

    大气中有一个缓存订阅的社区包:https://github.com/meteorhacks/subs-manager

    【讨论】:

    • 谢谢,我想这个包以后会对我有用。事实证明 Iron Router 每次切换页面时都会调用 Router.configure 级别的订阅。
    【解决方案2】:

    所以为了扩展这一点,我做了更多的测试,看起来即使 Iron Router 尝试在每次切换页面时运行相同的 Router.configure 订阅,服务器似乎只运行一次发布功能(我放置一个console.log里面的发布功能可以看到)。

    我认为这是由他们的文档解释的:

    如果您在反应式计算中调用 Meteor.subscribe,对于 使用 Tracker.autorun 的示例,订阅将自动 计算无效或停止时取消;它不是 有必要对从内部自动运行的订阅调用停止。 但是,如果您的 run 函数的下一次迭代订阅 相同的记录集(相同的名称和参数),Meteor 足够聪明 跳过浪费的退订/重新订阅。

    【讨论】:

    • 是的,我找不到它,但@akshat 在某处写了一篇很好的文章。虽然服务器只运行一次发布,但它必须再次通过网络将所有数据重新发送到客户端。
    猜你喜欢
    • 1970-01-01
    • 2014-12-29
    • 2013-11-03
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    • 2017-01-19
    • 2014-02-01
    • 2015-09-21
    相关资源
    最近更新 更多